在 Google Cloud Datastore 与 Google Cloud Bigtable 中存储用户事件历史记录
Posted
技术标签:
【中文标题】在 Google Cloud Datastore 与 Google Cloud Bigtable 中存储用户事件历史记录【英文标题】:Storing User Events History in Google Cloud Datastore vs Google Cloud Bigtable 【发布时间】:2016-10-08 03:15:51 【问题描述】:我正在尝试通过存储在后端的数据库中来跟踪我的 android 应用程序中的用户事件。我正在为我的移动后端使用 Google App Engine。我想弄清楚 Google App Engine 中的 Datastore 是否适合这个。另外,我遇到了 NoSQL 的 Bigtable(计费功能)。
在 Google App Engine 中使用 Cloud Datastore 与 Bigtable 的优缺点是什么?
此外,我找不到自动清除 Datastore 中旧数据(即,早于特定日期等)的方法(我找到了一些使用 cron-job 的建议)。
【问题讨论】:
BigQuery 专为您的应用而设计 @IgorArtamonov -- 不,BigQuery
不适合这个。 BigQuery 非常适合在收集数据之后查询数据,但对于需要频繁写入的数据来说,它不是很好的存储。我已经看到使用 Datastore 完成了此操作,但据我所知,它不提供开箱即用的“清除早于...的数据”功能。您必须自己构建它(也许是cron
的工作来清理它或其他东西)。我猜 Datastore 会更快,因为它不使用传统的 REST api,但我没有任何真实数据来支持这种说法。
是的,我知道这样的问题只会得到基于意见的答案 :) 无论如何,afaik 每个人都在为此使用 BQ(人们需要对这些数据进行临时分析,不只是存储和以后燃烧)
@IgorArtamonov -- 我并不是说 BQ 不适合临时查询数据 -- 只是你不能使用 BQ 来收集数据在(据我所知)。即,当应用中发生点击时,您不能在 BigQuery 表中仅添加一行来表示该点击。在我的团队中,我们收集数据存储区中的数据并每天备份到 CloudStorage(然后将其导入 BigQuery 进行分析)。无论如何,我认为这个问题是在询问数据收集部分,而不是“一旦我拥有数据,我该如何理解它”部分......
你说的“你不能”是什么意思?这绝对是允许的,没有额外的费用或任何东西(afaik 它是免费的应用程序引擎)。我们有一个应用程序可以做到这一点,绝对没问题
【参考方案1】:
Cloud Bigtable 目前不适用于 Google App Engine 标准,但该功能正在积极开发中。 Cloud Bigtable 可以灵活处理当前的 Google App Engine。
要将用户事件导入 Bigtable,您必须使用稍微不同的架构。这是一个关于物联网的讨论,它类似于捕获用户事件,因为它是不变的时间序列数据:https://www.youtube.com/watch?v=8PibIlXmd-Q
Cloud Bigtable 适用于您希望针对大负载优化吞吐量的情况。最小的 Cloud Bigtable 设置允许 30k QPS(每秒查询)。 The cost 与您需要多少吞吐量有关,这会转化为节点数,以及您使用多少存储空间。
综上所述,Cloud Datastore 应该更易于使用。 Cloud Bigtable 是一种更专业的工具,需要一定程度的架构设计和表管理专业知识。
如果您正确设置时间戳,Cloud Bigtable 会自动清除。
您可以在Overview of Cloud Bigtable 中查看更多信息。
注意:这篇文章是在晚上 6 月 18 日编辑的。
【讨论】:
【参考方案2】:您考虑过 Google Analytics(分析)吗? https://developers.google.com/analytics/devguides/collection/android/v4/#set-up-your-project
【讨论】:
以上是关于在 Google Cloud Datastore 与 Google Cloud Bigtable 中存储用户事件历史记录的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Cloud Datastore 上使用动态类型
在 Google Cloud Datastore 与 Google Cloud Bigtable 中存储用户事件历史记录
无法连接到本地 Google Cloud Datastore 模拟器
使用 google Cloud Datastore 在所有用户之间共享数据
Google Cloud Datastore Emulator 如何验证我们的 datastore-index.xml?