2011-11-25 40 views
0

我们有一个批量分析SQL作业 - 每天运行一次 - 从保存在强大的RDBMS中的2个源表中读取数据。源表很庞大(> 100TB),但组合的字段少于10个。索引的平面文件

我的问题是可以将2个源表保存在压缩和索引的平面文件中,这样整个操作可以更快并且可以节省存储空间,并且可以在低规格服务器上运行。另外,我们是否可以针对这些压缩和索引的平面文件运行SQL查询?任何关于如何去做这件事的指针都会非常有帮助。

+0

SQLite使用单个可移植平面文件来存储单个数据库的对象。它支持索引和SQL接口。但允许的最大数据库大小仅为14TB。 – Raihan

+0

您可以使用基于JSON或YAML的文本文件来存储您的表格。最大文件大小可以与操作系统允许的一样大。 Java和Ruby以及JSON和YAML的许多其他编程接口。但我不认为任何阻碍支持索引。并没有SQL接口。 – Raihan

回答

1

大多数优化策略优化速度或大小,并相互交换一个。一般来说,RDBMS解决方案会以速度为代价进行优化 - 以规模为代价 - 例如,通过创建索引,您占用更多空间,并以更快的速度访问数据。

因此,您希望优化速度和尺寸的愿望不太可能实现 - 您几乎可以肯定必须交易一个针对另一个。其次,如果你想执行“类似于sql”的查询,我敢肯定,RDBMS是最好的解决方案 - 尤其是对于庞大的数据集。

基础数据可能适用于特定优化 - 例如,如果您可以创建基于位掩码的自定义索引方案以创建整数,并使用这些整数通过布尔运算符访问数据,那么您可能能够击败RDBMS索引的性能。

+0

谢谢内维尔。 “sql like”查询是为了评估我们是否可以将已有的SQL作业重新用于索引平面文件,但不是太重要。关键是如何创建如此高性能的索引和压缩平面文件。 – user1065024