问题标签 [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.
testing - 如何在嵌入式系统上检查堆和堆栈 RAM 的一致性
我正在使用 LEON2 处理器 (Sparc V8) 进行项目。处理器使用 8Mbytes 的 RAM,需要在我的启动自检期间进行一致性检查。我的问题是,我的 Boot 显然将一小部分 RAM 用于其 Heap/BSS/Stack,我无法在不崩溃应用程序的情况下对其进行修改。我的 RAM 测试非常简单,将某个值写入所有 RAM 地址,然后将它们读回以确保 RAM 芯片可以被寻址。
此方法可用于大多数可用 RAM,但我如何安全地检查剩余 RAM 的一致性?
cassandra - Cassandra 中的 Read-your-own-writes 一致性
Read-your-own-writes 一致性是对所谓的最终一致性的巨大改进:如果我更改了我的个人资料图片,我不在乎其他人是否在一分钟后看到更改,但如果在页面重新加载后我仍然看到,这看起来很奇怪旧的。
这可以在 Cassandra 中实现,而无需对多个节点进行完整的读取检查吗?
在读取未指定的数据时使用ConsistencyLevel.QUORUM
很好,并且实际上正在读取 n>1 个节点。但是,当客户端在写入时从同一个节点读取(并且实际上使用相同的连接),这可能会很浪费 - 在这种情况下,某些数据库将始终确保返回以前写入的(我的)数据,而不是返回一些旧的数据。使用ConsistencyLevel.ONE
并不能确保这一点,并假设它会导致竞争条件。一些测试表明:http ://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/per-connection-quot-read-after-my-write-quot-consistency-td6018377.html
我对这种情况的假设设置是 2 个节点,复制因子 2,读取级别 1,写入级别 1。这会导致最终的一致性,但我希望读取时读取你自己的写入一致性。
如果我只在“我的”数据上保持一致就足够了,我认为使用 3 个节点,RF=3,RL=quorum 和 WL=quorum 会导致浪费的读取请求。
// seo:也称为:会话一致性、read-after-my-write 一致性
mysql - 客户在线下单时如何处理DB中的价格变化?
我有一个Product
数据库表,其中包含product_id
、price
和等列inventory_count
。
用户点击以特定价格购买特定产品。我的程序会生成一个确认页面,列出产品和价格。一切都很好,用户点击“确认”。我的程序更新该inventory_count
产品的 . 并向用户的信用卡收取产品price
.
但在确认页面生成后,用户点击“确认”之前,该产品的价格发生了变化。因此,用户可能在确认页面中看到了 10 美元的价格,但在他单击“确认”后price
,产品表中的价格已更改为 11 美元,这就是他将被收取的费用。
处理这种情况的最佳方法是什么?如果相关,我正在使用 MySQL 和 Python。
amazon-s3 - 最终一致性和消息传递
我遇到了这个问题,到目前为止,似乎唯一的解决方案是更强的一致性模型。该服务是提供最终一致性的 Amazon S3。我们将其用作 blob 存储后端。
问题是,我们将消息传递模式引入了我们的应用程序,我们喜欢它。毫无疑问,它的好处。但是,它似乎需要更强的一致性。设想:
- 子系统从用户那里获取数据
- 数据保存到 S3
- 消息已发送
- 消息被另一个子系统接收
- 从 S3 读取数据
- ...蟋蟀。这是旧数据吗?有时是的。
所以。显而易见,我们尝试在消息中发送数据,以避免从 S3 读取不一致。但这样做很糟糕,消息变得不必要地大,当接收器太忙或出现故障时,在已经有新数据可用的情况下接收消息较晚,它就会失败。
是否有解决方案,或者我们是否真的需要为一些更一致的后端(如 RDBMS 或 MongoDB)转储 S3?
php - 如何避免和记录一些意想不到的事情?
例如,用户创建一个产品,并将其分配到一个类别中。
在类别中,我们有一些记录:
并且用户创建产品,产品需要分配类别,用户执行以下操作:
流程将像这样工作:
但是在完成第 1 步检查之后,以及在 2b 开始之前,是否有任何机会。管理员删除电话类别。如果发生这种情况,数据库将插入一条没有 cat id watch 的记录。数据库将具有以下内容:
但是有这样的记录:
如果有机会这样做,我该如何避免这种情况?谢谢你。
(使用 php 和 mysql 与 codeigniter)
cassandra - 与 Cassandra 数据模型的事务
根据 CAP 理论,Cassandra 只能具有最终一致性。更糟糕的是,如果我们在一个请求中进行多次读取和写入,而没有得到适当的处理,我们甚至可能会失去逻辑一致性。换句话说,如果我们做事快,我们可能做错了。
同时,为 Cassandra 设计数据模型的最佳实践是考虑我们将要进行的查询,然后向其中添加 CF。这样,添加/更新一个实体在很多情况下意味着更新许多视图/CF。没有原子事务特性,就很难做好。但是有了它,我们又失去了 A 和 P 部分。
我不认为这与很多人有关,因此我想知道为什么。
- 这是因为我们总能找到一种方法来设计我们的数据模型以避免在一个会话中进行多次读取和写入吗?
- 这是因为我们可以忽略“正确”的部分吗?
- 在实际实践中,我们是否总是在中间的某个地方有 ACID 功能?我的意思是可能在应用层实现或添加一个中间件来处理它?
mongodb - NoSQL:MongoDB 或 BigTable 并不总是“可用”意味着什么
阅读 Nathan Hurst 的NoSQL 系统视觉指南,他包含了CAP
三角形:
C
坚持A
可用性P
工件公差
SQL Server 是一个AC
系统,MongoDB 是一个CP
系统。
这些定义来自加州大学伯克利分校教授 Eric Brewer,以及他在 PODC 2000(分布式计算原理)上的演讲:
可用性
可用性意味着——服务是可用的(完全运行或不如上所述)。当您购买这本书时,您希望得到回应,而不是一些关于网站无法交流的浏览器消息。Gilbert & Lynch 在他们的 CAP 定理证明中提出了一个很好的观点,即可用性通常会在您最需要它时抛弃您——站点往往会在繁忙时期出现故障,这正是因为它们很忙。可用但未被访问的服务对任何人都没有好处。
在 MongoDB 或 BigTable 的上下文中,系统不“可用”是什么意思?
您是否去连接(例如通过 TCP/IP),但服务器没有响应?您是否尝试执行查询,但查询从不返回 - 或返回错误?
不可用是什么意思?
database - 事务(对我来说在 MySQL 中)在并发运行时表现如何?
这是我的场景:
我有表 A,它有 4 行(id、col1、col2、col3),最后 3 行有一个唯一索引(id 是主键)。假设有 2 个用户:用户 Foo 和用户 Bar。如果 Foo 和 Bar 都启动了一个在表 A 上插入许多行的事务,同时他们提交了他们的事务,那么表是否可能存在 UNIQUE 索引的不一致?
换句话说,如果一个事务是原子的(而且确实如此),这是否意味着只要它运行,就不会运行其他可能对第一个事务一致性造成风险的事务?
提前致谢!
caching - Cache consistency when using memcached and a rdbms like MySQL
I have taken a database class this semester and we are studying about maintaining cache consistency between the RDBMS and a cache server such as memcached. The consistency issues arise when there are race conditions. For example:
- Suppose I do a
get(key)
from the cache and there is a cache miss. Because I get a cache miss, I fetch the data from the database, and then do aput(key,value)
into the cache. - But, a race condition might happen, where some other user might delete the data I fetched from the database. This delete might happen before I do a
put
into the cache.
Thus, ideally the put
into the cache should not happen, since the data is longer present in the database.
If the cache entry has a TTL, the entry in the cache might expire. But still, there is a window where the data in the cache is inconsistent with the database.
I have been searching for articles/research papers which speak about this kind of issues. But, I could not find any useful resources.