Sql 索引平面文件

Sql 索引平面文件,sql,flat-file,indexed,compression,Sql,Flat File,Indexed,Compression,我们有一个批处理分析SQL作业—每天运行一次—从功能强大的RDBMS中保存的两个源表中读取数据。源表很大(>100TB),但总共只有不到10个字段 我的问题是,这两个源表是否可以保存在一个压缩和索引的平面文件中,这样整个操作可以更快,节省存储空间,并且可以在低规格的服务器上运行。此外,我们可以对这些压缩和索引的平面文件运行类似SQL的查询吗?任何关于如何进行这项工作的建议都将非常有用。大多数优化策略优化速度或大小,并权衡两者。通常,RDBMS解决方案以牺牲大小为代价优化速度—例如,通过创建索引,

我们有一个批处理分析SQL作业—每天运行一次—从功能强大的RDBMS中保存的两个源表中读取数据。源表很大(>100TB),但总共只有不到10个字段


我的问题是,这两个源表是否可以保存在一个压缩和索引的平面文件中,这样整个操作可以更快,节省存储空间,并且可以在低规格的服务器上运行。此外,我们可以对这些压缩和索引的平面文件运行类似SQL的查询吗?任何关于如何进行这项工作的建议都将非常有用。

大多数优化策略优化速度或大小,并权衡两者。通常,RDBMS解决方案以牺牲大小为代价优化速度—例如,通过创建索引,您会占用更多空间,反过来,您会获得更快的数据访问

因此,您在速度和尺寸方面进行优化的愿望不太可能实现——您几乎肯定要在两者之间进行权衡

其次,如果您想执行“类似sql”的查询,我非常确定RDBMS是最好的解决方案,尤其是对于大型数据集


在这种情况下,基础数据可能会进行特定的优化—例如,如果您可以基于位掩码创建自定义索引方案来创建整数,并使用这些整数使用布尔运算符访问数据,您可能能够击败RDBMS索引的性能。

SQLite使用单个可移植平面文件来存储单个数据库的对象。它支持索引和SQL接口。但是允许的最大数据库大小只有14TB。您可以使用JSON或基于YAML的文本文件来存储表。最大文件大小可以是操作系统允许的大小。JSON和YAML都有Java/Ruby和许多其他编程接口。但我认为,目前还没有任何实施支持索引。而且没有SQL接口。谢谢Neville。“类似sql”的查询是评估我们是否可以针对索引平面文件重新使用现有的sql作业,但这并不太重要。主要的一点是如何创建这样高性能的索引和压缩平面文件。