我一直在仓库工作一段时间。
我对Columnar数据库以及它们为数据检索提供的速度感兴趣。
我有多部分问题:
答案 0 :(得分:236)
柱状数据库如何工作? 列存储的定义概念是表的值按列连续存储。因此,来自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
这与传统的行存储形成对比,传统的行存储将更像这样存储数据:
S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams
从这个简单的概念出发,在列存储和行存储之间流动性能的所有基本差异,无论好坏。例如,列存储将擅长执行总计和平均值之类的聚合,但插入单行可能很昂贵,而逆行适用于行存储。从上图中可以看出这一点。
它们与关系数据库有何不同? 关系数据库是一个逻辑概念。柱状数据库或列存储是物理概念。因此,这两个术语无法以任何有意义的方式进行比较。面向列的DMBS可以是关系的,也可以不是关系的,就像面向行的DBMS可能或多或少地遵守关系原则一样。
答案 1 :(得分:46)
柱状数据库如何工作?
列式数据库是概念而不是特定的架构/实现。换句话说,没有关于这些数据库如何工作的特定描述;实际上,有些是基于传统的,面向行的DBMS构建的,只需将信息存储在具有一列(或通常是两列)的表中(并添加必要的层以便以简单的方式访问列式数据)。
它们与关系数据库有何不同? 它们通常与传统(面向行)数据库有所不同......
...在DBMS的特定用例中 特别是当在典型用途上计算有限数量的列上的聚合值时,它们在所提到的区域中提供优势,而不是尝试并检索给定实体的所有/大多数列。
是否有我可以安装的柱状数据库的试用版? (我在Windows 7上) 是的,有柱状数据库的商业,免费和开源实现。请参阅Wikipedia article末尾的列表作为入门名单 请注意,引入了其中一些实现来解决特定需求(比如非常小的占用空间,高度可压缩的数据分布或备用矩阵仿真等),而不是提供一个通用的面向列的DBMS -se。
注意:关于几个柱状DBMS的“单一目的”的评论并不是对这些实现的批评,而是对DBMS的这种方法偏离更“自然”(并且当然更广泛使用)的另一个指示)存储记录实体的方法。结果,当面向行的方法不令人满意时使用这种方法,因此倾向于 a)针对特定目的进行攻击 b)获得的资源/利息少于“通用”,“试验和测试”,表格方法的工作。
暂时, Entity-Attribute-Value (EAV)数据模型可能是您可能需要考虑的替代存储策略。虽然不同于“纯”柱状DB模型,但EAV具有柱状DB的几个特征。
答案 2 :(得分:3)
我想说理解面向列的数据库的最佳候选者是检查HBase(Apache Hbase)。您需要签出代码并进一步探索以了解实施情况。
答案 3 :(得分:2)
此外,Columnar DB具有内置的数据压缩关联性,并且加载过程是唯一的。这是我在2008年写的article,它解释了更多。
您可能也对IDC的Carl Olofson关于第三代DBMS技术的新报告感兴趣。它讨论了columnar等。如果您不是IDC客户,您可以在我们的网站上免费获得。他也在6月16日进行网络研讨会(也在我们的网站上)。
(顺便说一下,上面的一条评论列出了星号,但我不认为它们是柱状的。)
答案 4 :(得分:1)
产品信息。这可能有所帮助。这些是Google搜索中的特色产品。
答案 5 :(得分:1)
kx是另一个列式数据库,例如在金融部门中使用。不过,上次检查时,许可证的价格是5万美元。不需要优化,不需要索引,因为kx具有强大的运算符(matlab等价物:.*
,kron
,bsxfun
,...)。
答案 6 :(得分:1)
要了解什么是面向列的数据库,最好将其与面向行的数据库进行对比。
面向行的数据库(例如MS SQL Server和SQLite)旨在有效地返回整行的数据。它通过将行的所有列值存储在一起来实现。面向行的数据库非常适合OLTP系统(例如,零售和金融交易系统)。
面向列的数据库旨在有效地返回有限数量的列的数据。它通过将列的所有值存储在一起来实现。两个广泛使用的面向列的数据库是Apache Hbase和Google BigTable(Google用于其搜索,分析,地图和Gmail)。它们适用于大数据项目。面向列的数据库将在有限数量的列上的读取操作方面表现优异,但是与面向行的数据库相比,写入操作将是昂贵的。