2010-08-06 43 views
8

Tôi đã đọc một số bài báo nói rằng RDBMS chẳng hạn như MySQL không giỏi ở khả năng mở rộng, nhưng NoSQL như MongoDB có thể phân đoạn tốt. Tôi muốn biết tính năng nào mà RDBMS cung cấp làm cho chính nó không thể phân mảnh tốt.Tại sao NoSQL nói RDBMS truyền thống không tốt ở khả năng mở rộng

+0

Bạn đang nói "Được chia sẻ" hoặc "Phân đoạn"? – StingyJack

+0

Hoặc bị hủy bỏ? (như trong Lucene)? – bmargulies

+1

[Shard] (http://en.wikipedia.org/wiki/Shard_%28database_architecture%29), như trong sharding cơ sở dữ liệu của bạn vào phân vùng riêng biệt. –

Trả lời

30

Hầu hết các hệ RDBMS đảm bảo cái gọi là ACID properties. Hầu hết các thuộc tính này đều được luộc xuống tính nhất quán; mọi sửa đổi trên dữ liệu của bạn sẽ chuyển cơ sở dữ liệu của bạn từ một trạng thái nhất quán sang trạng thái nhất quán khác. Ví dụ: nếu bạn cập nhật nhiều bản ghi trong một giao dịch, cơ sở dữ liệu sẽ đảm bảo rằng các bản ghi liên quan sẽ không bị sửa đổi bởi các truy vấn khác, miễn là giao dịch chưa hoàn tất. Vì vậy, trong quá trình giao dịch, nhiều bảng có thể bị khóa để sửa đổi. Nếu các bảng đó được trải rộng trên nhiều phân đoạn/máy chủ, sẽ mất nhiều thời gian hơn để có được các khóa thích hợp, cập nhật dữ liệu và nhả ổ khóa.

Các CAP theorem trạng thái mà một (tức là khả năng mở rộng) Hệ thống phân phối không thể đảm bảo tất cả các thuộc tính sau cùng một lúc:

  • quán
  • Availability
  • khoan dung Partition

RDBMS hệ thống đảm bảo tính nhất quán. Sharding làm cho hệ thống khoan dung để phân vùng. Từ định lý, hệ thống có thể không đảm bảo tính khả dụng. Đó là lý do tại sao một RDBMS tiêu chuẩn không thể mở rộng rất tốt: nó sẽ không thể đảm bảo tính khả dụng. Và cơ sở dữ liệu nào tốt nếu bạn không thể truy cập nó?

Cơ sở dữ liệu NoSQL giảm tính nhất quán để hỗ trợ tính khả dụng. Đó là lý do tại sao họ có khả năng mở rộng tốt hơn.

Tôi không nói rằng các hệ thống RDBMS không thể mở rộng quy mô, nó chỉ khó hơn. This article phác thảo một số sơ đồ đổ rác có thể xảy ra và các vấn đề bạn có thể gặp phải. Hầu hết các phương pháp tiếp cận hy sinh tính nhất quán, đó là một trong những tính năng quan trọng nhất của các hệ thống RDBMS, và ngăn cản nó khỏi việc mở rộng quy mô.

0

Queries liên quan đến nhiều mảnh rất phức tạp (f.e. JOIN giữa bảng trong mảnh vỡ khác nhau)

+0

Nếu tôi không bao giờ sử dụng tham gia vào RDBMS thì RDBMS có trở nên dễ dàng không? Nếu có, có vẻ như không cần phải triển khai cơ sở dữ liệu mới có tên NoSQL. – shuitu

+2

RDBMS có nghĩa là trở thành hệ thống quản lý cho cơ sở dữ liệu 'quan hệ'. Và mối quan hệ giữa các dữ liệu được trưng bày bởi JOIN giữa các bảng. Nếu bạn không sử dụng JOIN thì điều đó có nghĩa là cơ sở dữ liệu của bạn không quan hệ để bạn có thể di chuyển NoSQLs là các kho khóa/giá trị. –

Các vấn đề liên quan