当前位置: 首页 > 面试题库 >

高效地存储7.300.000.000行

饶明亮
2023-03-14
问题内容

您将如何解决以下存储和检索问题?

每天(每年365天)将添加大约2.000.000行,每行包含以下信息:

  • id(唯一的行标识符)
  • entity_id (取值介于1到2.000.000(含)之间
  • date_id(每天增加一次-取值范围为1到3.650(十年:1 * 365 * 10))
  • value_1(取值范围在1到1.000.000之间(包括1和1.000.000之间)
  • value_2(取值范围在1到1.000.000之间(包括1和1.000.000之间)

与date_id结合使用的entity_id是唯一的。因此,每个实体和日期最多可以将一行添加到表中。数据库必须能够保存10年的每日数据(7.300.000.000行(3.650 * 2.000.000))。

上面描述的是写模式。读取模式很简单:所有查询都将在特定的object_id上进行。即检索描述entity_id = 12345的所有行。

不需要事务支持,但是存储解决方案必须是开源的。理想情况下,我想使用MySQL,但我愿意征求建议。

现在-您将如何解决所描述的问题?

更新: 我被要求详细说明读写模式。每天将对表进行一次写入,然后一次性添加新的2M条目。读取将连续进行,每秒读取一次。


问题答案:

使用分区。使用读取模式,您需要按entity_id哈希分区。



 类似资料:
  • 你会选择以下两个选项中的哪一个?为什么? 备选方案1: 备选方案2: 您不知道经理存储每个客户以前的所有用户名和密码是否重要。您只知道每个客户可以随时更改他的密码和他的昵称。不管安全方面,您会遵循哪种方法?

  • 我正在使用Facenet算法进行人脸识别。我想基于此创建应用程序,但问题是Facenet算法返回一个长度为128的数组,即每个人的人脸嵌入。 对于人物识别,我必须找到两个人面部嵌入之间的欧几里得差异,然后检查它是否大于阈值。如果是,那么这些人是相同的;如果它小于,那么这些人是不同的。 比方说,如果我必须在10k人的数据库中找到人x。我必须计算每个人嵌入的差异,这是没有效率的。 有没有办法有效地存储

  • 我需要你的一些建议。我试图用redis和哈希(redis类型)存储一些非常有效的内存数据。有一些随机字符串列表(在rfc中平均大小是40个字符,但最大可能是255个字符)--它是文件id,例如我们有100kk的file_id列表。我们还需要每个ID的轨道2参数:download_count(int,incremented)和server_id--tiny int,redis config添加了:

  • 我有一个关于字典存储的问题。 我在读Trie数据结构,到目前为止,我已经读到它作为前缀树工作得很好。但是,我来到Trie-DS是为了看看它是否能有效地减少通过同一个单词形成的字母排列的存储。 对于ex:单词“ant”、“tan”和NAT有相同的字母,但根据Trie的说法,它继续为这些单词创建两个独立的路径。我可以理解Trie是用来存储前缀和减少冗余的。但有人能帮我减少这里的冗余吗。我想的一种方法是

  • 本文向大家介绍Kafka 高效文件存储设计特点?相关面试题,主要包含被问及Kafka 高效文件存储设计特点?时的应答技巧和注意事项,需要的朋友参考一下 (1).Kafka 把 topic 中一个 parition 大文件分成多个小文件段,通过多个小文件段,就容易定 期清除或删除已经消费完文件,减少磁盘占用。 (2).通过索引信息可以快速定位 message 和确定 response 的最大大小。

  • 本文向大家介绍Kafka 高效文件存储设计特点相关面试题,主要包含被问及Kafka 高效文件存储设计特点时的应答技巧和注意事项,需要的朋友参考一下 Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。 通过索引信息可以快速定位message和确定response的最大大小。 通过index元数据全部映射到memor