最近我和MongoDB一直在合作,我不得不说我非常喜欢它.然而,它是一个完全不同类型的数据库然后我被使用.我注意到它对于某些类型的数据肯定更好,但是对于高度规范化的数据库,它可能不是最佳选择.
然而,在我看来,它可以完全取代你可能拥有的任何关系数据库,并且在大多数情况下表现更好,这令人难以置信.这让我想问几个问题:
面向文档的数据库是否正在开发为下一代数据库,并且基本上完全取代了关系数据库?
是否可能更好地使用面向文档的数据库和关系数据库,以获得更适合其中一种的各种数据?
如果面向文档的数据库不是要替换关系数据库,那么有没有人有一个数据库结构的例子,在关系数据库中绝对会更好(反之亦然)?
Gates VP.. 36
面向文档的数据库是否已经发展成为下一代数据库,并且基本上完全取代了关系数据库?
不是.面向文档的数据库(如MongoDB)非常擅长我们通常在现代网站中看到的任务类型(单个项目或小项目的快速查找).
但他们与关系系统进行了一些重大的权衡.如果没有ACID合规性,他们将无法取代某些RDBMS.如果你看一下像MongoDB这样的系统,缺乏ACID合规性是它如此之快的一个重要原因.
是否可能更好地使用面向文档的数据库和关系数据库,以获得更适合其中一种的各种数据?
是.事实上,我正在运行一个使用两者的非常大的生产网站.该系统是在MySQL中启动的,但是我们将部分内容迁移到MongoDB,b/c我们需要一个Key-Value存储,而MySQL在150M记录中找不到一个项目并不是很好.
如果面向文档的数据库不是要替换关系数据库,那么有没有人有一个数据库结构的例子,在关系数据库中绝对会更好(反之亦然)?
面向文档的数据库非常适合存储数据,这些数据很容易包含在"键值"和简单,线性的"父子"关系中.这里的简单示例包括Blogs和Wikis.
但是,关系数据库在报告等方面仍然有很强的优势,这往往是"基于集合"的.
老实说,我可以看到一个世界,其中大多数数据由面向文档的数据库"处理",但报告是在由Map-reduce作业更新的关系数据库中完成的.
面向文档的数据库是否已经发展成为下一代数据库,并且基本上完全取代了关系数据库?
不是.面向文档的数据库(如MongoDB)非常擅长我们通常在现代网站中看到的任务类型(单个项目或小项目的快速查找).
但他们与关系系统进行了一些重大的权衡.如果没有ACID合规性,他们将无法取代某些RDBMS.如果你看一下像MongoDB这样的系统,缺乏ACID合规性是它如此之快的一个重要原因.
是否可能更好地使用面向文档的数据库和关系数据库,以获得更适合其中一种的各种数据?
是.事实上,我正在运行一个使用两者的非常大的生产网站.该系统是在MySQL中启动的,但是我们将部分内容迁移到MongoDB,b/c我们需要一个Key-Value存储,而MySQL在150M记录中找不到一个项目并不是很好.
如果面向文档的数据库不是要替换关系数据库,那么有没有人有一个数据库结构的例子,在关系数据库中绝对会更好(反之亦然)?
面向文档的数据库非常适合存储数据,这些数据很容易包含在"键值"和简单,线性的"父子"关系中.这里的简单示例包括Blogs和Wikis.
但是,关系数据库在报告等方面仍然有很强的优势,这往往是"基于集合"的.
老实说,我可以看到一个世界,其中大多数数据由面向文档的数据库"处理",但报告是在由Map-reduce作业更新的关系数据库中完成的.
这实际上是一个适合目的的问题.
如果您希望能够将某些表连接在一起并返回一组经过筛选的结果,则只能使用关系数据库执行此操作.如果您需要令人惊叹的性能并拥有大量数据,那么当列系列或面向文档的数据库自成一体时就是如此.
这是一个经典的权衡.关系数据库为您提供了一整套功能,并带来了性能成本.如果您无法加入,索引,扫描或执行其他功能列表,则无需对所有数据进行任何查看,从而为您提供了处理严重数据所需的性能和分布.
此外,我建议您关注Ayende Rahien关于此主题的博客.
http://ayende.com/blog/