-1

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

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

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

我希望有 5-10 个集合,每个集合最多 10,000 个条目。

4

3 回答 3

2

我想没有人能客观地回答这个问题。它需要客观地衡量 MongoDB 擅长和不擅长做的事情对您的应用程序的相对重要性。现在,我们能说的最好的就是

“我们也不确定……”

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

所以我的建议是:

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

  • 偏爱您已经熟悉/自信的数据库技术。不熟悉的技术有额外的成本。

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

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

于 2013-03-31T23:52:46.153 回答
1

MongoDB 不是键/值存储,它更多。它也绝对不是 RDBMS。我没有在生产中使用过 MongoDB,但我已经用它构建了一个测试应用程序,它是一个非常酷的工具包。它似乎非常高效,并且已经或即将拥有容错和自动分片(也就是它会扩展)。我认为 Mongo 可能是迄今为止我见过的最接近 RDBMS 替代品的东西。它不适用于所有数据集和访问模式,但它是为典型的 CRUD 内容而构建的。存储本质上是一个巨大的散列,并能够选择任何这些键,是大多数人使用关系数据库的目的。如果您的数据库是 3NF 并且您不进行任何连接(您只是选择一堆表并将所有对象放在一起,也就是大多数人在 Web 应用程序中所做的),MongoDB 可能会为您服务。真正要指出的是,如果你因为无法选择数据库而无法做出超级棒的东西,那你就做错了。如果你知道mysql,就用它。在您真正需要时进行优化。像 ak/v 商店一样使用它,像 rdbms 一样使用它,但是看在上帝的份上,构建你的杀手级应用!这对大多数应用程序都无关紧要。Facebook 仍然大量使用 MySQL。Wikipedia 大量使用 MySQL。FriendFeed 经常使用 MySQL。NoSQL 是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用程序变得热门,而且最重要的是,你的用户不会对此给予任何评价。你这样做是不对的。如果你知道mysql,就用它。在您真正需要时进行优化。像 ak/v 商店一样使用它,像 rdbms 一样使用它,但是看在上帝的份上,构建你的杀手级应用!这对大多数应用程序都无关紧要。Facebook 仍然大量使用 MySQL。Wikipedia 大量使用 MySQL。FriendFeed 经常使用 MySQL。NoSQL 是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用程序变得热门,而且最重要的是,你的用户不会对此给予任何评价。你这样做是不对的。如果你知道mysql,就用它。在您真正需要时进行优化。像 ak/v 商店一样使用它,像 rdbms 一样使用它,但是看在上帝的份上,构建你的杀手级应用!这对大多数应用程序都无关紧要。Facebook 仍然大量使用 MySQL。Wikipedia 大量使用 MySQL。FriendFeed 经常使用 MySQL。NoSQL 是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用程序变得热门,而且最重要的是,你的用户不会对此给予任何评价。

我将在什么基础上构建下一个应用程序?可能是Postgres。我会使用 NoSQL 吗?也许。我也可能使用 Hadoop 和 Hive。我可能会将所有内容保存在平面文件中。也许我会开始在 Maglev 上进行黑客攻击。我会使用最适合这项工作的东西。如果我需要报告,我不会使用任何 NoSQL。如果需要缓存,我可能会使用 Tokyo Tyrant。如果我需要 ACIDity,我不会使用 NoSQL。如果我需要大量的计数器,我会使用 Redis。如果我需要交易,我会使用 Postgres。如果我有大量单一类型的文档,我可能会使用 Mongo。如果我需要每天编写 10 亿个对象,我可能会使用 Voldemort。如果我需要全文搜索,我可能会使用 Solr。如果我需要对易失性数据进行全文搜索,我可能会使用 Sphinx。

旧但仍然真实...... 来源

于 2013-03-31T23:20:51.743 回答
1

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

它可能会看看什么最适合您的项目,除了我个人使用 MySQL 来处理我对数据库所做的任何事情,因为我知道 MySQL,但这并不总是最好的方法。

希望这有帮助!祝你的程序好运!

于 2013-03-31T23:42:48.267 回答