哪种DB类型适合我的应用程序?

时间:2013-03-31 22:57:19

标签: java sql mongodb sql-server-2012 nosql

假设我有一个需要以JSON格式从服务器向客户端发送数据的应用程序(用Java编写),我应该使用SQL数据库还是NoSQL?

一方面,在更新数据库中的记录(只发送JSON字符串)时,使用NoSQL可以省去麻烦,如果我更新表(也称为集合),我将不需要更改我的格式发送.. 另一方面,如果我需要从数据库中提取数据/统计数据,它会变得更加复杂 - 这也是我的必需品。

我目前正在测试MongoDB与MS SQL 2012,我不确定哪种方法会更好。

我希望每次收集最多10,000个条目的5-10个收集。

3 个答案:

答案 0 :(得分:2)

我认为任何人都不能客观地回答这个问题。它需要客观地衡量对MongoDB的好坏的应用的相对重要性。现在,我们可以说最好的是

  

“我们也不确定......”

(如果有人“确定”他们是非客观的。)

所以我的建议是:

  • 在失败或截止日期延误过高的项目中,不要冒险选择数据库技术。

  • 支持您已熟悉/自信的数据库技术。不熟悉的技术会产生额外的成本。

  • 以有条不紊的方式权衡替代方案。给自己写一份文件,列出项目背景下每种备选方案的优缺点。

  • 相信你自己的判断......

答案 1 :(得分:1)

  

MongoDB不是键/值存储,而是更多。它的   绝对不是RDBMS。我没有在生产中使用MongoDB,   但我用了一点建立一个测试应用程序,这是一个非常酷的   一件套件。它似乎非常高效,无论是拥有还是将拥有   很快,容错和自动分片(又称它会缩放)。一世   认为Mongo可能是最接近RDBMS替代品的东西   到目前为止我见过。它不适用于所有数据集和访问模式,   但它是为您典型的CRUD内容而打造的。存储的是什么   本质上是一个巨大的哈希,并能够选择其中任何一个   密钥,是大多数人使用关系数据库的原因。如果您的数据库是   3NF,你不做任何连接(你只是选择了一堆   桌子并将所有物体放在一起,AKA是大多数人所做的   在一个网络应用程序),MongoDB可能会为你踢屁股。   值得指出的是,如果你被迫退出   因为你不能选择数据库,所以制作超级棒的东西,   你做错了。如果您了解mysql,请使用它。优化时间   你真的需要。像k / v商店一样使用它,像rdbms一样使用它,   但为了上帝的缘故,建立你的杀手级应用程序!这些都不重要   大多数应用。 Facebook仍然使用MySQL,很多。维基百科使用MySQL,a   许多。 FriendFeed使用MySQL,很多。 NoSQL是一个很棒的工具,但它确实如此   当然不会成为你的竞争优势,但事实并非如此   让你的应用程序变热,最重要的是,你的用户不会给你一个****   任何一个。

     

我打算构建下一个应用程序是什么?可能是Postgres。我会用吗   NoSQL的?也许。我也可以使用Hadoop和Hive。我可能会保留   平面文件中的所有内容也许我会开始攻击磁悬浮。我会用的   什么是最适合这份工作的。 如果我需要报告,我将不会使用   任何NoSQL。如果我需要缓存,我可能会使用Tokyo Tyrant。如果我   需要ACIDity,我不会使用NoSQL。如果我需要大量的计数器,我会用   Redis的。如果我需要交易,我会使用Postgres。 如果我有很多   单一类型的文件,我可能会使用Mongo。如果我需要   每天写10亿件物品,我可能会使用Voldemort。如果我需要   全文搜索,我可能会使用Solr。如果我需要全文搜索   易变数据,我可能会使用Sphinx。

老但仍然是真的...... Source

答案 2 :(得分:1)

我建议你看一下这篇文章:Storing Data in MySQL as JSON

它可能会看看什么最适合你的项目,除了我个人使用MySQL几乎所有我用数据库,因为我知道MySQL,但这并不总是最好的方式。

希望这有帮助!祝你的计划好运!