我发现数据库通常有两种形式,传统的面向行的 RDBMS 或面向对象的数据库 (OODBMS)。然而,我记得在 90 年代中期,出现了一种面向列的新型数据库。其中一些被赋予了 4GL 一词,但我不认为它是一个固定的术语。
我想知道的是:
- 哪些面向列的数据库仍然存在?
- 这些数据库的性能特点是什么?
- 有没有开源的面向列的数据库?
- 它们与哪些平台进行互操作(.NET、Java 等)
- 你对他们的一般经验是什么?
我记得使用的两个面向列的数据库是 FAME 和 KDB。
我发现数据库通常有两种形式,传统的面向行的 RDBMS 或面向对象的数据库 (OODBMS)。然而,我记得在 90 年代中期,出现了一种面向列的新型数据库。其中一些被赋予了 4GL 一词,但我不认为它是一个固定的术语。
我想知道的是:
我记得使用的两个面向列的数据库是 FAME 和 KDB。
HBase是一个以Google 的 BigTable为模型的开源的面向列的数据库系统。
Infobright
这是一个面向列的 MySQL 引擎
您可以使用(几乎)所有 MySQL api/接口/工具,但它是面向列的。
它是开源的,并且有免费版本。
非常适合仓储。我在 SQL Server 中有一个 10Gig 的事实表。Infobright 将其压缩为 15MB。
还可以查看 Michael Stonebraker 的 C-store: C-store(包括指向源代码和研究论文的链接)
该论文包含有关面向列的数据库的出色观点,应该可以回答您的大部分问题。
引用论文,
"Most major DBMS vendors implement record-oriented
storage systems, where the attributes of a record (or tuple)
are placed contiguously in storage. With this row store
architecture, a single disk write suffices to push all of the
fields of a single record out to disk. Hence, high
performance writes are achieved, and we call a DBMS
with a row store architecture a write-optimized system.
In contrast, systems oriented toward ad-hoc querying
of large amounts of data should be read-optimized. Data
warehouses represent one class of read-optimized system,
in which periodically a bulk load of new data is
performed, followed by a relatively long period of ad-hoc
queries. Other read-mostly applications include customer
relationship management (CRM) systems, electronic
library card catalogs, and other ad-hoc inquiry systems. In
such environments, a column store architecture, in which
the values for each single column (or attribute) are stored
contiguously, should be more efficient. This efficiency
has been demonstrated in the warehouse marketplace by
products like Sybase IQ [FREN95, SYBA04], Addamark
[ADDA04], and KDB [KDB04]. In this paper, we discuss
the design of a column store called C-Store that includes a
number of novel features relative to existing systems."
Sybase IQ是我听说过的一种。
InfiniDB最近由 Calpont 发布了开源 (GPLv2)。它支持大多数 MySQL API 并以面向列的方式存储数据,并针对大规模分析处理进行了优化。
这是不同的面向列的 DBMS wiki 具有 面向列的 DBMS 实现
Sybase IQ 是面向列的。创建表时,所有列都会自动编制索引,并且列中的数据会被很好地压缩。
这是一个不错的 OLAP 数据库(...数据仓库),但我不建议将它用于任何类型的事务处理,因为它是为数据仓库操作而设计的。
至于性能特征,SELECTS 对于大量数据非常快,但与标准 OLTP DB(例如 Sybase ASE)相比,INSERT / UPDATE / DELETE 非常慢。表锁定也与 OLTP 数据库有很大不同,因此在 MAIN 数据存储中工作时,需要为写操作(INSERTS 等)使用排他表锁定。
否则它支持 T-SQL(Sybase 版本)和 Watcom SQL。
干杯,
凯文