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

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

Related

Creating a Database Software needed

Hi can someone explain to me what the following database software are:
HeidiSQL, MariaDB and XAMPP.
Also do they depend on each other to work? Hope you can help.
Thank You
MariaDB:
Is a open-source database server, basically its a fork of MySQL and they provide support and services, its slightly better than MySQL since they have made some changes to MySQL. MariaDB doesn't depend on anything. Its a complete database product.
HeidiSQL:
Its a fronend-MySQL, its nothing but a UI for interacting with different database servers like MariaDB, Percona, and many more depending on their enhancement. HeidiSQL is just a frond end, If you want to interact with databases, you must connect to one. Yes, heidiSQL is dependent on databases. Latest enhancements support MS SQL Server, which is great :)
XAMPP:
Its like a tech stack similar to LAMP, WAMP etc. XAMPP means Apache HTTP Web Server, MariaDB, PHP, and Perl. X stands for cross platform. XAMPP is dependent on many as you can see its a tech stack.

how to connect SQL-Server database with Oracle Enterprise Repository

My dept wants to keep using a homegrown ASP application that runs off a SQL-Server database, but we also want to take advantage of the governance capabilities and that slick navigator in Oracle Enterprise Repository. Is it possible to integrate an OER database with an un-normalized SQL-Server database?
I don't mean like a one-shot migration from SQL to OER. I'm looking for an adapter or something that would allow use of both OER and the ASP application on an ongoing basis?
I don't want to do a tightly coupled solution that involves a lot of coding of .bat files. I'd rather do something that takes advantage of already existing connectors and adapters, if possible.
OER does support SQL Server as the backend already - take a look at the OER Installation Guide. Great idea to use OER - we find it to be a very powerful and flexible tool for Governance, and I hear Oracle is investing a lot in it for future versions.

Web based solution for team with no Server or 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.

How do you manage your sqlserver database projects for new builds and migrations?

How do you manage your sql server database build/deploy/migrate for visual studio projects?
We have a product that includes a reasonable database part (~100 tables, ~500 procs/functions/views), so we need to be able to deploy new databases of the current version as well as upgrade older databases up to the current version. Currently we maintain separate scripts for creation of new databases and migration between versions. Clearly not ideal, but how is anyone else dealing with this?
This is complicated for us by having many customers who each have their own db instance, rather than say just having dev/test/live instances on our own web servers, but the processes around managing dev/test/live for others must be similar.
UPDATE: I'd prefer not to use any proprietary products like RedGate's (although I have always heard they're really good and will look into that as a solution).
We use Red-Gate SQLCompare and SQLDataCompare to handle this. The idea is simple. Both compare products let you maintain a complete image of the schema or data from selected tables (e.g. configuration tables) as scripts. You can then compare any database to the scripts and get a change script. We keep the scripts in our Mercurial source control and tag (label) each release. Support can then go get the script for any version and use the Redgate tools to either create from scratch or upgrade.
Redgate also has an API product that allows you to do the compare function from your code. For example, this would allow you to have an automatic upgrade function in your installer or in the product itself. We often use this for our hosted web apps as it allows us to more fully automate the rollout process. In our case, we have an MSBuild task that support can execute to do an automatic rollout and upgrade. If you distribute to third-parties, you have to pay a small additional license fee for each distribution that includes the API.
Redgate also has a tool that automatically packages a database install or upgrade. We don't use that one as we have found that the compare against scripts for a version gives us more flexibility.
The Redgate tools also help us in development because they make it trivial to source control the schema and configuration data in a very granular way (each database object can be placed in its own file)
The question was asked before SSDT projects appeared, but that's definitely the way I'd go nowadays, along with hand-crafting migration scripts for structural db changes where there is data that would be affected.
There's also the MS VSTS method (2008 description here), anyone got a good article on doing this with 2010 and the pros/cons of using these tools?

Choosing a desktop database

I'm looking for a desktop/embedded database. The two candidates I'm looking at are
Microsoft SQL Server CE and Oracle Lite. If anyone's used both of these products, it'd be great if you could compare them. I haven't been able to find any comparisons online.
The backend DB is Oracle10g.
Update: Clarification, the business need is a client-server app with offline functionality (hence the need for a local data store on the client)
If the backend database is Oracle 10g it will probably be easier for you to use Oracle Lite - that way you don't have to use two completely different SQL dialects in the same project.
BTW, In my product I use SQLite as the desktop database
I'll second the vote for SQLite. I'm not sure what you're trying to accomplish but if you're doing any sort of local storage with syncing SQLite is a good choice. It has very widespread adoption and a lot of community support.
I also used SQLite as a desktop database. It's lightning quick and doesn't need a seperate process or any prior installation. All you need is a library to access the data as part of your code.
In light of your clarification I'd evaluate both OracleXE and Oracle 10g Lite before the others. Stick with the same tech, SQL/Oracle have some funny disagreements about SQL syntax and datatypes. I imagine you'd get the same issue with SQLite.
Perhaps I'm not fully understanding the need here. You are developing against 10g, but for your own test/dev environment you want a more lightweight database?
Or, are you developing an application that synchs with 10g database when online, but when offline uses a local store?
In both cases, I'd recommend staying with Oracle only because it will simplify your code.
In the first case, I'd wonder why you don't have a 10g QA machine somewhere that all the developers can connect to.
One advantage you have with SQL Server CE is that it is free and you can use the Sync Framework to syncronize it with any ADO.NET accesible database.
Also, the same SQL CE file is usable from the PC and mobile devices, and if you develop your application using .NET, you can use the same code for the desktop and the mobile device without changes.
You might want to look at Oracle XE. I cannot remember all of the differences, but O-Lite didn't fit my project needs. Oracle XE is a very good database for local development.
Brad
As #Nir mentioned, it's better to have homogeneous environment. However if you decide to not use Oracle Light, I would highly recommend you to take a look at Firebird. It's one of best choices for desktop database scenarios.

Resources