现在,我正在开发一个web应用程序的原型,它聚合了来自大量用户的大量文本条目。这些数据必须频繁地显示回来并经常更新。目前,我将内容存储在MySQL数据库中,并使用NHibernate ORM层与数据库进行交互。我有一个为用户,角色,提交,标签,通知等定义的表。我喜欢这个解决方案,因为它工作得很好,我的代码看起来很好和健全,但我也担心一旦我们的数据库大小达到一个重要的数字,MySQL将如何执行。我觉得它可能很难足够快地执行连接操作。
这让我想到了非关系型数据库系统,如MongoDB、CouchDB、Cassandra或Hadoop。不幸的是,我在这两个方面都没有经验。我在MongoDB上读到了一些不错的评论,它看起来很有趣。我很乐意花时间学习,如果有一个是可行的。我非常感谢任何人在使用非关系型dbms时提供要考虑的要点或问题?
发布于 2010-05-15 22:24:55
这里的其他答案主要集中在技术方面,但我认为有一些要点需要重点关注创业公司方面的事情:
基本上,不要浪费你的时间( ==金钱)去担心使用哪个数据库,因为MySQL可以处理大量的数据,并且已经得到了很好的验证和支持。
回到技术层面...比起数据库的选择,对应用程序速度影响更大的是如何高效地缓存中的数据。有效的缓存可以在减少数据库负载和加快应用程序的一般响应速度方面产生显著的效果。我会花你的时间研究缓存解决方案,并确保你的应用程序的开发方式能够最大限度地利用这些解决方案。
仅供参考,我选择的缓存解决方案是memcached。
发布于 2010-05-15 22:14:29
到目前为止,还没有人提到在关系方面PostgreSQL是MySQL的替代品。请注意,GPL库是纯MySQL的,而不是LGPL的。如果你链接到它们,这可能会迫使你发布你的代码,尽管也许有更多法律经验的人可以告诉你更好的含义。另一方面,链接到MySQL库与仅仅连接到服务器并发出命令是不同的,你可以用封闭的源代码来做这件事。
PostreSQL通常是Oracle的最佳免费替代品,而且BSD许可应该对业务更友好。
由于您更喜欢非关系数据库,因此考虑到转换将更加戏剧性。如果你需要定制你的数据库,你也应该考虑许可类型因素。
有三件事对哪一个是你最好的数据库选择有很深的影响,而你没有提到:
、
然而,大多数人会选择非关系数据库,因为他们不喜欢学习SQL
发布于 2010-05-15 17:15:48
你认为什么是大量的数据?MySQL,以及基本上大多数关系数据库引擎,可以处理相当大量的数据,只要有适当的索引和合理的数据库模式。
为什么你不在你的设置中尝试一下MySQL在大数据量下的表现呢?编写一些脚本,将实际数据生成到MySQL测试数据库,并在系统上生成一些负载,看看速度是否足够快。
只有在速度不够快的时候,才开始考虑优化数据库,换成不同的数据库引擎。
要小心使用NHibernate,很容易创建一个很好的、易于编码的解决方案,但在处理大量数据时性能很差。例如,在关联中使用惰性抓取还是急切抓取都应该仔细考虑。我并不是说你不应该使用NHibernate,但要确保你理解NHibernate是如何工作的,例如,"n +1选择“-problem是什么意思。
https://stackoverflow.com/questions/2839505
复制相似问题