热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

datastore_3使用GoogleCloudDatastore的有用技巧。

datastoreGoogleCloudDatastore是一种托管的,无模式的,高度可扩展的NoSql数据库,对于希望减少使用量增长的数

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



推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
author-avatar
百变精灵_tb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有