【发布时间】:2017-08-23 15:50:27
【问题描述】:
我假设在基于列的数据库中,每一列都存储为一个单独的文件,或者连续存储在一个文件中。如果输入的数据还是像传统的行式数据库那样是一行数据,那如何高效地创建列式数据库呢?
将每一列存储在文件中可能会“简单地”解决问题... 如果有 N 列,则有 N 个文件。当有新的数据行到达时,数据库需要将新数据追加到每个文件中。但是会不会因为不同文件之间的切换而将数据写入不同的文件有开销呢?也许最后一次写入附近的块仍在缓存中。但是如果有很多列(> 1M),我不确定缓存是否可以容纳所有列。另外我猜磁头也需要在不同的文件中寻找...
如果我们在同一个文件中保存多个列,我们可以减少文件句柄的数量,但是在文件中插入新的列数据是昂贵的。也许可以为文件中的每一列保留一个保留空间。但最终空间都被使用了。到时候我们要不要新建一个预留空间更大的文件,把数据复制到里面,...?
是否有任何论文或项目解释了如何有效地从数据行创建基于列的数据库。
【问题讨论】:
标签: database algorithm data-analysis