Google数据存储-在没有热点的情况下对创建日期字段进行索引

2024-03-29

我正在使用 Google Datastore,需要查询它来检索一些实体。这些实体需要按从最新到最旧的顺序排序。我的第一个想法是拥有一个包含时间戳的 date_created 属性。然后我会索引该字段并对该字段进行排序。这种方法的问题是它会导致数据库中出现热点(https://cloud.google.com/datastore/docs/best-practices https://cloud.google.com/datastore/docs/best-practices).

不要为具有单调递增值的属性(例如 NOW() 时间戳)建立索引。维护此类索引可能会导致出现热点,从而影响具有高读写速率的应用程序的 Cloud Datastore 延迟。

显然,按日期对数据进行排序是对数据库执行的最常见的排序。如果我无法索引时间戳,是否有另一种方法可以实现在没有热点的情况下将我的查询从最新到最旧进行排序?


正如您所注意到的,索引单调变化的值不会扩展,并且可能导致热点。您是否可能受到此影响取决于您的特定使用情况。

作为一般规则,此模式的热点点是每秒 500 次写入。如果您知道自己肯定会处于这种状态,那么您可能不需要担心。

如果您确实需要每秒超过 500 次写入,但有上限,则可以尝试分片方法。基本上,如果每秒写入次数上限为 x,则 n =上限(x/500),其中 n 是分片数量。当您写入时间戳时,请在开头添加 random(1, n) 。这将创建 n 个随机密钥范围,每个密钥范围每秒最多可执行 500 次写入。当您查询数据时,您需要发出 n 个查询并对结果流进行一些客户端合并。

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

Google数据存储-在没有热点的情况下对创建日期字段进行索引 的相关文章

随机推荐

  • $(window).height() 与 $(document).height

    我遇到了高度错误的问题 window height 并得到了类似的问题here https stackoverflow com questions 10569301 why is window height so wrong 就我而言 当我
  • 在 Java 中写入文本文件时插入新行

    我对学习 FileWriter 有一点点困惑 最终目标是编写一个程序 该程序将 生成 一个 bat 文件 该文件将由启动 jar 的批处理代码执行 问题是 我不知道如何确保每个 FileWriter write 将打印在新行上 有什么想法吗
  • 如何向下滚动 - JQuery

    我不是程序员 但我使用下面的代码将页面滚动到顶部 我该如何调整它以向下滚动 a class btnMedio href img src http desmond imageshack us Himg41 scaled php server
  • 如何在 Rails 之外的 ruby​​ 脚本中使用 ActiveRecord?

    我有一个小的 ruby 脚本 我想在其中使用 ActiveRecord 轻松访问数据库模型 最好的方法是什么 require active record Change the following to reflect your databa
  • WAR 中的安全配置文件放在哪里?

    我正在尝试在我的 WAR 中使用 JAAS 进行身份验证 我明白我的配置文件 http download oracle com javase 6 docs api javax security auth login Configuratio
  • 扩展初始值设定项列表仅适用于

    我对 C 很陌生 我在阅读错误时遇到了困难 我能够消除其中的大部分错误 但我只剩下一些错误 我请求对它们的帮助 这是程序 include
  • “数组下标不是整数”c

    我正在尝试使用 for 循环进行矩阵乘法 但收到错误 数组下标不是整数 请问我可以得到一些帮助吗 include
  • Android Proguard 警告:无法写入资源(重复的 zip 条目)

    我启用了 proguard 并得到 Warning can t write resource META INF LICENSE txt Duplicate zip entry commons io 2 4 jar META INF LICE
  • Singleton 对象 - 在静态块中或在 getInstance() 中;应该使用哪个

    下面是两种实现单例的方法 各自的优点和缺点是什么 静态初始化 class Singleton private Singleton instance static instance new Singleton public Singleton
  • Facebook JSON 字符串的反序列化?

    我无法从运行 fql 查询后生成的 JSON 字符串中提取 facebook 用户的 work history 从属关系和 current loc 我已经上过这门课 public class Data public CurrentLocat
  • UI自动化切换窗口

    我注意到 setforegroundwindow 可能非常不稳定 无论你怎么做 我注意到 在可能的情况下使用 UIAutomation 似乎可以改善情况 例如 获取 WindowPattern 并使用类似以下内容 windowPattern
  • .setAttribute 与 .attribute= 背后发生了什么?

    描述 我正在使用简单javascript设置 a 的值input 我使用了多种看似相同但结果不同的方法 这是一个例子 HTML
  • Spring MVC 请求映射不起作用

    我想用一个控制器创建简单的 hello world 应用程序 没有任何类的普通 spring 可以工作 但是当我添加控制器 更改 xml 文件 按照分步教程 并尝试打开 localhost project hello html 时 它会抛出
  • 从 Android 应用程序中的本机库访问根文件(/system、/dev)

    我有一个原生库 它将尝试在 Android 设备的 system dev 文件夹中创建文件 使用 open fopen 等 现在我已经使用 JNI 和 NDK 将库与 A ndroid 应用程序集成 但在根文件夹中创建文件失败 我尝试从本机
  • 可以使用 Flutter 复制 iOS App Store 转换吗?

    是否可以使用Flutter复制iOS App Store的转场效果 我尝试通过将两个标签放入两个小部件的根布局中来使用英雄动画 但动画看起来很卡顿或者不是我所期望的 但这样做的好处是 当我使用 MaterialPageRoute 时 我可以
  • Logger 和 System.out.println 的输出不按顺序

    我想要记录器的输出inputstream在 Eclipse 控制台中 但每次执行的时候 结果的顺序总是不一样 我有几个类 其中一个主类可以调用其他类 并且我将记录器放入每个方法中进行调试 我将结果打印到控制台 我也有检索的方法inputst
  • 在 javascript 中使用 .css() 设置细边框

    因此 当用户单击页面上的按钮时 我试图在按钮周围设置边框 要设置处理程序 我要 reportButtons click function change border color 我尝试了两种方法来更改其中按钮的边框颜色 第一种方法是使用 c
  • Asp.net mvc 表单发布和分页

    我有一个操作方法 搜索 在发布表单时调用该方法 根据表单的发布值 可能有数千个搜索结果 我想逐页显示搜索视图 但如何知道第一次发布的表单值是什么 这样我就可以通过传递页面参数来调用搜索视图 最好的方法是接受系统的无状态性 每次渲染视图时 请
  • 如何将 C# 转换为 C++ [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有人可以帮我将 C 转换为 C 吗 这是一个例子 using System using System Net using System
  • Google数据存储-在没有热点的情况下对创建日期字段进行索引

    我正在使用 Google Datastore 需要查询它来检索一些实体 这些实体需要按从最新到最旧的顺序排序 我的第一个想法是拥有一个包含时间戳的 date created 属性 然后我会索引该字段并对该字段进行排序 这种方法的问题是它会导