【问题标题】:indexed flat-files索引平面文件
【发布时间】:2012-01-06 03:32:07
【问题描述】:

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

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

【问题讨论】:

  • SQLite 使用单个可移植平面文件来存储单个数据库的对象。它支持索引和 SQL 接口。但允许的最大数据库大小仅为 14TB。
  • 您可以使用基于 JSON 或 YAML 的文本文件来存储您的表格。最大文件大小可以与您的操作系统允许的一样大。 JSON 和 YAML 都有 Java/Ruby 和许多其他编程接口。但我不认为任何实现都支持索引。而且没有SQL接口。

标签: sql flat-file indexed compression


【解决方案1】:

大多数优化策略都会优化速度或大小,并权衡取舍。一般来说,RDBMS 解决方案会优化速度,但会牺牲大小 - 例如,通过创建索引,您会占用更多空间,而作为回报,您会获得更快的数据访问。

因此,您对速度和尺寸进行优化的愿望不太可能实现 - 您几乎可以肯定必须在一个与另一个之间进行交易。

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

可能是底层数据适合特定优化 - 例如,如果您可以创建基于位掩码的自定义索引方案来创建整数,并使用这些整数使用布尔运算符访问数据,您 可能能够超越 RDBMS 索引的性能。

【讨论】:

  • 谢谢内维尔。 “sql like”查询是评估我们是否可以针对索引平面文件重用现有的 SQL 作业,但不是太重要。重点是应该如何创建如此高性能的索引和压缩平面文件。
猜你喜欢
  • 2014-10-11
  • 2013-01-12
  • 2019-06-03
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 2010-11-21
相关资源
最近更新 更多