Google cloud platform Firestore数据存储模式写入/读取一致性

Google cloud platform Firestore数据存储模式写入/读取一致性,google-cloud-platform,google-cloud-firestore,google-cloud-datastore,Google Cloud Platform,Google Cloud Firestore,Google Cloud Datastore,我有一个使用CloudFireStore数据存储模式创建的项目 我使用com.google.cloud.datastore.datastore.put执行写操作,而不使用事务,在执行写操作之后,我使用com.google.cloud.datastore.datastore.get对刚刚写入的记录执行读操作。但就我所见,在某些情况下,读取操作并不仅仅返回写值 这看起来像是最终的一致性,但根据这种“云Firestore数据存储模式”,它是强一致的数据库 如果在没有事务的情况下执行写操作,是否可能写操

我有一个使用CloudFireStore数据存储模式创建的项目

我使用
com.google.cloud.datastore.datastore.put
执行写操作,而不使用事务,在执行写操作之后,我使用
com.google.cloud.datastore.datastore.get
对刚刚写入的记录执行读操作。但就我所见,在某些情况下,读取操作并不仅仅返回写值

这看起来像是最终的一致性,但根据这种“云Firestore数据存储模式”,它是强一致的数据库

如果在没有事务的情况下执行写操作,是否可能写操作不一致?根据本文,事务是可选的,我没有发现使Firestore数据存储具有强一致性所需的任何信息


是否需要设置使强一致性工作的内容?

因为您没有使用事务,所以有可能在写入操作完成之前执行读取操作。这可能是因为通信量大或写容量大。使用事务将防止这种情况发生,因为您只能在写入操作完成后才允许读取操作运行

因为您没有使用事务,所以有可能在写入操作完成之前执行读取操作。这可能是因为通信量大或写容量大。使用事务将防止这种情况发生,因为您只能在写入操作完成后才允许读取操作运行

您是否正在检查put过程中返回的任何错误?您是否确保从put返回的密钥始终用于get?是的,我正在检查错误,没有收到任何错误。是的,我确信我使用的是正确的密钥。您是否正在等待写入操作完成?它应该是非常一致的。请提供代码。您是否正在检查put过程中返回的任何错误?您是否确保从put返回的密钥始终用于get?是的,我正在检查错误,没有收到任何错误。是的,我确信我使用的是正确的密钥。您是否正在等待写入操作完成?它应该是非常一致的。请提供代码。这是否意味着Firestore数据存储模式在没有写+读操作事务的情况下不具有强一致性?因为据我所知,如果在
write
之后执行
read
,那么它们的执行应该是一致的,
read
应该得到更新的值。我不确定你的写入量到底有多大,或者你的查询逻辑化程度如何。这些可能会影响你的一致性。但要回答您的问题,Firestore数据存储模式在没有事务的情况下是非常一致的。但是为了确保你能读到你在连续操作中所写的内容,请在每个操作中使用事务。@MaximusMacdonald你的回答对我来说没有多大意义。如果写入的大小影响读取一致性,那么它就不是强一致性。@user239558如果您在数据存储模式下使用Cloud Firestore,那么您的所有查询都具有强一致性。强一致性查询只保证写入一致性,而不保证读取一致性。换言之,您可以随心所欲地编写数据,而且数据总是会发生变化。但如果不使用事务,即使具有很强的一致性,您也可能无法看到最近的更改。这是否意味着Firestore数据存储模式在没有用于写+读操作的事务的情况下不具有很强的一致性?因为据我所知,如果在
write
之后执行
read
,那么它们的执行应该是一致的,
read
应该得到更新的值。我不确定你的写入量到底有多大,或者你的查询逻辑化程度如何。这些可能会影响你的一致性。但要回答您的问题,Firestore数据存储模式在没有事务的情况下是非常一致的。但是为了确保你能读到你在连续操作中所写的内容,请在每个操作中使用事务。@MaximusMacdonald你的回答对我来说没有多大意义。如果写入的大小影响读取一致性,那么它就不是强一致性。@user239558如果您在数据存储模式下使用Cloud Firestore,那么您的所有查询都具有强一致性。强一致性查询只保证写入一致性,而不保证读取一致性。换言之,您可以随心所欲地编写数据,而且数据总是会发生变化。但是如果不使用事务,即使具有很强的一致性,也可能无法看到最近的更改。