Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What database systems should a startup company consider?

Tags:

Right now I'm developing the prototype of a web application that aggregates large number of text entries from a large number of users. This data must be frequently displayed back and often updated. At the moment I store the content inside a MySQL database and use NHibernate ORM layer to interact with the DB. I've got a table defined for users, roles, submissions, tags, notifications and etc. I like this solution because it works well and my code looks nice and sane, but I'm also worried about how MySQL will perform once the size of our database reaches a significant number. I feel that it may struggle performing join operations fast enough.

This has made me think about non-relational database system such as MongoDB, CouchDB, Cassandra or Hadoop. Unfortunately I have no experience with either. I've read some good reviews on MongoDB and it looks interesting. I'm happy to spend the time and learn if one turns out to be the way to go. I'd much appreciate any one offering points or issues to consider when going with none relational dbms?

like image 925
Roman Avatar asked May 15 '10 08:05

Roman


People also ask

What database should a startup use?

NoSQL DB proves the best for such applications as these databases can store a vast amount of data without any limitations concerning data type or structure. Information can be stored in multiple formats as per business requirements. Such flexibility proves to be a life-saver for startups.


2 Answers

The other answers here have focused mainly on the technical aspects, but I think there are important points to be made that focus on the startup company aspect of things:

  • Availabililty of talent. MySQL is very common and you will probably find it easier (and more importantly, cheaper) to find developers for it, compared to the more rarified database systems. This larger developer base will also mean more tutorials, a more active support community, etc.
  • Ease of development. Again, because MySQL is so common, you will find it is the db of choice for a great many systems / services. This common ground may make any external integration a little easier.
  • You are preparing for a situation that may never exist, and is manageable if it does. Very few businesses (nevermind startups) come close to MySQL's limits, and with all due respect (and I am just guessing here); the likelihood that your startup will ever hit the sort of data throughput to cripple a properly structured, well resourced MySQL db is almost zero.

Basically, don't spend your time ( == money) worrying about which db to use, as MySQL can handle a lot of data, is well proven and well supported.

Going back to the technical side of things... Something that will have a far greater impact on the speed of your app than choice of db, is how efficiently data can be cached. An effective cache can have dramatic effects on reducing db load and speeding up the general responsivness of an app. I would spend your time investigating caching solutions and making sure you are developing your app in such a way that it can make the best use of those solutions.

FYI, my caching solution of choice is memcached.

like image 180
Mathew Avatar answered Oct 09 '22 10:10

Mathew


So far no one has mentioned PostgreSQL as alternative to MySQL on the relational side. Be aware that MySQL libs are pure GPL, not LGPL. That might force you to release your code if you link to them, although maybe someone with more legal experience could tell you better the implications. On the other side, linking to a MySQL library is not the same that just connecting to the server and issue commands, you can do that with closed source.

PostreSQL is usually the best free replacement of Oracle and the BSD license should be more business friendly.

Since you prefer a non relational database, consider that the transition will be more dramatic. If you ever need to customize your database, you should also consider the license type factor.

There are three things that really have a deep impact on which one is your best database choice and you do not mention:

  1. The size of your data or if you need to store files within your database.
  2. A huge number of reads and very few (even restricted) writes. In that case more than a database you need a directory such as LDAP
  3. The importance of of data distribution and/or replication. Most relational databases can be more or less well replicated, but because of their concept/design do not handle data distribution as well... but will you handle as much data that does not fit into one server or have access rights that needs special separate/extra servers?

However most people will go for a non relational database just because they do not like learning SQL

like image 22
SystematicFrank Avatar answered Oct 09 '22 10:10

SystematicFrank