gpt4 book ai didi

mongodb - NoSQL 数据库无法处理的任务示例(如果有)

转载 作者:IT老高 更新时间:2023-10-28 13:10:52 25 4
gpt4 key购买 nike

我想测试 NoSQL 世界。这只是好奇,而不是绝对需要(还)。我已经阅读了一些关于 SQL 和 NoSQL 数据库之间差异的内容。我对潜在的优势深信不疑,但我有点担心 NoSQL 不适用的情况。如果我理解 NoSQL 数据库基本上错过了 ACID 属性。

有人可以举一个 ACID 关系数据库可以处理但 NoSQL 数据库可能会惨遭失败的现实世界操作(例如电子商务网站、科学应用程序或...)的示例,或者系统地由于某种竞争条件或停电等原因?

完美的例子是在不修改数据库引擎的情况下无法解决任何问题。 NoSQL 数据库性能不佳的示例最终将是另一个问题,但在这里我想看看理论上我们何时不能使用这种技术。

也许找到这样的例子是特定于数据库的。如果是这样,让我们​​以 MongoDB 来代表 NoSQL 世界。

编辑:为了澄清这个问题,我不想争论哪种数据库更适合某些情况。我想知道在某些情况下这项技术是否会成为绝对的死胡同,因为无论我们如何努力尝试 SQL 数据库提供的某些功能无法在 nosql 存储之上实现。由于有许多可用的 nosql 存储,我可以接受选择现有的 nosql 存储作为支持,但我最感兴趣的是存储应该提供的功能的最小子集,以便能够实现更高级别的功能(比如事务可以用不提供 X...) 的商店。

最佳答案

这个问题有点像问什么样的程序不能用命令式/函数式语言编写。任何图灵完备的语言,并表达可以通过图灵机加工解决的每个程序。问题是你作为程序员真的想用非可移植机器指令为财富 500 强公司编写会计系统吗?

归根结底,NoSQL 可以做任何基于 SQL 的引擎可以做的事情,不同之处在于作为程序员的你可能负责 MySQL 免费提供给你的 Redis 之类的逻辑。 SQL 数据库对数据完整性采取非常保守的观点。 NoSQL 运动放宽了这些标准,以获得更好的可扩展性,并使 Web 应用程序常见的任务更容易。

MongoDB(我目前的偏好)使复制和分片(水平扩展)变得容易,插入速度非常快,并且不需要严格的方案。作为交换,MongoDB 的用户必须在不存在索引时围绕较慢的查询编写代码,在应用程序中实现事务逻辑(可能需要三阶段提交),并且我们会影响存储效率。

CouchDB 有类似的权衡,但也牺牲了即席查询,以便能够离线处理数据然后与服务器同步。

Redis 和其他键值存储要求程序员编写 SQL 数据库中内置的大部分索引和连接逻辑。作为交换,应用程序可以利用有关其数据的领域知识来使索引和连接比 SQL 所需的通用解决方案更有效。 Redis 还要求所有数据都适合 RAM,但作为交换,它的性能与 Memcache 相当。

最后,您真的可以使用 OS 文件系统命令来完成 MySQL 或 Postgres 所做的一切(毕竟编写这些数据库引擎的人就是这样做的)。这一切都取决于您希望数据存储为您做什么以及您愿意放弃什么作为返回。

关于mongodb - NoSQL 数据库无法处理的任务示例(如果有),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com