从 google appengine 数据存储迁移到 google cloud bigtable 的最佳方法是啥?

Posted

技术标签:

【中文标题】从 google appengine 数据存储迁移到 google cloud bigtable 的最佳方法是啥?【英文标题】:What is the best way to migrate from google appengine datastore to google cloud bigtable?从 google appengine 数据存储迁移到 google cloud bigtable 的最佳方法是什么? 【发布时间】:2015-07-16 15:28:50 【问题描述】:

我有一个 appengine 数据存储,我想迁移到 google cloud bigtable。 最好的方法是什么?

感谢您的回答, 雅妮丝

【问题讨论】:

【参考方案1】:

这些存储系统完全不同。

架构:

Cloud Datastore 是一个无架构的文档数据库,而 Cloud Bigtable 是具有架构的宽列数据库(简单架构,但架构静止)

可用性和复制:

Cloud Datastore 是多区域(99.95% 可用性 SLA)为您处理复制 Cloud Bigtable 是区域性的(99.9% 可用性 SLA),您需要自己处理复制

工作负载:

Cloud Datastore 专为运营工作负载而设计,可处理实时用户路径请求 Cloud Bigtable 专为分析工作负载而设计,可处理非关键路径请求,例如报告或后台查询。

因此,您需要:

分析您在 Cloud Datastore 中的数据以确定您在 Cloud Bigtable 中需要的架构 对于重要的数据模型,确定您将如何修改您的应用来处理它(例如复合索引) 确定可用性和复制设置是否满足或需要,在需要时在顶部构建基础架构以进行处理(不推荐) 编写作业来移动数据,可能会使用 Cloud Dataflow 之类的工具

一般来说,除非您满足非常具体的要求,否则您不会希望从 Datastore 迁移到 Bigtable:

仅将数据存储用作键值存储 可以容忍区域数据库 正在运行分析工作负载

【讨论】:

【参考方案2】:

首先查看Java Managed VM sample。 JSON 代码可能是最有趣的。 (由于 gRPC 的限制,Cloud Bigtable 还不能与常规 GAE 和 Java 或 Python 一起使用)。

Bigtable 每行有一个键,如果您的数据库设计可以使用它,那么它的转换相当容易。对于其他类型,您可能需要创建 MapReduce 作业。

【讨论】:

“由于 gRPC 的限制,Cloud Bigtable 还不能与 Java 或 Python 的常规 GAE 一起使用”哇,很高兴知道。 Go 应用引擎呢?这个限制是否记录在任何地方?如果是这样,我完全错过了。我注意到这些库文档 (cloud.google.com/bigtable/docs/go/reference) 说“如果您的程序在 Google App Engine 或 Google Compute Engine 上运行,则使用应用程序默认凭据是最简单的选择。”这当然意味着支持 GAE。 它需要一个自定义运行时,这意味着您无法在本地调试,但您可以使用 GAE 运行——我将在今天或明天更新说明和示例。 代码示例将是 awesome。我假设那些会出现here?我看到已经有一个 ManagedVM 示例,但没有一个普通的 GAE 示例。 见***.com/questions/31101156/…希望今晚能完成。

以上是关于从 google appengine 数据存储迁移到 google cloud bigtable 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌的AppEngine数据存储的选择吗?

Google Appengine 数据存储的层次结构优化

是否可以为 appengine 数据存储实体获取 Google 电子表格的数据源 URL?

Google Cloud DataStore 说明

为Google Cloud AppEngine配置MemSql

在 AppEngine 中思考