【发布时间】:2011-07-20 06:34:57
【问题描述】:
我阅读并听到了很多关于 NoSQL 数据库的内容(播客、stackoverflow 问题......),我真的很想使用它们,但是......
虽然我读了很多诸如how-to-sql-or-nosql 或what-scalability-problems-have-you-solved-using-a-nosql-data-store 之类的东西,但我仍然不确定要使用哪种数据库。
问题是:对于一个(学校)项目,我们(我的项目组)需要实现一个相当大的数据库(它应该服务于一个休息服务器,可能是用 erlang 编写的,有很多客户端)。 我们非常擅长为关系数据库设计数据模型。所以我们开始这样做。
现在我玩弄了一些 NoSQL,性能给我留下了深刻的印象。 那么:使用 NoSQL 数据库是个好主意吗?我们的数据模型有 很多 关系,并且查询会有很多连接(或至少使用连接视图)。 我有时读到这意味着我应该使用关系数据库,而在其他地方我读到这意味着我可以轻松地将其重新设计为 NoSQL 样式以减少这种关系开销。
我应该使用 NoSQL,如果是,您会建议我使用哪个系统? 像HanderlerSocket for MySQL 这样的东西是一种选择吗? 以及如何轻松地将关系数据模型重新设计为 NoSQL 样式?
【问题讨论】:
-
如果你在学校项目中达到了任何关系数据库的限制,那你就大错特错了。
-
也许是一所很好的学校。
-
如果他们是那么好的 OP 应该告诉我们。
-
好吧。我们参加了所谓的HTL,这将是我们论文工作的一部分,我们希望为此创办自己的公司。
-
NoSQL 解决方案使用各种方法来实现不符合 ACID 的性能,例如延迟写入,这可能(并且将会)使您丢失数据。至于 MySQL 的 HandlerSocket - 只有当您可以将整个数据集放入内存中并且您主要使用主键查找时,它才有效 - 然后它的性能远远优于 NoSQL 解决方案。请记住,关系数据库已经存在了几十年并且是经过验证的技术,而 NoSQL 方法还很年轻,需要成熟。我肯定会坚持使用 RDBMS。