java - ndb 可以与 Java 数据存储访问同时使用吗?

标签 java google-app-engine app-engine-ndb

我们正在开发一个 AppEngine 应用程序,该应用程序部分用 Java 编写,部分用 Python 编写(不同版本使用不同的语言)。 我想知道是否可以在Python端使用ndb数据库来访问与Java代码共享的一些模型。

具体来说,当从 Java 端更新实体时,该实体的 ndb 缓存值是否会自动失效?显然,这是必要的,否则 ndb 将返回之前的值。

此外,如果在ndb中写入提交(返回),那么当通过键检索时,该值是否立即在Java端可用?我读到,一旦缓存失效,ndb 写入就会返回,这不能保证可以通过 Java 端的键检索数据。

最佳答案

正如您所怀疑的,由于 Java 数据存储 API 不知道 NDB 的缓存,因此如果您希望 Python 代码立即看到 Java 进程所做的更改,则必须关闭该缓存。可以仅针对特定请求(例如 key.get(use_memcache=False))或仅针对特定模型(添加 _use_memcache = False 作为类变量)关闭缓存。

Java 查看通过 NDB 所做的更改没有问题。我不知道你在哪里读到的,但 NDB 在数据写入数据存储之前返回是不正确的(除非你使用异步写入并且从不等待响应 - 但即便如此,基础设施也会等待在向用户返回 HTTP 响应之前写入成功)。

写入时的实际事件顺序如下:

  1. 通过写入特殊值来锁定内存缓存条目
  2. 将数据写入数据存储区
  3. 删除内存缓存条目使其失效

(内存缓存条目将在下次读取时更新。)

关于java - ndb 可以与 Java 数据存储访问同时使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407589/

相关文章:

database - Google 的 App Engine 是否适合基于事务的系统

python - 从浏览器调用时,mySQL UPDATE 对 GAE 不起作用

python - 从导航台数据存储聚合数据的最佳方式?

java - 回调 Lambda 表达式 + JavaFX

java - RGB 颜色空间到原始颜色名称的映射

java - 创建一个 ImageIcon,它是另一个 ImageIcon 的镜像

java - 如何仅使用 BlobKey 从 blobstore 加载和保存整个文件?

google-app-engine - Appengine - 从 db.Model 转换为 ndb.Model?

python - 如何将临时信息附加到我的 appengine ndb 模型实例?

java - Mono 对象未在 postman 中显示