March 24th, 2010, 12:36 am
I've been working with these scenarios since 2001 including Access, MSSQL, MySQL, Postgres and most recently flat file DBs like MongoDB and can summarize as follows:1) Access should only be used for small, one of projects or for the occasional rapid prototyping. Most of the time you can simply use a csv or excel file instead with these, but every once in a while Access brings something to the table (ie. basic querying, etc).2) MSSQL is a pretty good choice if you have Visual Studio or other MS products. It isn't the best DB, but overall it has some nice management tools that help ease the transition from Access to a real DB3) MySQL is easy to setup and use. It has come a long way since it was first introduced and can relied upon to get the job done. It compares well when doing a large number of simple queries, but starts to lag as queries become more sizable and complex. My biggest concern is the Oracle ownership issue. 4) Postgres is a little bit hard to setup and administer if you are new to the DB world. It comes out of the box in a more secure form which can provide a challenge when working on a network or across varying OS's. Once installed, I have found it to be fast and reliable. No real complaints with performance and it has some decent admin tools, maybe not as good as the DB's above, but good enough to get the job done. 5) The latest venture (and one that I would welcome some other feedback on) is MongoDB. We currently run a mixed DB system in our office that uses Postgres to handle the basic security info (ticker, name....etc) while using flat files (txt) or MongoDB to store the pricing and other historical information. So far the results have been pretty promising, especially as the datasets grow (20+years of history for all MFs, ETFs, Stocks, Indices....). This setup seems pretty flexible even though it might require a little more work to initially verify the data quality. We do most of our work with Python and C++ with this setup. This is my personal experience and I will admit that my head-to-head testing could be formalized, but I don't have much time for that at the moment. I just know that our current setup is fast and scalable