所有现代 RDBMS 都是面向行的吗?为什么?
如果关系数据库范例之一是面向元组的,那么我们在这里有最大的限制。
如果能够设计面向列的数据库,那将大大提高性能。 向量操作将执行开箱即用、索引、散列以进行简单的符号列查找,并将链表作为引擎在幕后执行。
内存映射:在微秒内转储大块并加载这些磁盘映像。
并且仍然使用多个供应商支持的易于理解的标准语言(SQL)。
想象一下,由于它的简单性,可以设计多少工具来连接该东西。
它不是更强大(同时也是 KISS)吗?
更新
感谢所有贡献者。
尽管我发现您的所有答案都非常有用,但问题已被不公正地关闭。
If one of relational databases paradigms is to be tuple oriented we have the biggest limitation here.
If one could design column oriented db, that would improve performance a lot.
Vector operations would perform out of the box, indexing, hashing for simple symbol columns lookups, linked lists behind the scenes as engine.
Memory mapping: dumps in huge chunks in microseconds as well as loading those disk images.
And still have use well understood and standard language (SQL) that multiple vendors support.
Imagine how many tools could be designed for interfacing that thing, because of its simplicity.
Wouldn't it be more robust (and KISS at the same time)?
UPDATE
Thanks to all contributors.
Question has been unjustly closed, though i've found your all answers very informative.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
不。它们是为特定任务而设计的,例如 OLTP 与 OLAP。即使像 MySQL 这样流行的引擎也有列存储引擎(例如:Infobright)。还有一些 DBMS 也是从头开始构建为面向列的数据库。
以下是您可能感兴趣的读物:C-Store:面向列的 DBMS< /a> (PDF 格式)
LucidDB 是一种流行的面向列的数据库,用于数据仓库和双:
请在此处查看与您的兴趣重叠的功能列表:LucidDB 功能
您可以将 SQL 与 LucidDB 结合使用。
No. They're designed for specific tasks, say OLTP vs OLAP. Even the popular ones like MySQL have column-store engines (ex: Infobright). And there are DBMS's that are built as a column-oriented DB from the ground up as well.
Here's a potentially interesting read for you: C-Store: A Column-oriented DBMS (PDF format)
LucidDB is a popular column-oriented database for data warehousing and BI:
See its list of features for those that overlap with your interests here: LucidDB Features
You can use SQL with LucidDB.
有几种面向列的 SQL DBMS,它们已经存在多年了。 Sybase IQ 和 Vertica 是两个众所周知的例子。这些是列存储,因为它们在内部使用基于列的存储 - 它们仍然使用与任何其他 SQL DBMS 完全相同的基于 SQL 表的数据模型。
不幸的是,术语“面向列”或“列存储”最近被一些 NOSQL 数据库用来指代完全不同的概念。以大表为例。在这种情况下,面向列意味着不同的数据模型(不是关系或 SQL)。这个已有数十年历史的术语的新定义导致了一系列混乱——尤其是对于那些在新产品出现之前没有听说过这个术语的人来说。
http://dbmsmusings.blogspot.com/2010/ 03/区分两种主要类型-of_29.html
There are several column oriented SQL DBMSs and they have been around for years. Sybase IQ and Vertica being two well known examples. These are columnn stores in the sense that they use column based storage internally - they still use exactly the same SQL table-based data model as any other SQL DBMS.
Unfortunately the term "column oriented" or "column store" has much more recently been appropriated by some NOSQL databases to refer to an entirely different concept. Bigtable for instance. In this context column oriented means a different data model (not relational or SQL). This new definition of a decades-old term has lead to a deal of confusion - especially for people who hadn't heard the term until this newer wave of products came along.
http://dbmsmusings.blogspot.com/2010/03/distinguishing-two-major-types-of_29.html
有几种商业上可用的面向列的数据库,例如Vertica。我研究了一个专门的高插入率、具有固定模式的主要写入存储。虽然优化的索引很重要,但对我们来说更重要的是在具有稀疏值分布的列上实现的压缩比的提高。
There are several column-oriented databases commercially available, for example Vertica. I worked on a specialized high insert rate, write-mostly store with fixed schema. While the optimized indexing was important, more important to us was the improved compression ratios achieved on columns with sparse value distributions.
你的意思是这样吗?
矢量数据库
您可能对 OLAP 也感兴趣。
OLAP
You mean like this?
Vector Database
You might be interested in OLAP as well.
OLAP
谷歌的专有数据库已经是基于列的。这就是您的搜索和其他 Google 事物发生得如此之快的原因之一。请参阅这篇 wiki 文章,其中还包含其他实现的链接和引用。
至于为什么这种类型的数据库没有被使用?有几个原因,其中之一是并非所有实现都需要它。例如,您家里有一台运行一些桌面数据库的台式计算机,而不是运行大规模可扩展数据存储库的大型机。您可以使用后者,但使用它来存储数据就像使用链锯来切割黄油一样。
此外,还有其他几种数据库类型,例如面向对象和本体论。没有一种方法适合所有情况,但就目前而言,经过考验的、真正的基于行的方法已经就位,并且为很多人工作。
Google's proprietary database is already column-based. That's one of the reasons your searches and other Googly things happen so quickly. See this wiki article which also includes links and references to other implementations.
As far as why this type of db is not in use? There are several reasons, one of which is that it's not necessary for all implementations. For example, you have a desktop computer at home running some desktop databases and not a mainframe running a massively scalable data repository. You could have the latter but using it to store your data would be akin to using a chain saw to cut your butter.
Besides, there are several other database types such as object oriented and ontological. No one kind will be right for everything, but for now, the tried and true row-based is in place and working for a lot of people.
如果你寻找“nosql”,你会发现一大堆非面向行的最新数据库,例如 couchdb
If you look for "nosql" you'll find a whole bunch of recent databases which aren't row-oriented, eg couchdb
“如果可以设计面向列的数据库...”
查看http: //en.wikipedia.org/wiki/Column-oriented_DBMS。
此外,我们在面向列的数据库的建议。
"If one could design column oriented db..."
Check out http://en.wikipedia.org/wiki/Column-oriented_DBMS.
Also, we have some good recommendations at recommendations for column-oriented database.