首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >初创公司应该考虑什么样的数据库系统?

初创公司应该考虑什么样的数据库系统?
EN

Stack Overflow用户
提问于 2010-05-15 16:45:07
回答 5查看 4.9K关注 0票数 20

现在,我正在开发一个web应用程序的原型,它聚合了来自大量用户的大量文本条目。这些数据必须频繁地显示回来并经常更新。目前,我将内容存储在MySQL数据库中,并使用NHibernate ORM层与数据库进行交互。我有一个为用户,角色,提交,标签,通知等定义的表。我喜欢这个解决方案,因为它工作得很好,我的代码看起来很好和健全,但我也担心一旦我们的数据库大小达到一个重要的数字,MySQL将如何执行。我觉得它可能很难足够快地执行连接操作。

这让我想到了非关系型数据库系统,如MongoDBCouchDBCassandraHadoop。不幸的是,我在这两个方面都没有经验。我在MongoDB上读到了一些不错的评论,它看起来很有趣。我很乐意花时间学习,如果有一个是可行的。我非常感谢任何人在使用非关系型dbms时提供要考虑的要点或问题?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-15 22:24:55

这里的其他答案主要集中在技术方面,但我认为有一些要点需要重点关注创业公司方面的事情:

  • 人才可用性。MySQL非常常见,与更稀有的数据库系统相比,您可能会发现为它找到开发人员更容易(更重要的是,更便宜)。更大的开发人员基础也将意味着更多的教程,更积极的支持社区等。
  • 易于开发。同样,由于MySQL非常常见,您会发现它是许多系统/服务的首选数据库。这一共同点可能会使任何外部集成变得更容易。
  • 您正在为一种可能永远不存在的情况做准备,如果它存在,则是可管理的。很少有企业(更不用说初创企业)接近MySQL的极限了,而且出于应有的敬意(我只是在这里猜测);你的初创企业达到那种数据吞吐量的可能性几乎为零,这种数据吞吐量足以瘫痪一个结构合理、资源充足的MySQL数据库。

基本上,不要浪费你的时间( ==金钱)去担心使用哪个数据库,因为MySQL可以处理大量的数据,并且已经得到了很好的验证和支持。

回到技术层面...比起数据库的选择,对应用程序速度影响更大的是如何高效地缓存中的数据。有效的缓存可以在减少数据库负载和加快应用程序的一般响应速度方面产生显著的效果。我会花你的时间研究缓存解决方案,并确保你的应用程序的开发方式能够最大限度地利用这些解决方案。

仅供参考,我选择的缓存解决方案是memcached

票数 18
EN

Stack Overflow用户

发布于 2010-05-15 22:14:29

到目前为止,还没有人提到在关系方面PostgreSQL是MySQL的替代品。请注意,GPL库是纯MySQL的,而不是LGPL的。如果你链接到它们,这可能会迫使你发布你的代码,尽管也许有更多法律经验的人可以告诉你更好的含义。另一方面,链接到MySQL库与仅仅连接到服务器并发出命令是不同的,你可以用封闭的源代码来做这件事。

PostreSQL通常是Oracle的最佳免费替代品,而且BSD许可应该对业务更友好。

由于您更喜欢非关系数据库,因此考虑到转换将更加戏剧性。如果你需要定制你的数据库,你也应该考虑许可类型因素。

有三件事对哪一个是你最好的数据库选择有很深的影响,而你没有提到:

  1. 你的数据的大小,或者如果你需要在你的数据库中存储文件。
  2. 大量的读操作和极少的(甚至是受限的)写操作。在这种情况下,除了数据库之外,您还需要一个目录,如LDAP、

  1. ,以及数据分发和/或复制的重要性。大多数关系数据库或多或少都可以很好地复制,但由于它们的概念/设计也不能处理数据分布...但是,您是否会处理一台服务器无法处理的数据,或者是否会拥有需要特殊的单独/额外服务器的访问权限?

然而,大多数人会选择非关系数据库,因为他们不喜欢学习SQL

票数 8
EN

Stack Overflow用户

发布于 2010-05-15 17:15:48

你认为什么是大量的数据?MySQL,以及基本上大多数关系数据库引擎,可以处理相当大量的数据,只要有适当的索引和合理的数据库模式。

为什么你不在你的设置中尝试一下MySQL在大数据量下的表现呢?编写一些脚本,将实际数据生成到MySQL测试数据库,并在系统上生成一些负载,看看速度是否足够快。

只有在速度不够快的时候,才开始考虑优化数据库,换成不同的数据库引擎。

要小心使用NHibernate,很容易创建一个很好的、易于编码的解决方案,但在处理大量数据时性能很差。例如,在关联中使用惰性抓取还是急切抓取都应该仔细考虑。我并不是说你不应该使用NHibernate,但要确保你理解NHibernate是如何工作的,例如,"n +1选择“-problem是什么意思。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2839505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档