gpt4 book ai didi

database - 可扩展、快速、文本文件支持的数据库引擎?

转载 作者:太空狗 更新时间:2023-10-30 01:46:44 25 4
gpt4 key购买 nike

我正在处理存储在制表符分隔的 .tsv 文件中的大量科学数据。要执行的典型操作是读取几个大文件、仅过滤掉某些列/行、与其他数据源连接、添加计算值并将结果写入另一个 .tsv。

使用纯文本是因为它的健壮性、生命周期长和 self 记录的特性。以另一种格式存储数据不是一种选择,它必须保持开放且易于处理。数据量很大(几十 TB),并且将副本加载到关系数据库中是负担不起的(我们将不得不购买两倍的存储空间)。

因为我主要做的是选择和连接,我意识到我基本上需要一个数据库引擎和基于 .tsv 的后备存储。我不关心事务,因为我的数据都是一次写入多次读取。我需要就地处理数据,无需主要的转换步骤和数据克隆。

由于要通过这种方式查询大量数据,我需要利用缓存和计算机网格高效地处理这些数据。

有谁知道一个系统可以提供类似数据库的功能,同时使用纯制表符分隔的文件作为后端?在我看来,这是一个非常普遍的问题,几乎所有科学家都会以这样或那样的方式处理。

最佳答案

There is a lot of data (tens of TBs), and it is not affordable to load a copy into a relational database (we would have to buy twice as much storage space).

您比我们任何人都清楚自己的要求,但我建议您再考虑一下。如果将 16 位整数 (0-65535) 存储在 csv 文件中,则 .tsv 存储效率约为 33%:存储大多数 16 位整数需要 5 个字节加上分隔符 = 6 个字节,而 native 整数占用2个字节。对于 float 据,效率更差。

我会考虑获取现有数据,而不是存储原始数据,而是通过以下两种方式处理它:

  1. 将其以众所周知的压缩格式(例如 gzip 或 bzip2)压缩存储到您的永久存档媒体(备份服务器、磁带驱动器等)上,以便您保留 .tsv 格式的优势。
  2. 将其处理成具有良好存储效率的数据库。如果文件具有固定且严格的格式(例如,X 列始终 是字符串,Y 列始终 是 16 位整数),那么您可能处于良好状态形状。否则,NoSQL 数据库可能会更好(参见 Stefan 的回答)。

这将创建一个数据丢失风险较低的可审核(但可能访问速度较慢)存档,以及一个无需担心丢失源数据的快速访问数据库,因为您可以随时重新读取它从存档到数据库。

您应该能够减少存储空间,而不应该像您所说的那样需要两倍的存储空间。

索引将是困难的部分;您最好清楚需要哪些数据子集才能高效查询。

关于database - 可扩展、快速、文本文件支持的数据库引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366852/

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