473,386 Members | 2,114 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

Best pratices to manage the "same logical" database on multipledatabase engine types (postgreSQL, SLQServer, etc..)

Hi,
I'm going to work on an application that uses a postgreSQL database so
that it can uses SQLServer 2005.

I think I solved most problems on the programming side, but I still
have some doubts on the DB side regarding how to handle the creation
of the db schema on sqlserver and how to handle the every day dba
work.
1) should I try to use an ER tool like Embarcadero and have its
logical model be the master copy ? (i did some tests, it looks like i
have to massage the SQL produced a littel bit to have sqlserver l ike
it).
2) should I handle two separate sql scripts and update both of them
when something change, Additinally I have to produce "the diff"
scripts for upgrades, so that I should keep in sync 4 scripts.
3) Should I try to develop an XML based DDL syntax (like xml2dll) and
a parsing engine, so that I can handle just 2 scripts (create from
scracth and diff).
4) What should I use to move data back & forth ? SSIS (ex dts) or
something else ?

What do you suggest ?
thank you
Best Regards
Enrico Sabbadin
Jun 27 '08 #1
2 2126
On 22.05.2008 09:19, sa********@gmail.com wrote:
Hi,
I'm going to work on an application that uses a postgreSQL database so
that it can uses SQLServer 2005.

I think I solved most problems on the programming side, but I still
have some doubts on the DB side regarding how to handle the creation
of the db schema on sqlserver and how to handle the every day dba
work.
1) should I try to use an ER tool like Embarcadero and have its
logical model be the master copy ? (i did some tests, it looks like i
have to massage the SQL produced a littel bit to have sqlserver l ike
it).
Alternative product that I like quite well: PowerDesigner.
2) should I handle two separate sql scripts and update both of them
when something change, Additinally I have to produce "the diff"
scripts for upgrades, so that I should keep in sync 4 scripts.
3) Should I try to develop an XML based DDL syntax (like xml2dll) and
a parsing engine, so that I can handle just 2 scripts (create from
scracth and diff).
4) What should I use to move data back & forth ? SSIS (ex dts) or
something else ?
5) How will you deal with schema migration?

All valid and good questions. Theoretically the single source solution
(3) looks like the best. Whether it is also optimal in practice depends
on a number of factors. For example, if your change frequency of the
schema is low and / or you need very DB specific features then it might
not be worthwhile to restrict yourself to some tool's DB specific output
and maintain schemes manually. On the other hand, if you need to
maintain a lot different DB products then it may pay off to use the
single source approach. But then you still have the schema migration
issue - unless you can afford to export all data, kill the old schema,
create the new schema and reimport (e.g. with small data volume).

My 0.02 EUR: be skeptical about tools that promise to easily manage a
schema for a number of database products.

Kind regards

robert
Jun 27 '08 #2
I don't think there is a single Best Practice because much depends on the
volatility of the schema, toolset and skillet.
1) should I try to use an ER tool like Embarcadero and have its
logical model be the master copy ? (i did some tests, it looks like i
have to massage the SQL produced a littel bit to have sqlserver l ike
it).
ER tools vary in their ability to generate scripts that require minimal
customization and some of the script gen features can be complex. If you
need to do a lot of work for your needs, consider evaluating other ER
products That said, diff scripts may require tweaking anyway to address
special considerations (e.g. large production data volumes).
2) should I handle two separate sql scripts and update both of them
when something change, Additinally I have to produce "the diff"
scripts for upgrades, so that I should keep in sync 4 scripts.
I'd keep 4 scripts (new and upgrade for each DBMS) and under source control.
Although the ER model can be considered the master, the model doesn't
mitigate configuration and release management Best Practices.
3) Should I try to develop an XML based DDL syntax (like xml2dll) and
a parsing engine, so that I can handle just 2 scripts (create from
scracth and diff).
IMHO, this should be last resort.
4) What should I use to move data back & forth ? SSIS (ex dts) or
something else ?
We use SSIS for general ETL processes. I've only had one SSIS project that
used PostgreSQL, though. I found the open source OLDB drivers buggy and
ended up using ODBC instead.

--
Hope this helps.

Dan Guzman
SQL Server MVP
http://weblogs.sqlteam.com/dang/

<sa********@gmail.comwrote in message
news:de**********************************@34g2000h sh.googlegroups.com...
Hi,
I'm going to work on an application that uses a postgreSQL database so
that it can uses SQLServer 2005.

I think I solved most problems on the programming side, but I still
have some doubts on the DB side regarding how to handle the creation
of the db schema on sqlserver and how to handle the every day dba
work.
1) should I try to use an ER tool like Embarcadero and have its
logical model be the master copy ? (i did some tests, it looks like i
have to massage the SQL produced a littel bit to have sqlserver l ike
it).
2) should I handle two separate sql scripts and update both of them
when something change, Additinally I have to produce "the diff"
scripts for upgrades, so that I should keep in sync 4 scripts.
3) Should I try to develop an XML based DDL syntax (like xml2dll) and
a parsing engine, so that I can handle just 2 scripts (create from
scracth and diff).
4) What should I use to move data back & forth ? SSIS (ex dts) or
something else ?

What do you suggest ?
thank you
Best Regards
Enrico Sabbadin
Jun 27 '08 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
by: PaulR | last post by:
We have seen this a lot, but have just experienced the opposite to what we have always seen previously, so this has prompted me to ask a high level - why do we get this behaviour? If we re-write...
6
by: bikkaran | last post by:
how to create a exact replica of a database. I have a database . There must be some structure of it. I want to recreate the same structure of the database on some another new server . Please...
1
by: D.M | last post by:
I have two same databases. One DB is locaterd on personal computer in the office and the second one in on laptop computer and this DB is carring from town to town to collect data from all other...
19
by: Steve Jorgensen | last post by:
I've run across this issue several times of late, and I've never come up with a satisfactory answer to the best way to handle this schema issue. You have a large section of schema in which a...
3
by: Dmitri Shvetsov | last post by:
Hi, Maybe somebody knows why it's happening? I wrote a C# Windows Application working with the remote database through a DataSet. It works cool from my computer but when I gave this...
3
by: | last post by:
Is there a Regular Expression that matches either an integer + OR some letters + followed by a COMMA followed by some letters + That is, for example, either 12345 OR aBc,xyZ ???
6
by: Sally Sally | last post by:
I wanted to dump the contents of one table to another (with a different name) within the same database. I am looking at pg_restore and it doesn't seem to have the option of specifying the name of...
7
by: funktacular | last post by:
Hi- I have script that works fine when I run it from a server, but I need to be able to load the page and have it work from my hard drive. However, it seems the when the url changes from...
19
by: glchin | last post by:
Does a compiler guarantee that the variable w below is placed on an eight-byte aligned address? void myFunction( long iFreq ) { const double w = two_pi * iFreq; ... ... }
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.