Web based solution for team with no Server or database - database

My team which is a part of a university needs me to develop a web based application for them which can be accessed by any team member. However the university doesn't provide us with a database.
We do have a portion in their server but that's for our public website. Even if I put the application on that server, I need to have a database. I can't use an excel sheet for storing all the data cause it will be huge. I am looking for an optimal solution.

Never fear there are a number of non RDBMS (Oracle, MySQL, MS SQL Server, etc.) solutions around.
You can try many of the document databases under No-SQL banner, with some popular options being:
RavenDB if you are developing your web application in the Microsoft stack.
MongoDB is a great well supported open source document database.
BaseX or Sedna are useful XML databases.
Alternately you can look to Cloud (some offer free services, others are commercial and will need to pay for) databases such as:
Amazon RDS
Elasticsearch
Windows Azure

Choose:
http://www.sqlite.org/
http://www.db4o.com/
Both will give you a database ability with no prior machine configuration or setup package.

For a small team group, specially with no more than 3 developers, I would recommend you to look at CloudBees. They offer a free tier where you can have on the same platform a repository, a Continuous Integration tool, so you can build and test your app every time you do a commit, and a runtime environment where you can deploy a Java, a Play or a PHP application. You can also create free databases.
In the case you wanted to have a visual git repository, you can use GitHub and link your source code with your Jenkins job.
In this way, you don't need multiple tools for your development environment.

Related

NoSQL Offline/Standalone - Query GraphDB File directly without exe application?

Every relationship database can be used without the need for installation of any software or tools, as most of the query read/write is all done to read a file that stores data in a specific format.
Can the same thing be done with a graph database (doesnt have to be neo4j, i wouldnt mind an alternative) without installing software, or having terminal endpoint running for access to database?
Example:
MySql is a db file you can query
MSSQL is a db file you can query
SqlCE is a db file you can query
Sqlite is a db file you can query
Neo4j: You need to download, install, have running and query through ip address?
OR... pay higher rates (2-5x cost?) for graph DB hosting in comparison to RDMS which is so inexpensive, it's practically given for free for most web hosting services.
Purpose and Reasoning for Question
I'm looking for some cost efficient solutions to run a graph database
with all the bells and whistles, that i can run from web host or
application (that only handle IIS and hard-file transfer services --
maybe it can do netcore, but dont know if you can run graphdb through
netcore as a module service).
Yeah, MSSQL is doing it now, but it's
limited in what it can do and handle, as well as the tutorials are
lacking in how to properly write NoSQL queries as fluent as the SQL
stuff...
Well, i found the answer to my question, and it's "yes, you can create a standalone graph.db to query from (in neo4j)." However it's only limited to Java and not supported by other languages or frameworks.
Neo4j calls it an "embedded" database. Which is exactly what i was asking in my question, though i was hoping to be able to use the services in a .net application, which turns out to not be compatible.
If anyone has any alternate solutions that can work with netcore, i would love to see it posted here. I'm happy to know that i was right, and that it is possible to run queries on a hard file. Just disappointed that because neo4j is native to java, the technology is only available to java apps. Has no one written a c# port yet? (Not in-memory, but to and from hard file.)
Anyways, i'll continue to research and look more into all of this. Thank you.
Edit-1: Graph database for .NET

How to synchronize work on a database project over multiple programmers?

I'm developing an app with one of my friends and it'll use an Oracle database. We can sync the code with github but what about the database? Is it possible to somehow use git for that as well?
I assume the recommended approach would be to use a central online database somehow. Where do I start with that? Docker? We are both inexperienced in web development. We also have no requirement to make the database online(it's a university course project) so I do not want to go through that hassle if possible.
You can store your SQL scripts (like your DDL commands to create your tables, etc.) in GitHub, just like any other code, but your Oracle database won't interface with it directly. You can use Oracle's SQL Developer as an IDE to interface with GitHub.
https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html
https://blogs.oracle.com/shay/managing-oracle-database-code-with-sql-developer,-git,-and-developer-cloud-service
Traditional Oracle is free for academic and training purposes, and there is also a free cloud offering now as well. You can run it from a laptop, a VM using VirtualBox, or from the Oracle Cloud. Unless you need a specific option with Enterprise Edition, your best (least complicated) bet, is probably to go with the Oracle 18c XE version, available here: https://www.oracle.com/database/technologies/xe-downloads.html
We built a commerical tool that helps database developers use Git with the Oracle Database. It tracks the changes in database objects and helps you to commit them to Git. It might be worth takinga look: https: www.gitora.com

Export from a standalone database to an embedded database

I have a two-part application, where there is a central database that is edited, and then at certain times, the data is released and distributed as its own application. I would like to use a standalone database for the central database (MySQL, Postgres, Oracle, SQL Server, etc.) and then have a reliable export to an embedded database (probably SQLite) for distribution.
What tools/processes are available for such an export, or is it a practice to be avoided?
EDIT: A couple of additional pieces of information. The distributed application should be able to run without having to connect to another server (ex: your spellchecker still works even you don't have internet), and I don't want to install a full DB server for read-only access to the data.
If you really only want your clients to have read-access to the offline data it should not be that difficult to update your client-data manually.
A good practice would be to use the same product for the server database and the client database. You wouldn't have to write SQL-Statements twice since they use the same SOL-Dialect and same features.
Firebird for example offers a server
and an embedded version.
Also Microsoft offers their MS SQL Server
as a mobile version (compact edition) and there are
also Synchronization services
provided by Microsoft (good blog
describing sync services in visual
studio:
http://keithelder.net/blog/archive/2007/09/23/Sync-Services-for-SQL-Server-Compact-Edition-3.5-in-Visual.aspx)
MySQL has a product which is called "MySQLMobile" but I never actually used it.
I can also recommend SQLite as an embedded database since it is very easy to use.
Depending on your bandwidth and data amount you could even download the whole database and delete the old one. (in Firebird for example only copy the database files and it will also work with the mobile version) Very easy - BUT you have to know if it will work for your scenario. If you have more data you will need something more flexible and sophisticated, only updating the data that really changed.

How do you keep seperate dev environments which need to be kept in sync, in sync?

I am setting up two dev environments (one will be on my local server, another on a cloud service provider where I will do work which may require more memory than on my local server).
What can I do to ensure that both environments are always fully in sync? I am looking at deploying apps centrally and using a tool to sync SQL Server databases, and another tool for keeping Sharepoint servers in sync, between two VMs on the two environments which are like-for-like. Is there anything else which would help to achieve this?
Thanks
This is a very tricky problem for SharePoint development.
As far as SQL server goes (for non-SharePoint stuff), you can just sync your databases using the tools provided in SQL Server. The copy database wizard for example or you could even write your own SSIS package if you need custom work to be done.
SharePoint is a different matter though. You cannot just sync site collections / web applications from one server to another by just copying the databases across, it won't work (for many reasons, but mostly because when you create a web application on a server, it creates the databases using a GUID as the application ID. That GUID is used everywhere in the database and all the links between tables will be broken if you try and change it). The structure of the SharePoint database is not documented and MS recommends against modifying it manually. And honestly, even if you did manage to sync your databases right from SQL server, you would run into other problems because not all customizations you do are saved into the database (a lot of stuff goes into the 12 hive).
So it comes down to what you are trying to achieve.
If you are trying to sync customizations (i.e. your Content types, list templates, web parts, etc.) that were coded. I would recommend that you just build WSP packages from your development environment and that you deploy them everytime you need to sync.
If you are only trying to sync data (i.e. list items) you can use the backup / restore solution (you'll find it in Central Administration). Note that it isn't overly reliable if you have customizations though. It works fine on out of the box sites but it can be tricky to restore once you use your own list templates, etc.
You can also write code to sync using the web services or Content Deployment API and see if it suits your needs.
You can also look into tools that will do all or a part of the work for you. Here is one
So basically, no matter how you decide to do it, it won't be as simple as you expected it to be. The DEV / TEST / PROD environment sync problem is classic for SharePoint development.
I work on a highly customized SharePoint web app and the best solution we found was to :
Be very disciplined in our code : do all your customizations through code and build WSP packages with that code. No SharePoint designer. Once you customize a page with SharePoint designer you can't sync anything.
Sync the lists between any servers using the web services

Do Data Tier Application Projects replace Database Projects from Visual Studio Database Edition?

I'm only slightly familiar with the features of Data Tier Applications and what Database Projects did in the Database Edition of visual studio.
Are these two different overlapping solutions for database version control? Or does Data Tier Application functionality replace outright the need to use visual studio database edition and database projects?
DAC provides an application model which can be used as an interface between developers and DBAs. The developer edits the model, the DBA manages/deploys from the model. For example, once the model is built or extracted, it can be deployed to multiple servers.
Imagine the .dacpac as an .exe. The developer builds an .exe and hands it off to someone. At this point, it would be nice if the developer doesn't have to worry about where that .exe runs because the .exe is internally consistent - it either runs or it doesn't. Why should the developer need to worry about targetting 2008, 2005, or Azure specifically? Just develop the app model and let DAC take care of the rest...
Having this deployment artifact also provides some new capabilities. Examples include versioned deployments, the ability to determine if someone has changed the database since the last deployment or upgrade, the ability to create the same database in different target servers.
Do you like having to manage a library of upgrade scripts for your various databases? Wouldn't it be nice if the entire state of your database could be built or captured (extracted) at any point in time?
The database application project mashup in VS 2010 will be resolved in an upcoming release of database-centric developer tools. Investing in dbschema or DAC wont affect forward compatibility.
Right now the difference between Database Projects and Data Tier Projects is at the point of deployment. If you want to create a dacpac, you'd use the Data Tier Project. If you want to createa .dbschema and sql migration file, you'd use the conventional Database Project.
As far as I'm aware, Data Tier Applications are expected to be important in future for SQL Azure deployment.
Unless you're specifically looking at SQL Azure, I'd use Database Projects for now. It all depends on what you're trying to achieve. It could be that SQL Source Control (by Red Gate, the company I work for) is more suited to your needs.
I believe Visual Studio database projects are targeted at developers.
Data Tier Applications are targeted at DBAs. See this blog for details.

Resources