哪种数据库类型适合我的应用程序? [关闭]

Posted

技术标签:

【中文标题】哪种数据库类型适合我的应用程序? [关闭]【英文标题】:Which DB type would suit my application? [closed] 【发布时间】:2013-03-22 01:26:36 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

所以我的建议是:

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

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

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

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

【讨论】:

【参考方案2】:

MongoDB 不是键/值存储,它更多。它的 也绝对不是 RDBMS。我没有在生产中使用过 MongoDB, 但我已经用它构建了一个测试应用程序,它非常酷 套件。它似乎非常高效,要么已经,要么将会 很快,容错和自动分片(又名它会扩展)。一世 认为 Mongo 可能是最接近 RDBMS 替代品的东西 到目前为止我已经看到了。它不适用于所有数据集和访问模式, 但它是为典型的 CRUD 内容而构建的。存储什么 本质上是一个巨大的哈希,并且能够选择其中任何一个 键,是大多数人使用关系数据库的目的。如果您的数据库是 3NF,你不做任何连接(你只是选择了一堆 桌子和把所有的东西放在一起,也就是大多数人所做的 在 Web 应用程序中),MongoDB 可能会为您提供帮助。 真正要指出的是,如果你被阻止 做一些超级棒的东西,因为你不能选择数据库, 你做错了。如果你知道mysql,就用它。优化时 你实际上需要。像 k/v 商店一样使用它,像 rdbms 一样使用它, 但看在上帝的份上,构建你的杀手级应用!这些都不重要 大多数应用程序。 Facebook 仍然大量使用 MySQL。***使用 MySQL,一个 很多。 FriendFeed 经常使用 MySQL。 NoSQL 是一个很棒的工具,但它 当然不会成为你的竞争优势,也不会 使您的应用程序变得热门,最重要的是,您的用户不会对 任何这些。

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

旧的但仍然是真实的...... Source

【讨论】:

我很抱歉说脏话;p 我同意你的帖子,我选择它作为最佳答案不是因为它回答了我的问题(它根本没有解决它),而是因为它可能是大多数人的正确答案遇到这个问题的人。我不是在寻找关于构建我的应用程序的励志演讲。它正在路上。我正在寻找关于在处理 JSON 并且仍需要某些报告功能时哪个数据库对我们有利的真正建议。 @Etai - 我认为您正在挖掘我的答案。很公平。但是没有人给你建议的原因是因为没有人能给你客观的建议。 (实际上,不完全正确。如果您花几个小时与专家一起展示您的项目的全貌,他/她可能会给您一些客观的建议。但这会花费您的钱,朋友。)实际上,我喜欢这个答案也是......因为它指出没有简单的答案。 @StephenC 完全同意你的观点,就像问哪辆车最好,却不知道你需要那辆车做什么。但正如我所说,我发现这篇文章很有趣 @StephenC 我实际上投票赞成你的答案,但我认为大多数看到这个问题的人实际上会发现 knowbody 的答案更相关。关于客观的建议——这确实是我需要的。我不是在问哪辆车是最好的……我是在问“哪辆车适合两辆车之间的一个非常高的人”我确信两者都有优势,但是(据我了解)JSON SQL 服务器可能会出现问题。所以我要么需要将数据存储为非 JSON,这需要更多的维护和服务器端的工作,要么我可以只使用一个 noSQL 数据库。【参考方案3】:

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

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

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

【讨论】:

以上是关于哪种数据库类型适合我的应用程序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

哪种 .NET 数据类型最适合在 NHibernate 中映射 NUMBER Oracle 数据类型?

哪种数据类型最适合 c++ 中节俭通信中的日期时间?

哪种脚本语言更适合嵌入多线程 C/C++ 应用程序 [关闭]

哪种 HSQLDB 数据类型最适合 5000 个字符串:NTEXT、CLOB 或其他。?

哪种算法以及哪种超参数组合最适合对这些数据进行聚类?

哪种设计模式适合从多个来源获取相同类型的数据,将它们组合成一个单元并应用多个过滤器