7

我最近参加了 10gen 赞助的关于 NoSQL/MongoDB 的技术讲座。我不是 DBA 超级大师或任何东西,演讲者提出了一个有趣的观点,旨在说明使用 NoSQL 数据库的优势之一。

这个例子是这样的:Craigslist 正在使用 MySQL。他们有一张巨大的桌子,里面有数百万甚至数亿条记录。他们需要通过添加一列来修改该表的架构。由于这张表有这么多记录,实际添加列需要3个月

他进一步说,使用 NoSQL 数据库,您无需执行任何操作 - 只需开始将对象保存到具有您想要记录的额外属性的集合中即可。

我明白了,也许用 RDBMS 引擎修改一个巨大的数据集需要一段时间。但这真的是 RDBMS 的一个巨大缺点吗?这是夸大其词吗?可以加快这样的操作吗?

4

2 回答 2

4

我会高度怀疑这 3 个月的时间框架。我以前使用过数亿行的 MySQL 表,甚至在几年前的硬件上,添加一列最多可能需要几天,而不是几个月。当然,这因每行中包含的数据量而异,但我仍然持怀疑态度。

当然,仅使用 ALTER TABLE 扩展表可能不是最好的方法......从旧表(CREATE TABLE [new table] LIKE [old table])创建新表通常要快得多,更改空表上的模式,将旧表中的所有行复制到新表中,(INSERT INTO [new table] SELECT [fields] FROM [old table]),然后将新表重命名为旧表。

于 2013-06-14T23:52:01.327 回答
3

在 RDBMS 世界中,没有多少好的架构灵活性解决方案。它通常围绕存储 xml/json 或扭曲的数据库设计。它有效,但它真的很尴尬,它最终会破坏你的整个应用程序(维护或性能方面)。当您拥有大量数据时尤其如此。

关于 Craiglist,他们的广告只是一堆不同的聚合,它们之间没有交互。他们没有弯曲他们的 RDBMS,而是选择了一个面向文档的数据库。当您考虑它时,这是有道理的:他们并不真正关心一致性(在 ACID 上下文中)。放弃这一点,他们获得了高可扩展性、灵活的模式和易用性。底线是:RDBMS 的真正优势是完整性和一致性,而不是模式的灵活性。

于 2013-06-15T00:00:13.103 回答