微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

纯文本用于其稳健性,长寿性和自我记录性.以另一种格式存储数据不是一种选择,它必须保持开放且易于处理.存在大量数据(数十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).

你比我们任何人都更了解你的要求,但我建议你再考虑一下这个问题.如果你有一个存储在csv文件中的16位整数(0-65535),你的.tsv存储效率大约是33%:它需要5个字节来存储大多数16位整数加上一个分隔符= 6个字节,而本机整数拿2个字节.对于浮点数据,效率更差.

我会考虑使用现有数据,而不是存储raw,以下面两种方式处理它:

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

这将创建一个可审计(但可能缓慢访问)的存档,具有较低的数据丢失风险,以及一个快速可访问的数据库,无需关注丢失源数据,因为您始终可以将其重新读入数据库来自档案馆.

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

索引将是困难的部分;您最好知道需要哪些数据子集才能有效查询.

原文地址:https://www.jb51.cc/mssql/77482.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐