如何用数据存储而不是数据库来思考?

2024-01-10

例如,Google App Engine 使用 Google Datastore(而不是标准数据库)来存储数据。有人对使用 Google Datastore 而不是数据库有什么建议吗?看来我已经训练自己的思维 100% 思考直接映射到表结构的对象关系,现在很难看到任何不同的东西。我可以理解 Google Datastore 的一些好处(例如性能和分发数据的能力),但牺牲了一些良好的数据库功能(例如联接)。

使用过 Google Datastore 或 BigTable 的人对于使用它们有什么好的建议吗?


与“传统”关系数据库相比,App Engine 数据存储有两点需要习惯:

  • 数据存储区不区分插入和更新。当您对实体调用 put() 时,该实体将以其唯一键存储到数据存储中,并且具有该键的任何内容都会被覆盖。基本上,数据存储中的每个实体类型都像一个巨大的地图或排序列表。
  • 正如您所提到的,查询受到的限制要大得多。首先,没有加入。

需要认识到的关键一点——以及这些差异背后的原因——是 Bigtable 基本上就像一个巨大的有序字典。因此,放置操作只是设置给定键的值 - 无论该键之前的任何值如何,而获取操作仅限于获取单个键或连续范围的键。使用索引可以实现更复杂的查询,索引基本上只是它们自己的表,允许您在连续范围上扫描时实现更复杂的查询。

一旦您掌握了这一点,您就具备了了解数据存储的功能和限制所需的基本知识。看似武断的限制可能更有意义。

这里的关键是,尽管这些是对您在关系数据库中可以执行的操作的限制,但这些相同的限制使得扩展到 Bigtable 设计处理的那种规模变得切实可行。您根本无法执行那种在纸上看起来不错但在 SQL 数据库中却慢得要命的查询。

就如何改变数据的表示方式而言,最重要的是预先计算。不要在查询时进行连接,而是预先计算数据并尽可能将其存储在数据存储中。如果您想选择随机记录,请生成一个随机数并将其与每条记录一起存储。有一本关于此类提示和技巧的完整食谱here https://web.archive.org/web/20090416113704/http://appengine-cookbook.appspot.com/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用数据存储而不是数据库来思考? 的相关文章

  • 在没有数据库的情况下运行 WordPress

    我一直在寻找一种将 WordPress 配置为仅使用文件系统数据库运行的方法 有点像 Java 中或内存中的 H2 任何人 仅用于演示目的 不可能 Wordpress 的要求之一是 MySQL http wordpress org abou
  • 高负载应用程序的数据库可扩展性?

    我见过一些应用程序拥有集群 Web 服务器 例如 10 到 20 个服务器 以具有可扩展性 可以在其中分发 在网络服务器之间加载 但我总是看到所有网络服务器都使用单个数据库 现在考虑任何电子商务或铁路 Web 应用程序 其中有数百万用户在任
  • 将数据库表转换为 XML 模式文件

    我正在使用 SQL Server 2005 是否有任何命令或 GUI 工具 例如 SQL Server Management Studio 中的任何菜单 功能 可以将数据库表转换为 XML 架构文件 xsd 提前致谢 乔治 我找到了这个 试
  • 单笔交易与多笔交易[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 直接从表中选择和视图之间的区别

    直接从表中选择数据或从视图中选择数据有什么区别 每一种的最佳用途是什么 根据微软的说法 如果你使用的话会有性能优势indexedSQL Server 2000 2005 2008 中的视图 索引视图可以通过以下方式提高查询性能1 可以预先计
  • 如何在 devserver 上使用 Oauth 测试 Cloud Endpoints

    我的应用程序使用 Oauthed Cloud Endpoints 并且在生产中运行良好 我的问题是 在本地开发服务器上 我的 User 用户始终设置为 电子邮件受保护 cdn cgi l email protection 即使我已经完成了通
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • 云存储 API 的错误导入“系统调用”

    我正在按照以下说明进行操作https cloud google com appengine docs go googlecloudstorageclient download开始将一些代码从现已弃用的文件 API 迁移到新的 Cloud S
  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器
  • Google App Engine 的优点和缺点 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 2009 年 8 月 21 日更新列表 帮助我列出在 Google App Engine 上构建应用程序的所有优点和缺点 Pros 无需购买服务
  • 尽管我没有使用 AppEngine 或 Datastore,但我无法在项目上启用 firestore

    我正在尝试在一个项目上激活 firestore 但我没有使用 AppEngine 或 Datastore 并且出现此错误消息 无法为此项目启用 Firestore 目前无法在已使用 Cloud Datastore 或 App Engine
  • App Engine 接受编码

    在APP Engine API中 提到如果请求带有 Accept Encoding 设置后 它会自动压缩响应 但是当我查看请求时 标头不存在 但在浏览器中 它已设置 当我尝试显式设置标题时 使用jQuery ajax http api jq
  • 如何查找所有mysql表之间的所有关系?

    如何找到MySQL所有表之间的所有关系 例如 如果我想知道大约有 100 个表的数据库中表的关系 有什么办法知道这个吗 从编程角度来说 更好的方法是从以下位置收集数据 INFORMATION SCHEMA KEY COLUMN USAGE表
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • {“error”:“服务签名名称:在签名定义中找不到“serving_default””}

    我使用GCP 谷歌云平台 来训练我的模型 我可以导出导出的模型 我使用了该模型并使用了服务 1 8 CPU 的 Tensorflow 的本地 docker 映像 我得到以下结果作为 REST 后调用的输出 错误 服务签名名称 serving
  • 在 GQL 中计算结果的最佳方法是什么?

    我认为进行计数的一种方法是这样的 foo db GqlQuery SELECT FROM bar WHERE baz baz my count foo count 我不喜欢的是我的计数将被限制为最大值 1000 并且我的查询可能会很慢 有人
  • App Engine Flex 服务正在运行但找不到

    如何关闭我已删除且无法访问的 App Engine Flex 服务 昨天 我部署了一项新的 App Engine Flex 服务 然后将其删除 无论出于何种原因 该服务在一天后仍在运行 我可以通过查看日志查看器来确认它仍在运行并生成日志 当
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 在数据库中存储类型时的最大 MIMEType 长度

    人们在数据库中使用什么作为 MIMEType 字段的长度 到目前为止我们看到的最长的是 72 字节 application vnd openxmlformats officedocument wordprocessingml documen
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处

随机推荐