gpt4 book ai didi

algorithm - 一次写入多次读取的存储

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:09 24 4
gpt4 key购买 nike

我有一个包含 100 万位数字的列表。每次用户提交输入时,我都需要将输入与列表进行匹配。

因此,该列表是否具有一次写入多次读取 (WORM) 特性?

存储这些数据的最佳方式是什么?

我正在考虑几个选项:

  1. 一个 SQL 数据库,但它是否适合 WORM(更新:使用 VARCHAR 字段类型而不是 INT)
  2. 包含列表的一个文件
  3. 像/1/2/3/4/5/6/7/8/9/0 这样的目录结构(但是这个会占用太多空间)
  4. 像/12345/67890/这样的桶系统

你怎么看?

更新:该应用程序将是一个网络应用程序。

最佳答案

要回答这个问题,您需要考虑两件事:

您是要尽量减少存储空间,还是要尽量减少处理时间。

将数据存储在内存中将为您提供最快的处理时间,特别是如果您可以以内存空间为代价为最常见的操作(在本例中为查找)优化数据结构。对于持久性,您可以将数据存储到平面文件中,并在启动期间读取数据。

SQL 数据库非常适合存储和读取关系数据。例如,存储姓名、地址和订单可以高效地规范化和存储。将数字的平面列表存储在关系数据库中是否有意义?对于每次访问,您都会有很多与查找数据相关的开销。构造查询、构建查询计划、执行查询计划等。由于数据是一个平面列表,您将无法创建有效的索引(您的索引本质上是您存储的值,这意味着您将为每个数据访问执行表扫描)。

使用目录结构可能行得通,但这样您的应用程序就不再可移植了。

如果我正在编写应用程序,我会在启动期间从文件加载数据并将其存储在哈希表(提供常量查找)的内存中,或者编写一个简单的索引文件访问器类,将数据存储在搜索优化顺序(最坏情况是平面文件)。

关于algorithm - 一次写入多次读取的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1968587/

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