问题标签 [data-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.
backup - 如何确保跨数据源的数据一致性
我有一种情况,我有一个授权数据源,每次更新原始数据源时,该服务都会通过网络将数据发送到另一个数据源。我猜类似于异地备份。我正在寻找一种方法来确保辅助数据源与原始数据源一致。
我认为我至少需要检查两件不同的事情。
数据完整性:我相信我可以用校验和样式错误检查来检查。
数据到达目的地:我不确定如何确保数据实际记录在辅助数据源中。由于网络问题或类似问题,数据可能永远无法到达目的地。
是否有任何最佳实践可用于确保辅助数据源与原始数据源具有数据一致性?
cassandra - 如何确保 Cassandra 在不同表上的数据一致性?
我是 Cassandra 的新手,我读过 Cassandra 鼓励数据的非规范化和重复。这让我有点困惑。让我们想象以下场景:
我有一个包含四个表的键空间:A、B、C 和 D。
让我们假设其他表(B,C,D)与表 A 具有相同的结构和相同的数据,只是具有不同的主键,以便响应其他查询。
如果我升级表 A 中的一行,如何确保具有相同数据的其他表中的数据一致性?
python - 从另一个 MongoDB 连接读取您自己的写入
假设我们有两个过程,如下所示
第一个进程进行一些写操作,然后通知第二个进程数据已准备好。然后第二个进程开始读取修改后的数据。第二个进程总是会读取新数据对吗?MongoDB 最初是作为独立服务器(而不是副本集)。所有写入操作都是在确认写入问题 ({w: 1}) 的情况下进行的。不同连接之间的一致性是否有任何保证?我在官方文档中没有找到。
google-cloud-platform - xSpanner:领导者如何将数据同步到副本?
在Spanner:Google 的全球分布式数据库,第 2.1 节中,我们读到:
为了支持复制,每个 spanserver 在每个 tablet 上实现一个 Paxos 状态机。(早期的 Spanner 化身支持每个平板电脑多个 Paxos 状态机,这允许更灵活的复制配置。该设计的复杂性导致我们放弃了它。)
Paxos 状态机用于实现一致复制的映射包。
这个单一的 Paxos 状态机是否类似于“Paxos Made Simple”中提到的 Paxos 状态机?
我很好奇一旦一位新领导人选出了如何学习所有丢失的数据。任何人都可以在 Spanner 中描述 Paxos 组的详细实现吗?
ios - Firebase 中非常接近的事件的数据一致性
我正在构建一个 iOS 游戏。每个游戏室由两个用户构成。两个用户匹配后,我会在两台设备上显示“等待响应”计时器:他们需要在 8 秒内单击“我准备好了”按钮,否则他们都会被踢出房间 + 从 Firebase 中删除.
用户的正确状态(在他们每个人点击“我准备好按钮”之前):
重要说明 - 两个设备上的计时器时间差为 +-2 秒,换句话说 - 一旦设备计时器将在另一个设备之前结束
当用户按下“我准备好了”按钮时,我正在更新state : "userReady"
,并检查其他用户是否也准备好了(观察其state
值)。
如果两个用户都是userReady - 游戏开始。
问题
所以我们已经清楚,在 100% 的情况下,两个设备之间的时间差很小。但是,例如,
User1
单击I'm Ready
的按钮。所以现在User2
有一个ChildUpdate
事件,据他所知 -User2
完全准备好比赛了。
User1 timer
首先结束(事实),所以当他的计时器结束时,User2 timer
将保持1
秒数。 现在,准时User1
刚到零,所以他被踢出房间,并removeValue
在每个用户节点上发送一个事件。当这种情况发生时,在这个非常小的“间隙”,(在结束的零时间User1 timer
,User2
时钟显示的 1 秒(事实)之间 - 他按下准备按钮。比他认为User1
准备好播放,他也是 -比游戏开始玩。
最终结果 -
两名玩家都已从 Firebase 中删除
用户 1 不在房间内
User2开始游戏(他认为他是对手)
我该如何解决这种最终情况?,我已经尝试过startGame
仅在“UpdateChild state”完成时调用函数,但它仍然进入,可能是因为 updateChild 和 removeValue 的顺序?
有什么建议么?非常感谢 Firebase 团队一直以来的努力!!!
javascript - Falcor 模型如何处理对字符串的引用?
在 Javascript 中,字符串是不可变的,对字符串的引用相当于复制字符串 istelf。
在 Falcor 中,我可以使用{$type:"ref", value:[...]}
. Falcor 声称要保持数据一致性,因此如果模型包含引用,它们最终会指向同一个 JS 对象(因此保持一致性变得微不足道)。
来自JSON Graph 上的 Falcor 文档:
JSON Graph 允许将图建模为 JSON,而不会引入重复项。不是将实体多次插入同一消息,而是将具有唯一标识符的每个实体插入到 JSON Graph 对象中的单个全局唯一位置。
但是,我看不出这如何适用于字符串。
假设,我有一个这样的模型:
当我更新时会发生什么foo.text
?也会bar.text
更新吗?如果是,它是如何工作的?
mysql - 正则表达式的 MySQL 可查询字段约束
除了数据类型之外VARCHAR(255)
,我还想通过正则表达式为数据添加约束,例如[a-zA-Z ]
.
我希望能够查询正则表达式,例如如何查询information_schema
.
我看过一些相关的帖子,但不完全是我想要的。我见过:将 varchar() 列限制为特定值?它显示了如何使用约束,我在这里通过触发器看到:Is it possible to Enforce Data Checking in MySQL using Regular expression
RegEx 可以用作约束并查询这些约束吗?如果是这样,怎么做?
java - 在 `Counter` 示例类中,线程干扰实际上是如何发生的?
我正在尝试学习线程干扰的概念,并在 Java Tutorial Oracle 中遇到了以下示例:
Oracle 教程提到,如果有两个线程尝试访问变量c
,可能会导致线程干扰,其中一个线程所做的更改不会被另一个线程看到。
但是,它没有提供任何代码来实际解释这个概念。有人可以提供一个基于Counter
该类的代码示例来演示线程干扰是如何实际发生的吗?
postgresql - 如何检查某个day_id是否包含在给定的时间间隔day_from到day_to内?
我是一个相当缺乏经验的 SQL 开发人员,但我正在尽我所能拥有一个一致的数据库。我寻求解决的问题可以在系统的上层完成,但我知道最好在它们所属的地方处理类似的事情:在数据库层。
因此,我所拥有的是一张表,我在其中存储可能会或可能不会在定义的日期重复的优惠:
这是我的问题:
day_id
2016-03-01
2 对to没有意义,2016-03-01
因为 2016 年 3 月 1 日或 3 月是 a TUESDAY = 3
,而不是 a MONDAY = 2
。
我希望能够将任意间隔存储到此表中,但我必须确保它们有意义。我正在寻找的是一种检查给定间隔是否valid_from_day
包含valid_until_day
给定日期的方法day_id
。这实际上应该是一个简单的检查,但我不确定我是否可以CONSTRAINT
为此使用 a ,或者我是否必须为此使用 aTRIGGER
以及它的外观。
database - 多个数据库的事务回滚
我最近在一次采访中被问到一个问题。问题是:
我有两个不同的数据库,我需要更新两个数据库上的表。我们想要数据一致性。我更新了第一个数据库中的表,然后在更新第二个数据库时出现错误。那么在这种情况下我能做些什么呢?
我想把所有的东西都放在一个事务中,如果我有一个例外,我坚持我可以回滚。但他们说,由于有 2 个不同的数据库,不可能将它们放在同一个事务中。我不确定我是否理解正确,但我找不到其他解决方案。
现在我在问什么。
1)是否可以在一个事务中对两个不同的数据库进行两次查询?正如我在一些帖子中所读到的那样,这是可能的,但在他们说了什么之后我无法确定。
2)如果无法在事务中管理它们,我该如何回滚第一个数据库中的更改。