OLAP方案与其他常见方案(如OLTP或Key-Value访问)有很大不同。所以,如果你想获得不错的表现,尝试使用OLTP或Key-ValueDB来处理分析查询是没有意义的。例如,如果您尝试使用MongoDB或Elliptics进行分析,与OLAP数据库相比,您的性能会很差。

面向列的数据库更适合于OLAP方案(对于大多数查询,处理速度至少提高了100倍),原因如下:

  1. 对于I/O, 进行碎片化存储
  2. 对于CPU由于执行查询需要处理大量的行,因此它有助于为整个向量调度所有操作,而不是单独的行,或者实现查询引擎,这样就几乎没有调度成本。如果你不这样做,任何半象限的磁盘子系统(half-decent disk subsystem),查询解释器不可避免地中断(阻塞)CPU。将数据存储在列中并在可能的情况下按列处理是有意义的。
  3. 对于分析查询,只需要读取少量的列。在面向列的数据库中,您只能读取所需的数据。例如,如果您需要100列中的5列,则I/O可能会减少20倍。
  4. 由于数据是以数据包的形式读取的,因此压缩比较容易。列中的数据也更容易压缩。这进一步减少了I/O量。
  5. 由于减少的I/O,更多的数据适合在系统缓存中。

安装

使用

高性能技巧