从MongoDB到Google Cloud Datastore

时间:2017-07-05 15:18:27

标签: mongodb google-cloud-datastore

我正在弄清楚将现有的应用程序迁移到Google Cloud Datastore是否容易。目前它存在于MongoDB中,因此从NoSQL到NoSQL,但它似乎并不容易。一个例子。 我的应用程序使用对象层次结构,这就是我喜欢MongoDB的原因,因为它的优雅:

{
"_id" : "31851460-7052-4c89-ab51-8941eb5bdc7g",
"_status" : "PRIV",
"_active" : true,
"emails" : [
  { "id" : 1, "email" : "anexample@gmail.com", "_hash" : "1514e2c9e71318e5", "_objecttype" : "EmailObj" },
  { "id" : 1, "email" : "asecondexample@gmail.com", "_hash" : "78687668871318e7", "_objecttype" : "EmailObj" }
  ],
"numbers": [
...
],
"socialnetworks": [
...
],
"settings": [
...
]
}

在转向Google Cloud Datastore时,我可以将电子邮件,数字,社交网络,设置等保存为字符串,但这会破坏使用JSON的全部目的,因为我将失去查询的机会。 我有很多表格,我有这个问题。

我看到的唯一解决方案是将所有这些移动到不同的实体(表格)。但在这种情况下,查询量将增加,因此也会增加成本。 其他解决方案可能只保留ID数组,并在Google Cloud Datoreore上执行关键值,这些解决方案是免费的(可能是流量除外)。

这里最好的方法是什么?

2 个答案:

答案 0 :(得分:5)

从Mongo过渡到Google的数据存储区并不是一件轻而易举的事。其中很大一部分原因是Datastore(虽然技术上仍然是NoSQL)是一个柱状数据库,而Mongo是一个传统的NoSQL。正如SQL数据库需要与NoSQL数据库不同的思维模式一样,列式数据库需要再次使用不同的思维模式。

从NoSQL到数据存储的过渡需要对数据进行全面重组。

答案 1 :(得分:0)

您不必将所有内容保存为字符串。数据存储区具有所谓的“嵌入实体”,它在Mongo中非常类似于。只是一个完整的对象变成了另一个对象。

检查一些像Objectify这样的库,可以很轻松地与数据存储区进行交互。