Vì vậy, tôi đã cố gắng tìm ra điểm mấu chốt thực sự khi nói đến NoSQL vs RDBMS bản thân mình, và luôn luôn kết thúc với một phản ứng mà không hoàn toàn cắt nó. Trong tìm kiếm của tôi, có 2 sự khác biệt chính giữa NoSQL và SQL, với chỉ 1 là một lợi thế thực sự.
ACID vs CƠ SỞ - NoSQL thường lá ra một số tính năng ACID của SQL, loại 'gian lận' đó là cách để hiệu suất cao hơn bằng cách để lại lớp trừu tượng này để các lập trình viên. Điều này đã được bao phủ bởi các áp phích trước đó.
Chia tỷ lệ ngang - Lợi thế thực sự của NoSQL là chia tỷ lệ ngang, còn gọi là sharding.Xem xét các tài liệu NoSQL là một đối tượng 'khép kín', các đối tượng có thể nằm trên các máy chủ khác nhau mà không phải lo lắng về việc nối các hàng từ nhiều máy chủ, như trường hợp với mô hình quan hệ.
Hãy nói rằng chúng ta muốn trả về một đối tượng như thế này:
post {
id: 1
title: 'My post'
content: 'The content'
comments: {
comment: {
id: 1
}
comment: {
id: 2
}
...
views: {
view: {
user: 1
}
view: {
user: 2
}
...
}
}
Trong NoSQL, đối tượng đó sẽ cơ bản được lưu trữ như là, và do đó có thể nằm trên một máy chủ duy nhất như là một loại tự đối tượng -contained, mà không cần phải tham gia với dữ liệu từ các bảng khác có thể nằm trên các máy chủ DB khác.
Tuy nhiên, với DB quan hệ, bài đăng sẽ cần tham gia với các nhận xét từ bảng comments
cũng như lượt xem từ bảng views
. Đây không phải là một vấn đề trong SQL ~ UNTIL ~ DB được chia thành các mảnh, trong đó case 'comment 1' có thể nằm trên một máy chủ DB, trong khi 'bình luận 2' trên một máy chủ DB khác. Điều này làm cho việc tạo đối tượng rất giống nhau trong RDBMS trở nên khó khăn hơn nhiều so với trong một NoSQL DB.
Có chuyên gia DB nào ngoài đó xác nhận hoặc tranh luận những điểm này không?
RavenDB [hỗ trợ giao dịch] (http://ravendb.net/documentation/docs-api-transactions), mặc dù không theo nghĩa truyền thống. – vcsjones
Cảm ơn, nó có ý nghĩa với tôi. Tôi có thể hỏi nếu thiếu sự hỗ trợ của giao dịch là một bất lợi của NoSQL? Và có trường hợp nào hỗ trợ giao dịch không quan trọng hay ít sử dụng để thiếu sự hỗ trợ này không phải là một bất lợi? – xiaohan2012
Nó sẽ là một disavantage nếu bạn cần nó: (NoSql so với sql là một sự cân bằng dễ dàng khả năng mở rộng, so với dễ quản lý giao dịch.Vì vậy, nếu bạn nói tôi cần giao dịch và đi sql, khả năng mở rộng chỉ có khó khăn hơn, nếu bạn đi nosql và sau đó –