MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bất kỳ lý do chi tiết và cụ thể nào cho việc Tại sao MongoDB nhanh hơn nhiều so với SQL DBs?

Trước tiên, hãy so sánh quả táo với quả táo: Đọc và ghi với MongoDB giống như việc đọc và ghi một lần bằng khóa chính trên một bảng không có chỉ mục không phân cụm trong RDBMS.

Vì vậy, hãy để điểm chuẩn chính xác:http://mysqlha.blogspot.de/2010/09/mysql-versus-mongodb-yet-aosystem-silly.html

Và hóa ra, sự khác biệt về tốc độ so với chính xác cùng một hoạt động sơ khai là không lớn. Trên thực tế, MySQL nhanh hơn một chút. Tôi muốn nói, chúng tương đương nhau.

Tại sao? Bởi vì trên thực tế, cả hai hệ thống đang làm những điều tương tự trong điểm chuẩn cụ thể này. Trả lại một hàng, được tìm kiếm bằng khóa chính, thực sự không phải là nhiều công việc. Đó là một hoạt động rất nhanh. Tôi nghi ngờ rằng chi phí giao tiếp xuyên quy trình là một phần quan trọng của nó.

Dự đoán của tôi là, mã được điều chỉnh nhiều hơn trong MySQL lớn hơn các chi phí ít hệ thống hơn một chút của MongoDB (không có khóa logic và có thể là một số thứ nhỏ khác).

Điều này dẫn đến một kết luận thú vị: Bạn có thể sử dụng MySQL như một cơ sở dữ liệu tài liệu và nhận được hiệu suất tuyệt vời từ nó.

Nếu người phỏng vấn nói:"Chúng tôi không quan tâm đến tài liệu hay phong cách, chúng tôi chỉ cần một cơ sở dữ liệu nhanh hơn nhiều, bạn nghĩ chúng tôi nên sử dụng MySQL hay MongoDB?", Tôi sẽ trả lời như thế nào?

Tôi khuyên bạn nên bỏ qua hiệu suất trong giây lát và xem xét sức mạnh tương đối của hai hệ thống. MongoDB có những thứ như mở rộng quy mô (cách tăng lên) và nhân rộng. Đối với MySQL, có rất nhiều tính năng khác như truy vấn phong phú, mô hình đồng thời, công cụ và độ chín tốt hơn và nhiều tính năng khác.

Về cơ bản, bạn có thể đánh đổi các tính năng để lấy hiệu suất. Bạn có sẵn sàng làm điều đó không? Đó là một sự lựa chọn không thể được thực hiện một cách chung chung. Nếu bạn chọn hiệu suất bằng bất kỳ giá nào, hãy cân nhắc điều chỉnh MySQL trước khi thêm một công nghệ khác.

Đây là những gì sẽ xảy ra khi một máy khách truy xuất một hàng / tài liệu bằng khóa chính. Tôi sẽ chú thích sự khác biệt giữa cả hai hệ thống:

  1. Máy khách tạo một lệnh nhị phân (giống nhau)
  2. Máy khách gửi nó qua TCP (giống nhau)
  3. Máy chủ phân tích cú pháp lệnh (giống nhau)
  4. Máy chủ truy cập kế hoạch truy vấn từ bộ nhớ cache (chỉ SQL, không phải MongoDB, không phải HandlerSocket)
  5. Máy chủ yêu cầu thành phần B-Tree truy cập vào hàng (giống nhau)
  6. Máy chủ thực hiện một khóa vật lý chỉ đọc trên đường dẫn B-Tree dẫn đến hàng (giống nhau)
  7. Máy chủ có một khóa logic trên hàng (chỉ SQL, không phải MongoDB, không phải HandlerSocket)
  8. Máy chủ sắp xếp hàng và gửi nó qua TCP (giống nhau)
  9. Ứng dụng khách deserialize nó (giống nhau)

Chỉ có hai bước bổ sung cho các RDBMS dựa trên SQL điển hình. Đó là lý do tại sao thực sự không có sự khác biệt.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thực hiện phân trang trong mongodb

  2. Nhập dữ liệu CSV dưới dạng một mảng trong MongoDB bằng cách sử dụng mongoimport

  3. Định cấu hình Xác thực MongoDB-CR làm Mặc định trên MongoDB 3.x

  4. Lỗi Mongoose Truyền tới ObjectId không thành công cho giá trị XXX tại đường dẫn _id là gì?

  5. mongoose unique:true không hoạt động