gpt4 book ai didi

java - 处理海量数据时,在数据存储中定义实体的正确方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 20:38:39 28 4
gpt4 key购买 nike

我正在为 Android 开发一个即时通讯应用程序,并在后端使用 Java 和应用程序引擎。

要在后端存储对话和消息,我有 2 个选项(如我所见)来存储数据。

创建 2 个根实体: session (ID、消息 ID)和消息(ID、“文本”)。

对话(ID)消息(对话实体的 child )(ID,“文本”)

虽然从技术上讲两者都可以工作,但我不了解数据存储的限制(例如某些实体每秒写入 1 次),我担心查询时的 CPU 开销,以及可能有数百万个消息根条目。我想我不确定是否需要祖先实体,或者是否最适合此类应用程序。

tl;dr 构建此类数据库的最佳方式是什么?

最佳答案

不要使用祖先查询,除非您确定它们符合您的需要。对我来说,这是关于数据存储最令人困惑的部分,因为起初,父/子似乎是一种像树一样构建数据的好方法。
简而言之,当您在写入数据时必须具有中间一致性时使用它们。它对总大小和每秒写入次数有七个限制。

不用担心拥有数百万个“根”实体。这正是数据存储(以及一般的 nosql)的优点。
所有数据存储查询都是高效的,它甚至不会让你运行一个它不是的查询(所以你必须事先添加所有需要的索引)因此不用担心查询性能,除非你不能用索引表达查询。
在您的情况下,鉴于对话不应该很大并且用户通常每秒输入的条目不会超过 5 个,您可以使用祖先,并且您将在每个对话中获得即时的一致性。
在这一点上,我认为要求架构过于宽泛,但这应该为您指出正确的方法。

关于java - 处理海量数据时,在数据存储中定义实体的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com