现在我正在开发一个Web应用程序的原型,它聚合了来自大量用户的大量文本条目.必须经常显示此数据并经常更新.目前,我将内容存储在MySQL数据库中,并使用NHibernate ORM层与数据库进行交互.我有一个为用户,角色,提交,标签,通知等定义的表.我喜欢这个解决方案,因为它运行良好,我的代码看起来很好,理智,但我也担心MySQL将如何执行大小我们的数据库达到了很多.我觉得它可能很难以足够快的速度执行连接操作.
这让我想到了非关系型数据库系统,如MongoDB,CouchDB,Cassandra或Hadoop.不幸的是,我也没有经验.我在MongoDB上看过一些好评,看起来很有趣.我很乐意花时间学习如果一个人走的路.我非常感谢任何一个提供积分或问题时,没有关系dbms?
这里的其他答案主要集中在技术方面,但我认为重点关注创业公司方面的事情:
人才的可用性.MySQL是非常常见的,与更加稀疏的数据库系统相比,你可能会发现找到开发人员更容易(更重要的是,更便宜).这个更大的开发人员基础也意味着更多的教程,更活跃的支持社区等.
易于开发.再次,因为MySQL是如此常见,你会发现它是众多系统/服务的首选数据库.这种共同点可能使任何外部集成更容易一些.
您正在为可能永远不会存在的情况做准备,并且如果确实存在则可以管理.很少有企业(没关系的创业公司)接近MySQL的极限,并且得到应有的尊重(我只是在这里猜测); 您的创业公司可能会达到某种数据吞吐量,从而削弱正确结构化,资源充足的MySQL数据库的可能性几乎为零.
基本上,不要花时间(==钱)担心要使用哪个数据库,因为MySQL可以处理大量数据,已得到充分证明并得到很好的支持.
让我们回到事物的技术方面......的东西,将有一个远在你的应用程序不是db的选择的速度影响较大,数据是如何有效,可以缓存.有效的缓存可以对减少数据库负载和加快应用程序的一般响应速度产生巨大影响.我会花时间研究缓存解决方案,并确保以可以充分利用这些解决方案的方式开发应用程序.
仅供参考,我选择的缓存解决方案是memcached.
到目前为止,没有人在关系方面提到过PostgreSQL作为MySQL的替代品.请注意,MySQL库是纯GPL,而不是LGPL.如果您链接到它们,这可能会迫使您释放您的代码,尽管具有更多法律经验的人可能会更好地告诉您其影响.另一方面,链接到MySQL库与仅连接到服务器和发出命令不同,您可以使用封闭源来实现.
PostreSQL通常是Oracle的最佳免费替代品,BSD许可证应该更加商业友好.
由于您更喜欢非关系数据库,因此请考虑转换将更具戏剧性.如果您需要自定义数据库,还应考虑许可证类型因素.
有三件事对你最好的数据库选择有哪些深刻的影响,你没有提到:
数据的大小,或者是否需要在数据库中存储文件.
大量读取和极少数(甚至是受限制的)写入.在这种情况下,您需要一个目录,例如LDAP
数据分发和/或复制的重要性.大多数关系数据库可以或多或少地被复制,但由于它们的概念/设计也不处理数据分发......但是你将处理不适合一个服务器的数据或具有需要特殊分离的访问权限的数据/额外的服务器?
然而,大多数人只会因为不喜欢学习SQL而选择非关系型数据库