假设一个有150米唯一记录的文本文件。
每个记录有两列:(1)字符串和(2)整数。
字符串是唯一的标签,整数是标签的值。
唯一的查询将返回给定标签的整数值。
我们正在探索将此文本文件公开为API的多种体系结构。
此文本文件每72小时重新生成一次。~90%的数据在整个再生过程中保持不变,但是这种再生是由第三方控制的。我们只需每72小时获得一个新的文本文件。
我们的目标是每读100 We 500 We的查询性能。
问题:
发布于 2020-08-20 04:47:06
一般来说,这似乎是ETL流的一个典型案例:获取新文件、提取数据、将其转换为您的格式并加载到您的DB。一些注意事项:
我不能告诉你最好的方法是什么。只有你知道的变量太多了--你的预算和使用模式,系统的未来计划和扩展潜力,与第三方数据源的关系(例如,它们是否可以被说服只生成差异,或者为记录添加时间戳/版本标签等等)。我所能做的就是建议核心模式:将摄入流从查询流中分离出来,使用尝试过的和经过测试的工具,以及最重要的是度量、度量、度量。
发布于 2020-08-28 12:02:21
您可以考虑D.J.Bernstein的国开行所采用的方法,即:
cdb是一个用于创建和读取常量数据库的快速、可靠、简单的包。它的数据库结构提供了几个特性:快速查找:在大型数据库中成功查找通常只需要两次磁盘访问。不成功的查找只需一次。低开销:数据库使用2048字节,加上每个记录24个字节,加上键和数据的空间。没有随机限制: cdb可以处理高达4G的任何数据库。没有其他限制;记录甚至不需要放入内存中。数据库以与机器无关的格式存储.快速原子数据库替换: cdbmake可以比其他散列包快两个数量级来重写整个数据库。快速数据库转储: cdbdump以与cdbmake兼容的格式打印数据库内容。cdb被设计用于像电子邮件这样的关键任务应用程序.数据库替换对系统崩溃是安全的。在重写过程中,读者不必停下来。
您可能需要一个更现代的实现,它没有4GiB限制,比如这 one。
https://softwareengineering.stackexchange.com/questions/415015
复制相似问题