假设我有一个需要以JSON格式从服务器向客户端发送数据的应用程序(用Java编写),我应该使用SQL数据库还是NoSQL?
一方面,在更新数据库中的记录(只发送JSON字符串)时,使用NoSQL可以省去麻烦,如果我更新表(也称为集合),我将不需要更改我的格式发送.. 另一方面,如果我需要从数据库中提取数据/统计数据,它会变得更加复杂 - 这也是我的必需品。
我目前正在测试MongoDB与MS SQL 2012,我不确定哪种方法会更好。
我希望每次收集最多10,000个条目的5-10个收集。
答案 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,但这并不总是最好的方式。
希望这有帮助!祝你的计划好运!