datastore_3使用Google Cloud Datastore的有用技巧。

datastore

Google Cloud Datastore是一种托管的,无模式的,高度可扩展的NoSql数据库,对于希望减少使用量增长的数据库规模的开发人员特别有用。 它建立在Google的Bigtable Database之上,并且具有许多强大的功能,您可能要在下一个项目中考虑它,但是在这样做之前,这里有一些快速提示,您应该知道这些提示,以避免遇到一些陷阱。使用此数据库。

  1. Google Cloud Datastore不是SQL,它甚至没有关闭。

Google Cloud Datastore是一个NOSQL数据库,但是当人们和文档试图解释这一概念时,他们倾向于将其与SQL进行比较,例如,可以将实体与表进行比较,将其属性与列进行比较,因为许多开发人员已经熟悉SQL。 另外,数据存储区还具有强大的查询引擎,可让您查询数据甚至对数据进行相应排序,这可能使开发人员假设他们可以像在SQL中一样对数据进行建模。 但事实是,Datastore的基础实现与SQL完全不同,这是一些关键区别。

I. 没有自动递增主键 :与SQL不同,SQL通常不会随每次写入而递增,而在Google Cloud Datastore中,实体是由KEY标识的,该KEY通过其Kind和标识符标识符是数据存储为您自动生成的ID,或者是密钥名称属性 ,您可以将其提供为数据存储的标识符,该属性是一个字符串,您确定该字符串对于该类型的每个实体都是唯一的。

注意:标识符仅在一种内唯一,并且在创建实体后不能更改。

二。 无外键约束 :在数据存储区中,您可以使用其他实体的来引用其他实体 但是在编写或删除这些实体时不会进行数据完整性检查,因此您不能确保它们所引用的实体确实存在。 您在这里必须小心,因为这是极有可能发生数据完整性问题的点。

三, 数据存储区不强制唯一性 :除了上面(I)中提到的标识符外,Google Cloud Datastore不允许您为实体中的任何其他字段指定唯一性,如果您想确保唯一性,则必须自己实现在编写实体时执行读取。

2. 尽早知道要索引什么:

Google Cloud Datastore利用索引来辅助查询,对实体中的字段建立索引对于在数据存储区中进行查询非常重要,实际上,如果您不对字段建立索引并尝试过滤具有该字段的查询,则不会获得任何结果即使查询与结果匹配,这也是因为数据存储区仅在查询时查找索引,因此它不允许您像其他数据库一样进行全表扫描以获取查询结果。

数据存储中有两种类型的索引:基本索引和复合索引。基本索引用于单个属性字段,而当您打算按多个字段进行过滤时,则使用复合索引。

重要的是要知道要对哪些字段进行早期索引,因为建立索引可能会花费很长时间,尤其是当数据库中有很多实体时。

实际上,对于单个属性索引,它们不是在为索引建立索引后自动构建的,索引是在每次写入时构建的,因此,如果您有一百万个这种类型的实体,并且打算对一个字段进行索引,则必须阅读每个索引。 1百万个实体并将其写回以记录索引,这可能会非常昂贵。 同样,当您尝试使用尚未建立索引的复合字段进行查询时,即使您已为这些字段建立了索引,也未建立索引,但仍会出现错误。

因此,为避免这些问题,请尝试考虑要在查询中使用的字段,并尽早对其进行索引。

3. 如何计数实体(带阴影的计数器):与SQL不同,您可以轻松使用查询

select count(*)

要获取表中的项目数,数据存储区没有任何这样的语法,您必须使用其他实体自行记录您的实体数,因此,如果您有一个名为User的实体,并且希望知道其中有多少个用户您的数据库,那么您需要让另一个实体称为UserCount。 UserCount实体将具有一个数字字段,该字段将在用户每次写入数据库时​​增加,而在从数据库中删除用户时减少。 这相当简单,但是当计数需要频繁更新(例如每秒20次)时,可能会出现问题。 这可能会导致DataStore争用错误 ,这意味着每个并行更新项目的请求都无法在其请求超时之前完成。 使用分片计数器可以解决此问题 这仅意味着创建该实体(碎片)的片段,并在需要更新计数时随机选择每个实体进行更新,这将降低发生数据存储争用错误的可能性。

注意:分片数量越多,出现数据争用错误的可能性就越小,谷歌云样本就如何实现分片计数器提供了一个不错的示例。

因此,尽管Datastore保证了可伸缩性,但也有它的缺点,尤其是在数据完整性和查询方面,它还有一些缺点,在将其用于项目之前,应考虑这些因素。

如果您想分享其他技巧,可以在下面的评论中添加,谢谢

翻译自: https://hackernoon.com/3-useful-tips-when-using-google-cloud-datastore-832c726e6c92

datastore

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值