NoSql vs cơ sở dữ liệu quan hệ


Câu trả lời:


123

Không phải tất cả dữ liệu là quan hệ. Đối với những tình huống đó, NoQuery có thể hữu ích.

Như đã nói, NoQuery là viết tắt của "Không chỉ SQL". Nó không có ý định gõ SQL hoặc thay thế nó.

SQL có một số lợi thế rất lớn:

  1. Cơ sở toán học mạnh mẽ.
  2. Cú pháp khai báo.
  3. Một ngôn ngữ nổi tiếng trong Ngôn ngữ truy vấn có cấu trúc (SQL).

Những người đã không biến mất.

Đó là một sai lầm khi nghĩ về điều này như là một hoặc / hoặc đối số. NoQuery là một giải pháp thay thế mà mọi người cần xem xét khi phù hợp, đó là tất cả.

Tài liệu có thể được lưu trữ trong cơ sở dữ liệu không liên quan, như CouchDB.

Có lẽ đọc điều này sẽ giúp.


10
Bạn có thể cho một số ví dụ về dữ liệu không liên quan?
dùng496949

7
Tài liệu và hình ảnh có thể được lưu trữ bên trong RDBMS giống như SQL Server và Oracle không? Vậy thì tại sao NoQuery?
dùng496949

2
Dữ liệu bán cấu trúc là một trong những lớp như vậy. Nó chứa XML, Email, JSON, v.v ... Xem trang wikipedia trên đó. Nguyên tắc chung là cấu trúc ở đó, nhưng được xác định một cách lỏng lẻo và có thể mở rộng một cách linh hoạt (cái sau có xu hướng lớp với mô hình quan hệ - và trong khi không thể mô hình hóa, nó chắc chắn là cồng kềnh). Một lớp khác là "dữ liệu tự nhiên": Tiểu thuyết, Hình ảnh, cả hai đều không có dữ liệu meta được đính kèm.
TÔI CHO CÂU TRẢ LỜI CRAP

2
Vâng, bạn không thể làm SELECT blob FROM images WHERE blob CONTAINS('red car'). Vì vậy, trong khi bạn có thể lưu trữ dữ liệu thô trong cơ sở dữ liệu, bạn không thể tìm kiếm nó mà không đính kèm siêu dữ liệu. Các mô-đun tìm kiếm toàn văn bản trong các hệ thống RDBMS thu hẹp một số khoảng cách bán cấu trúc.
TÔI CHO CÂU TRẢ LỜI CRAP

1
@duffymo: Tài liệu không phải là "không liên quan". Các tài liệu thường được lưu trữ trong các DBMS SQL và bạn không cần NMSQL DBMS cho điều đó. Trong thực tế, cơ sở dữ liệu NOSQL thường sử dụng các mô hình dữ liệu ít chung chung và hạn chế hơn trong ứng dụng so với mô hình quan hệ. Ví dụ: cơ sở dữ liệu đồ thị. Loại dữ liệu đang được lưu trữ không giải thích bất kỳ lợi thế nào của NOSQL.
nvogel

98

Lịch sử dường như như thế này:

  1. Google cần một lớp lưu trữ cho chỉ mục tìm kiếm đảo ngược của họ. Họ cho rằng một RDBMS truyền thống sẽ không cắt giảm. Vì vậy, họ triển khai một kho lưu trữ dữ liệu NoQuery, BigTable trên đầu hệ thống tệp GFS của họ. Phần chính là hàng ngàn máy móc phần cứng hàng hóa giá rẻ cung cấp tốc độ và sự dư thừa.

  2. Mọi người khác nhận ra những gì Google vừa làm.

  3. Định lý nhà sản xuất bia được chứng minh. Tất cả các hệ thống sử dụng RDBMS là các hệ thống CA. Mọi người cũng bắt đầu chơi với các hệ thống CP và AP. Các cửa hàng K / V đơn giản hơn rất nhiều, vì vậy chúng là phương tiện chính cho nghiên cứu.

  4. Các hệ thống phần mềm dưới dạng dịch vụ nói chung không cung cấp một cửa hàng giống như SQL. Do đó, mọi người có hứng thú hơn với các cửa hàng loại NoQuery.

Tôi nghĩ rằng phần lớn việc cất cánh có thể liên quan đến lịch sử này. Mở rộng quy mô Google đã lấy một số ý tưởng mới tại Google và mọi người khác làm theo vì đây là giải pháp duy nhất họ biết cho vấn đề mở rộng quy mô ngay bây giờ. Do đó, bạn sẵn sàng làm lại mọi thứ xung quanh ý tưởng cơ sở dữ liệu phân tán của Google vì đó là cách duy nhất để mở rộng ra ngoài một kích thước nhất định.

C - Tính nhất quán
A - Tính khả dụng
P - Dung sai phân vùng
K / V - Khóa / Giá trị


10
CAP, CP, AP, K / V là gì?
biết đến

3
Tra cứu Định lý CAP trên Wikipedia. CA và CP bắt nguồn từ đó. K / V là viết tắt của Khóa / Giá trị, ánh xạ hữu hạn (phân tán) từ khóa thành giá trị.
TÔI CHO CÂU TRẢ LỜI CRAP

" Mọi người khác nhận ra những gì Google vừa làm. " Lol. Có vẻ như một câu trả lời của Scotland cho tôi (còn gọi là KHÔNG CRAP).
ruffin

38

NoQuery tốt hơn RDBMS vì những lý do / tính đúng đắn sau đây của NoQuery

  1. Nó hỗ trợ dữ liệu bán cấu trúc và dữ liệu dễ bay hơi
  2. Nó không có lược đồ
  3. Thông lượng đọc / ghi rất cao
  4. Khả năng mở rộng theo chiều ngang có thể dễ dàng đạt được
  5. Sẽ hỗ trợ Bigdata về số lượng Byte và Peta Bytes
  6. Cung cấp hỗ trợ tốt cho các công cụ Phân tích trên Bigdata
  7. Có thể được lưu trữ trong các máy phần cứng rẻ hơn
  8. Tùy chọn bộ nhớ đệm trong bộ nhớ khả dụng để tăng hiệu suất của các truy vấn
  9. Vòng đời phát triển nhanh hơn cho các nhà phát triển

BIÊN TẬP:

Để trả lời "tại sao RDBMS không thể mở rộng quy mô", vui lòng xem qua RDBMS Overhead pdf được viết bởi Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden và Michael Stonebraker

RDBMS có những thách thức trong việc xử lý khối lượng dữ liệu khổng lồ của các byte Terabyte & Peta . Ngay cả khi bạn có Mảng dữ liệu độc lập / không tốn kém (RAID) và dữ liệu bị xáo trộn, nó cũng không mở rộng tốt cho khối lượng dữ liệu khổng lồ. Bạn yêu cầu phần cứng rất đắt tiền.

Ghi nhật ký : Lắp ráp các bản ghi nhật ký và theo dõi tất cả các thay đổi trong cấu trúc cơ sở dữ liệu làm chậm hiệu suất. Ghi nhật ký có thể không cần thiết nếu khả năng phục hồi không phải là một yêu cầu hoặc nếu khả năng phục hồi được cung cấp thông qua các phương tiện khác (ví dụ: các trang web khác trên mạng).

Khóa : Khóa hai pha truyền thống đặt ra một chi phí khá lớn vì tất cả các truy cập vào cấu trúc cơ sở dữ liệu được điều chỉnh bởi một thực thể riêng biệt, Trình quản lý khóa.

Chốt : Trong cơ sở dữ liệu đa luồng, nhiều cấu trúc dữ liệu phải được chốt trước khi chúng có thể được truy cập. Loại bỏ tính năng này và đi đến một cách tiếp cận đơn luồng có tác động hiệu suất đáng chú ý.

Quản lý bộ đệm : Một hệ thống cơ sở dữ liệu bộ nhớ chính không cần truy cập các trang thông qua nhóm bộ đệm, loại bỏ mức độ gián tiếp trên mỗi lần truy cập bản ghi.

Điều này không có nghĩa là chúng ta phải sử dụng NoQuery qua SQL.

Tuy nhiên, RDBMS tốt hơn NoQuery vì những lý do / thuộc tính sau của RDBMS

  1. Giao dịch với các thuộc tính ACID - Nguyên tử, Tính nhất quán, Cách ly & Độ bền
  2. Tuân thủ Lược đồ mạnh mẽ của dữ liệu được ghi / đọc
  3. Quản lý truy vấn thời gian thực (trong trường hợp kích thước dữ liệu <10 Tera byte)
  4. Thực hiện các truy vấn phức tạp liên quan đến tham gia & nhóm theo mệnh đề

Chúng tôi phải sử dụng RDBMS (SQL) và NoQuery (Không chỉ SQL) tùy thuộc vào trường hợp & yêu cầu nghiệp vụ


2
Điều đáng chú ý là một số cơ sở dữ liệu NoQuery hỗ trợ các giao dịch ACID.
Dave Cassel

15

NOSQL không có lợi thế đặc biệt so với mô hình cơ sở dữ liệu quan hệ. NOSQL giải quyết các hạn chế nhất định của các DBMS SQL hiện tại nhưng nó không ngụ ý bất kỳ khả năng mới nào về cơ bản so với các mô hình dữ liệu trước đó.

NOSQL có nghĩa là chỉ không có SQL (hoặc "không chỉ SQL") mà điều đó không có nghĩa giống như không có quan hệ . Về cơ bản, một cơ sở dữ liệu quan hệ sẽ tạo ra một giải pháp NOSQL rất tốt - chỉ là không có bộ sản phẩm NOSQL hiện tại nào sử dụng mô hình quan hệ.


4
Có vẻ như tại Hội nghị O'Reilly Strata gần đây, Mark Madsen đã đưa ra một cách giải thích mới về "NoQuery" trong lịch sử cơ sở dữ liệu của mình để thay thế "Không chỉ SQL". Bây giờ là: "Không, SQL" ;-)
Lukas Eder

4

RDBMS tập trung nhiều hơn vào mối quan hệ và NoQuery tập trung nhiều hơn vào lưu trữ.

Bạn có thể xem xét sử dụng NoQuery khi RDBMS của bạn gặp phải tắc nghẽn. NoQuery làm cho RDBMS linh hoạt hơn.


4

Ưu điểm lớn nhất của NoQuery so với RDBMS là Khả năng mở rộng .
Cơ sở dữ liệu NoQuery có thể dễ dàng mở rộng ra nhiều nút, nhưng đối với RDBMS thì rất khó.
Khả năng mở rộng không chỉ cung cấp cho bạn nhiều không gian lưu trữ hơn mà hiệu năng còn cao hơn nhiều vì nhiều máy chủ hoạt động cùng một lúc.


3

Nếu bạn cần xử lý lượng dữ liệu khổng lồ với hiệu suất cao

HOẶC LÀ

Nếu mô hình dữ liệu không được xác định trước

sau đó

Cơ sở dữ liệu NoQuery là một lựa chọn tốt hơn.


2

Chỉ cần thêm vào tất cả các thông tin được cung cấp ở trên

Ưu điểm của NoSql:

1) NoQuery là tốt nếu bạn muốn sẵn sàng sản xuất nhanh do sự hỗ trợ của nó cho kiến ​​trúc hướng đối tượng và không có lược đồ.

2) Cuối cùng, db của NoSql phù hợp với ngôn ngữ đơn giản có nghĩa là họ sẽ không cung cấp bất kỳ khóa nào trên dữ liệu (như tài liệu) như trong trường hợp RDBMS và ý nghĩa là ảnh chụp nhanh dữ liệu mới nhất luôn có sẵn và do đó làm tăng độ trễ của ứng dụng của bạn .

3) Nó sử dụng chiến lược MVCC (Điều khiển đồng thời nhiều chế độ xem) để duy trì và tạo ảnh chụp nhanh dữ liệu (tài liệu).

4) Nếu bạn muốn có dữ liệu được lập chỉ mục, bạn có thể tạo chế độ xem sẽ tự động lập chỉ mục dữ liệu theo định nghĩa chế độ xem bạn cung cấp.

Nhược điểm của NoSql:

1) Nó chắc chắn không phù hợp với các ứng dụng giao dịch lớn vì cuối cùng nó phù hợp và không hỗ trợ các thuộc tính ACID.

2) Ngoài ra, nó tạo ra nhiều ảnh chụp nhanh (sửa đổi) dữ liệu của bạn (tài liệu) vì nó sử dụng phương pháp MVCC để kiểm soát đồng thời, do đó, không gian bị tiêu thụ nhanh hơn trước đó khiến cho việc nén và do đó thường xuyên hơn và nó sẽ làm chậm lại ứng dụng đáp ứng khi dữ liệu và giao dịch trong ứng dụng của bạn phát triển. Để truy cập rằng bạn có thể chia tỷ lệ theo chiều ngang của các nút nhưng sau đó sẽ có chi phí cao hơn khi so sánh cơ sở dữ liệu sql.


1

Từ mongodb.com :

Cơ sở dữ liệu NoQuery khác với công nghệ quan hệ cũ hơn trong bốn lĩnh vực chính:

Mô hình dữ liệu : Cơ sở dữ liệu NoQuery cho phép bạn xây dựng một ứng dụng mà không cần phải xác định lược đồ trước tiên không giống như cơ sở dữ liệu quan hệ giúp bạn xác định lược đồ của mình trước khi bạn có thể thêm bất kỳ dữ liệu nào vào hệ thống. Không có lược đồ được xác định trước làm cho cơ sở dữ liệu NoQuery dễ dàng cập nhật hơn khi dữ liệu và yêu cầu của bạn thay đổi.

Cấu trúc dữ liệu : Cơ sở dữ liệu quan hệ được xây dựng trong thời đại mà dữ liệu được cấu trúc khá rõ ràng và được xác định rõ ràng bởi các mối quan hệ của chúng. Cơ sở dữ liệu NoQuery được thiết kế để xử lý dữ liệu phi cấu trúc (ví dụ: văn bản, bài đăng trên phương tiện truyền thông xã hội, video, email) tạo nên phần lớn dữ liệu tồn tại ngày nay.

Chia tỷ lệ : Việc mở rộng cơ sở dữ liệu NoQuery rẻ hơn nhiều so với cơ sở dữ liệu quan hệ vì bạn có thể thêm dung lượng bằng cách nhân rộng ra các máy chủ hàng hóa giá rẻ. Mặt khác, cơ sở dữ liệu quan hệ yêu cầu một máy chủ duy nhất để lưu trữ toàn bộ cơ sở dữ liệu của bạn. Để mở rộng quy mô, bạn cần mua một máy chủ lớn hơn, đắt tiền hơn.

Mô hình phát triển : Cơ sở dữ liệu NoQuery là nguồn mở trong khi cơ sở dữ liệu quan hệ thường là nguồn đóng với phí cấp phép được sử dụng cho phần mềm của họ. Với NoQuery, bạn có thể bắt đầu một dự án mà không cần bất kỳ khoản đầu tư lớn nào vào phí phần mềm trả trước.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.