gpt4 book ai didi

eventual-consistency - CloudKit 是强一致性还是最终一致性?

转载 作者:行者123 更新时间:2023-12-04 08:20:01 27 4
gpt4 key购买 nike

官方文档是否在某处谈论 CloudKit 一致性?根据我的测试,它似乎是最终一致的——在写入后立即读取记录可能有效,也可能无效(返回空结果):

CKDatabase *database = [[CKContainer defaultContainer] publicCloudDatabase];
CKRecord *record = [[CKRecord alloc] initWithRecordType:@"Foo"];

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[database saveRecord:record completionHandler:^(CKRecord *record, NSError *error) {
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Foo" predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
[database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
XCTAssertEqualObjects(results, @[], @"Freshly written object not returned by query."); // succeeds
dispatch_semaphore_signal(semaphore);
}];
}];

dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

有没有办法强制执行反射(reflect)所有先前更新的强一致性读取?

最佳答案

两者兼而有之:如果您通过标识符获取记录,则 CloudKit 是高度一致的,但当您通过查询获取记录时,最终会保持一致。

CKModifyRecordsOperation成功返回该记录可通过其标识符立即获取。

但是,服务器需要一些时间来扫描记录的值并更新和分发其搜索索引。在索引完成之前,您不会在任何查询中看到该记录。

关于eventual-consistency - CloudKit 是强一致性还是最终一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156392/

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