什么是柱状数据库?

我一直在仓库工作一段时间。

我对柱状数据库很感兴趣,他们为数据检索所提供的速度。

我有多个部分的问题:

  • 柱状数据库如何工作?
  • 它们与关系数据库有什么不同?

柱状数据库如何工作?
列式数据库是一个概念,而不是一个特定的架构/实现 。 换句话说,关于这些数据库如何工作没有一个特别的描述; 实际上,有些是build立在传统的面向行的DBMS之上的,只是简单地将信息存储在带有一个(或者更经常是两个)列的表格中(并且以简单的方式添加必要的层次来访问列式数据)。

它们与关系数据库有什么不同? 它们通常不同于传统的(面向行的)数据库,涉及…

  • 性能…
  • 存储要求…
  • 方便修改模式…

…在DBMS的特定用例中
特别是在典型用途是在有限数量的列上计算聚集值时,它们提供了上述优势,而不是尝试检索给定实体的所有/大多数列。

有没有我可以安装玩的柱状数据库的试用版本? (我在Windows 7上)是的,有柱状数据库的商业,免费和开源实现。 请参阅维基百科文章末尾的列表。
请注意,为了满足特定需求 (例如占用空间非常小,数据的高度可压缩分布或备用matrix仿真等)而引入了其中的一些实现,而不是提供通用的面向列的DBMS本身。

注:关于几个柱状数据库pipe理系统的“单一目的定位”的评论并不是对这些实现的批评,而是另一个迹象表明,这种DBMS的方法偏离了更“自然”(当然也是更广泛使用)的方法,存储logging实体。 结果,当面向行的方法不令人满意时,这种方法被使用,因此倾向于
a)针对特定目的b)获得比“一般目的”,“试验和testing”,表格方法的工作更less的资源/兴趣。

暂时地, 实体 – 属性 – 值 (EAV)数据模型可能是您可能想要考虑的替代存储策略。 虽然不同于“纯粹的”纵向数据库模型,但是纵向分布数据库具有几个特征。

柱状数据库如何工作? 列存储的定义概念是表的值按列连续存储。 因此,来自CJ Date供应商和零件数据库的经典供应商表格:

SNO STATUS CITY SNAME --- ------ ---- ----- S1 20 London Smith S2 10 Paris Jones S3 30 Paris Blake S4 20 London Clark S5 30 Athens Adams 

将存储在磁盘或内存中,如下所示:

 S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

这与传统的存储更多数据的rowstore相反:

 S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams 

从这个简单的概念中,我们可以看出,在一个专卖店和一个专卖店之间,性能上的所有基本差异,无论好坏,都是如此。 例如,一个列存储将擅长做总计和平均等聚合,但插入一行可能是昂贵的,而反向适用于行存储。 这应该从上图中显而易见。

它们与关系数据库有什么不同? 关系数据库是一个合乎逻辑的概念。 列式数据库或列式存储是物理概念。 因此,这两个术语在任何有意义的方面都不具可比性。 面向列的DMBS可能是关系型的,就像面向行的DBMS可能或多或less地遵循关系原则一样。

我想说,理解列式数据库的最佳人选是检查HBase( Apache Hbase )。 您可以检查代码并进一步探索以了解实现。

产品信息。 这可能有帮助。 这些是在谷歌searchfunction的产品。

http://www.vertica.com/

http://www.paraccel.com/

http://www.asterdata.com/index.php

而且,列式DB具有用于数据压缩的内build亲和力,并且加载过程是唯一的。 这是我在2008年写的一篇文章 ,它解释了更多。

您也可能对IDC的Carl Olofson关于第三代DBMS技术的新报告感兴趣。 它讨论了柱状等。 如果您不是IDC客户,您可以在我们的网站上免费获得。 他也在6月16日举行networking研讨会(也在我们的网站上)。

(顺便说一下,上面的一个评论列出了asterdata,但我不认为他们是列表。)

kx是另一个柱状数据库,例如用于金融行业。 但是,我上次查看的许可证价值是5万美元。 没有优化需要,没有索引需要,因为kx有强大的操作(matlab等值: .*bsxfunbsxfun ,…)。

要理解什么是面向列的数据库,最好将其与面向行的数据库进行对比。

面向行的数据库 (例如MS SQL Server和SQLite)旨在有效地返回整行数据。 它通过将一行的所有列值存储在一起来完成。 面向行的数据库非常适合OLTP系统(例如零售和金融交易系统)。

面向列的数据库旨在有效地返回有限数量的列的数据。 它通过将列的所有值存储在一起来完成。 两种广泛使用的面向列的数据库是Apache Hbase和Google BigTable(Google用于search,分析,地图和Gmail)。 他们适合大数据项目。 面向列的数据库将在有限数量的列上进行读取操作,但是与面向行的数据库相比,写入操作将是昂贵的。

更多: https : //en.wikipedia.org/wiki/Column-oriented_DBMS