问题标签 [eventual-consistency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - 使用 NoSQL 对非分布式系统有意义吗?(试图理解最终的一致性)
在过去的两天里,我一直在阅读和学习 NoSQL 和 MongoDB、CouchDB 等,但我仍然无法确定这是否适合我。
让我担心的是最终的一致性问题。这种类型的一致性是否仅在使用集群时才会发挥作用?(我将我的网站托管在一个专用服务器中,所以我不知道我是否可以从 NoSQL 中受益)对于哪种应用程序可以具有最终一致性(而不是 ACID),对于哪些应用程序不是吨?你能给我一些例子吗?在可以最终保持一致性的应用程序中可能发生的最糟糕的事情是什么?
我读到的另一件事是 MongoDB 在内存中保留了很多东西。在文档中,它说明了具有 2gb 数据限制的 32 位系统。那是因为 32 位系统的内存限制吗?
nosql - 使用 cassandra 并保持数据一致性
众所周知,我们在 cassandra 中有 ReplicationFactor 的 ConsistencyLevel。我们只想利用它来保持数据一致性。因为它应该保留价格信息。
那么哪种策略更好呢?
Write ALL 确保在响应客户端之前将写入写入所有 N 个副本。任何无响应的副本都将导致操作失败
Read ALL 将查询所有副本,并在所有副本都回复后返回具有最新时间戳的记录。任何无响应的副本都会使操作失败。
看来写 ALL 肯定是最安全的。但不确定 Read all 是否更好?对它的优缺点有什么看法吗?您认为任何其他的 nosql 选择更好吗?
google-app-engine - appengine HRD 上实体之间的一致继承属性
我正在实现一个文件系统。每个文件夹都有一个 ACL,它基本上只是一个允许读取/写入文件夹的用户 ID 列表。我想通过将 ACL 从上层文件夹复制到下层文件夹来实现这一点 - 我想要继承权限,但我不想在读取时查找它们。我将文件夹之间的关系存储为对子文件夹中超级文件夹的引用。
那么,以下操作顺序很难用 HRD 解决:
- 将文件夹 B 作为文件夹 A 的子文件夹放入数据存储中,该文件夹已存在。
- 更改 A 的权限。
问题是,当我在步骤 2 中更改 A 的权限时,我需要查找 A 的所有子级,以便我也可以将权限更改应用于它们。不幸的是,这意味着查询,因此 B 可能不会出现在该查询中。B 可能会错过权限更改!
到目前为止,我想到的唯一解决方案是双向存储“子文件夹”关系:A 引用了它的所有子文件夹,B 引用了它的超级文件夹。然后我可以使用跨组事务同时更新 A 和 B,并且不需要在步骤 2 中进行查询。这可能会更好,因为直接获取可以轻松缓存,不需要索引扫描等。
有人有其他想法吗?我不喜欢这个解决方案的冗余存储需求,或者 XG 事务的需求。
nosql - 如何在仅提供最终一致性的数据库上创建应用程序
Cassandra 和许多其他类似系统不提供事务支持。相反,它们提供最终的一致性,这意味着系统的写入者最终将处于一致状态。有没有关于如何使用交易可以模拟的东西来模拟的例子?
我知道在某些情况下,我们需要最终的一致性。例如,我们可以很容易地容忍社交网络中的朋友列表并不总是最新的等等。但是在酒店预订或汇款等系统的情况下我们应该怎么做?谷歌应用引擎有实体组,我们可以在提供最终一致性的系统中以某种方式模拟它们吗?
是否有任何文章可以在哪里找到类似架构的示例?
google-app-engine - 高复制数据存储上的 DjangoAppEngine 和最终一致性问题
我正在使用 djangoappengine,我认为它在处理高应用程序数据存储的最终一致性的方式上遇到了一些问题。
首先,实体组甚至没有在 djangoappengine 中实现。
其次,我认为当你做一个 djangoappengine get 时,底层的应用引擎系统正在做一个应用引擎查询,这只是最终一致的。因此,您甚至不能假设使用键的一致性。
假设这两个陈述是真实的(我认为它们是真实的),如何在高复制数据存储上使用 djangoappengine 构建任何复杂的应用程序?每次保存一个值然后尝试获取相同的值时,都不能保证它会是相同的。
amazon-s3 - S3 对象的元数据是否强一致
S3 对象具有覆盖 PUTS 和 DELETES 的最终一致性,如此处所述 - http://aws.amazon.com/s3/faqs/#What_data_consistency_model_does_Amazon_S3_employ
这是否适用于 S3 对象和元数据或对象的元数据在写入后读取一致?
eventual-consistency - 分布式数据库 - 最终一致性影响
我一直在学习更多关于最终一致性和分布式数据库的知识,我有一个问题。
在我的场景中,我有一个分布式数据库,用于存储用户发布的一些列表(例如,房地产列表站点)。我对最终一致性的影响之一的理解是,如果我发布了一些内容并且用户 X 查找了我的列表,如果他们看到与数据库不一致的复制版本,他们可能不会立即看到我的帖子。我发布到的一个。
现在假设我发布了一个帖子,然后我退出了系统。我重新登录并查看我自己的列表。我是否有机会登录到与我发布的数据库不一致的数据库的复制版本(类似于上面另一个用户可能看不到我的列表的场景)。
我是否误解了这是如何工作的?
编辑:在这种情况下,我不一定使用主/从复制技术。但我确实为峰值负载时间复制了数据库版本。
database - 确保数据库一致性
如果我有一个最终一致的分布式数据库,如果我有一个网站,我正在销售产品并且我正在更改商品的价格,会发生什么?
如果产品的价格为 X,而我将其更新为价格 Y,则某些版本的数据库可能仍显示价格 X。如果客户结账,是否有策略确保他们实际上获得最新价格,所以他们没有收取不正确的费用?
在某些时候,我不需要对数据进行一些完整性检查以确保使用的是最新的值吗?
nosql - 简单英语的最终一致性
我经常在关于 NoSQL、数据网格等的不同演讲中听到最终一致性。似乎最终一致性的定义在许多来源中有所不同(甚至可能取决于具体的数据存储)。
谁能简单解释一下最终一致性是什么,与任何具体的数据存储无关?
sql-server - 是否将所有内容存储在 MongoDB 中?同时使用 SQL?(最终一致性)
我和我的大学正在重新考虑使用 MongoDB 存储我们应用程序的所有数据。有些人认为,由于 Mongo 在用户注册或更新他的个人资料(或类似但更重要的东西)时的最终一致性,因此不会立即看到结果,并且可能会让用户感到沮丧。
我很确定,除非我们有大量数据并且我们进行一些复制,否则我们不会看到最终一致性的影响。但我不确定。
有什么建议吗?仅使用 mongo 还是添加额外的 SQL 服务器来存储敏感数据?