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

Redis vs MongoDB

1. Tổng quan

Thông thường, chúng tôi cảm thấy khó khăn khi quyết định chọn một cơ sở dữ liệu không quan hệ làm nơi lưu trữ dữ liệu chính cho các ứng dụng của chúng tôi.

Trong bài viết này, chúng ta sẽ khám phá hai cơ sở dữ liệu không quan hệ phổ biến, Redis và MongoDB.

Đầu tiên, chúng ta sẽ xem xét nhanh các tính năng được cung cấp bởi Redis và MongoDB. Sau đó, chúng ta sẽ thảo luận khi nào nên sử dụng Redis hoặc MongoDB bằng cách so sánh chúng với nhau.

2. Redis

Redis là một kho lưu trữ cấu trúc dữ liệu trong bộ nhớ cung cấp một tập hợp các tính năng phong phú. Nó hữu ích như một bộ nhớ cache, môi giới tin nhắn và hàng đợi .

2.1. Tính năng

  • Giao diện dòng lệnh chuyên dụng - redis-cli
  • Lưu trữ các cặp khóa-giá trị và hỗ trợ cấu trúc dữ liệu như danh sách, tập hợp và băm
  • Có thể lưu trữ các giá trị có kích thước lên đến 512MB
  • Cho phép xuất bản và đăng ký tin nhắn bằng cách sử dụng hàng đợi tin nhắn pub / sub
  • Hỗ trợ không gian địa lý bằng cách cung cấp các lệnh đặc biệt để quản lý dữ liệu không gian địa lý theo thời gian thực
  • Cho phép thực thi tập lệnh LUA
  • Cung cấp cho nhiều khách hàng các công nghệ phổ biến
  • Hỗ trợ IoT và các thiết bị nhúng
  • Hỗ trợ dữ liệu mùa xuân
  • Hỗ trợ Spring Cache bằng các ứng dụng khách Java như Redisson

2.2. Cài đặt

Chúng tôi có thể tải xuống máy chủ Redis mới nhất từ ​​trang web chính thức và cài đặt nó:

$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make

3. MongoDB

MongoDB là cơ sở dữ liệu tài liệu NoSQL lưu trữ thông tin trong cấu trúc tài liệu giống JSON. Nó hữu ích như một kho lưu trữ dữ liệu không toán học để thay đổi nhanh chóng các ứng dụng, quá trình tạo mẫu và khởi động trong giai đoạn thiết kế và triển khai .

3.1. Tính năng

  • Cung cấp giao diện dòng lệnh tương tác MongoDB Shell ( mongosh ) để thực hiện các thao tác quản trị và truy vấn / cập nhật dữ liệu
  • Cấu trúc truy vấn dựa trên JSON với sự hỗ trợ của các phép nối
  • Hỗ trợ nhiều loại tìm kiếm khác nhau như tìm kiếm dựa trên địa lý, tìm kiếm đồ thị và tìm kiếm văn bản
  • Hỗ trợ các giao dịch ACID nhiều tài liệu
  • Hỗ trợ dữ liệu mùa xuân
  • Có sẵn trong các phiên bản cộng đồng, doanh nghiệp và đám mây (MongoDB Atlas)
  • Các trình điều khiển khác nhau cho các công nghệ chính như C ++, Java, Go, Python, Rust và Scala
  • Cung cấp GUI để khám phá và thao tác dữ liệu thông qua MongoDB La bàn
  • Cung cấp phần trình bày dữ liệu trực quan bằng cách sử dụng Biểu đồ MongoDB
  • Trình kết nối MongoDB BI cung cấp kết nối với BI và nền tảng phân tích

3.2. Cài đặt

Chúng tôi có thể tải xuống máy chủ MongoDB mới nhất hoặc nếu sử dụng macOS, chúng tôi có thể cài đặt phiên bản cộng đồng trực tiếp bằng Homebrew:

brew tap mongodb/brew
brew install [email protected]

4. Khi nào thì sử dụng Redis?

4.1. Bộ nhớ đệm

Redis cung cấp hiệu suất bộ nhớ đệm tốt nhất trong phân khúc bằng cách cung cấp thời gian phản hồi dưới mili giây cho các mục thường xuyên được yêu cầu .

Hơn nữa, nó cho phép đặt thời gian hết hạn trên các phím bằng các lệnh như EXPIRE , EXPIREAT PEXPIRE .

Đồng thời, chúng tôi có thể sử dụng PERSIST lệnh để loại bỏ thời gian chờ và duy trì cặp khóa-giá trị, làm cho nó lý tưởng để lưu vào bộ nhớ đệm.

4.2. Lưu trữ dữ liệu linh hoạt

Redis cung cấp các cấu trúc dữ liệu khác nhau như chuỗi, danh sách, tập hợp và băm để quyết định cách lưu trữ và tổ chức dữ liệu của chúng tôi. Do đó, Redis cho chúng tôi hoàn toàn tự do trong việc triển khai các cấu trúc cơ sở dữ liệu.

Tuy nhiên, nó cũng có thể cần một thời gian dài để suy nghĩ về thiết kế DB. Tương tự, việc xây dựng và duy trì cấu trúc bên trong của lược đồ bằng Redis có thể là một thách thức.

4.3. Lưu trữ dữ liệu phức tạp

Tương tự, với sự kết hợp của danh sách, tập hợp và băm, chúng tôi có thể triển khai các cấu trúc dữ liệu phức tạp như hàng đợi, mảng, tập hợp đã sắp xếp và đồ thị để lưu trữ của chúng tôi.

4.4. Nhà môi giới trò chuyện, hàng đợi và tin nhắn

Redis có thể xuất bản và đăng ký các tin nhắn bằng cách sử dụng hàng đợi tin nhắn pub / sub với đối sánh mẫu . Do đó, Redis có thể hỗ trợ các ứng dụng trò chuyện thời gian thực và nguồn cấp dữ liệu mạng xã hội.

Tương tự, chúng tôi có thể triển khai một hàng đợi nhẹ bằng cách sử dụng cấu trúc dữ liệu danh sách . Hơn nữa, danh sách của Redis hỗ trợ các hoạt động nguyên tử và cung cấp khả năng chặn, làm cho nó phù hợp để triển khai trình môi giới thông báo.

4.5. Cửa hàng phiên

Redis cung cấp một kho lưu trữ dữ liệu trong bộ nhớ với khả năng bền bỉ, khiến nó trở thành một ứng cử viên sáng giá để lưu trữ và quản lý các phiên cho các ứng dụng web / di động.

4.6. Hệ thống nhúng và IoT

Theo tài liệu chính thức của Redis, các phiên bản mới hơn bắt đầu từ 4 và 5 hỗ trợ bộ xử lý ARM và Raspberry Pi .

Ngoài ra, nó chạy trên Andriod và đang nỗ lực để đưa Android làm nền tảng được hỗ trợ chính thức.

Vì vậy, Redis trông lý tưởng cho IoT và các hệ thống nhúng, được hưởng lợi bởi dung lượng bộ nhớ nhỏ và yêu cầu CPU thấp.

4.7. Xử lý thời gian thực

Là một cấu trúc dữ liệu trong bộ nhớ cực nhanh, chúng ta có thể sử dụng nó cho các ứng dụng xử lý thời gian thực.

Ví dụ:Redis có thể phân phối hiệu quả các ứng dụng cung cấp các tính năng như cảnh báo giá cổ phiếu, bảng xếp hạng và phân tích thời gian thực.

4.8. Ứng dụng không gian địa lý

Redis cung cấp cấu trúc dữ liệu trong bộ nhớ được xây dựng có mục đích Geo Set - được xây dựng trên tập hợp được sắp xếp - để quản lý các chỉ số không gian địa lý. Ngoài ra, nó cung cấp các lệnh địa lý cụ thể như GEOADD , GEOPOS GEORADIUS để thêm, đọc và phân tích dữ liệu không gian địa lý.

Do đó, chúng tôi có thể xây dựng các ứng dụng không gian địa lý theo thời gian thực với các tính năng dựa trên vị trí như thời gian lái xe và khoảng cách lái xe bằng Redis .

5. Khi nào thì sử dụng MongoDB?

5.1. Truy vấn động

MongoDB cung cấp một bộ công cụ truy vấn mạnh mẽ. Ngoài ra, nó cung cấp một loạt các lược đồ truy vấn linh hoạt như tìm kiếm dựa trên địa lý, tìm kiếm đồ thị và tìm kiếm văn bản để truy xuất dữ liệu hiệu quả.

Đồng thời, với sự hỗ trợ của các truy vấn có cấu trúc JSON, MongoDB có vẻ là lựa chọn tốt hơn cho các tình huống mà tìm kiếm và phân tích dữ liệu là các hoạt động hàng ngày.

5.2. Lược đồ thay đổi nhanh chóng

MongoDB có thể hữu ích trong giai đoạn thiết kế và triển khai sớm, nơi chúng tôi yêu cầu các thay đổi nhanh chóng đối với lược đồ của mình. Đồng thời, nó không đưa ra các giả định về dữ liệu cơ bản và tự tối ưu hóa mà không cần lược đồ.

5.3. Tạo mẫu và Hackathons

Bằng cách tuân theo cấu trúc tài liệu giống JSON, MongoDB cho phép tạo mẫu nhanh, tích hợp nhanh với các kênh giao diện người dùng và hackathons .

Đồng thời, nó có thể hữu ích cho các nhóm cấp dưới không muốn đối phó với sự phức tạp của RDBMS.

5.4. Danh mục

Bằng cách cung cấp giản đồ động tự mô tả, MongoDB giúp việc thêm sản phẩm, tính năng và đề xuất dễ dàng hơn cho các danh mục như thương mại điện tử, quản lý tài sản và hàng tồn kho.

Chúng tôi cũng có thể sử dụng các truy vấn rõ ràng trong MongoDB cho các tính năng như tìm kiếm và phân tích nâng cao bằng cách lập chỉ mục một trường hoặc tập hợp các trường của tài liệu có cấu trúc JSON.

5.5. Ứng dụng di động

Cấu trúc tài liệu JSON của MongoDB cho phép lưu trữ các loại dữ liệu khác nhau từ các thiết bị khác nhau cùng với chỉ mục không gian địa lý.

Bên cạnh đó, khả năng mở rộng theo chiều ngang với sharding gốc cho phép dễ dàng mở rộng ứng dụng dành cho thiết bị di động. Do đó, MongoDB có thể phục vụ hàng tấn người dùng, xử lý hàng petabyte dữ liệu và hỗ trợ hàng trăm nghìn thao tác mỗi giây, khiến nó trở thành một lựa chọn xứng đáng để sao lưu các ứng dụng di động.

5.6. Ứng dụng phong phú về nội dung

Không dễ dàng để kết hợp nhiều nội dung khác nhau trong RDBMS cho các ứng dụng hiện đại giàu nội dung. Mặt khác, MongoDB cho phép lưu trữ và cung cấp nội dung phong phú như văn bản, âm thanh và video .

Ngoài ra, chúng tôi có thể dễ dàng lưu trữ các tệp lớn hơn 16MB một cách hiệu quả bằng cách sử dụng MongoDB GridFS . Nó cho phép truy cập một phần của các tệp lớn mà không cần tải toàn bộ tệp vào bộ nhớ.

Ngoài ra, nó tự động đồng bộ hóa các tệp và siêu dữ liệu của chúng tôi trên tất cả các máy chủ. Do đó, MongoDB có vẻ là lựa chọn phù hợp hơn để hỗ trợ các ứng dụng giàu nội dung.

5.7. Ứng dụng trò chơi

Tương tự như các ứng dụng dành cho thiết bị di động và nội dung phong phú, chơi game cũng yêu cầu cấu trúc dữ liệu động và mở rộng quy mô lớn. Do đó, MongoDB có thể là một lựa chọn đầy hứa hẹn cho các ứng dụng trò chơi.

5.8. Dịch vụ cơ sở dữ liệu đám mây toàn cầu

MongoDB Atlas khả dụng trên nhiều dịch vụ đám mây như AWS, Google Cloud và Azure . Ngoài ra, với cơ chế sao chép và chuyển đổi dự phòng được tích hợp sẵn, nó cung cấp một hệ thống phân tán có tính khả dụng cao. Do đó, chúng tôi có thể nhanh chóng triển khai và quản lý cơ sở dữ liệu và sử dụng nó như một dịch vụ cơ sở dữ liệu đám mây toàn cầu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoimport của tệp JSON

  2. Làm cách nào để xác định các phương thức trong mô hình Mongoose?

  3. Làm cách nào để truy cập bộ sưu tập có sẵn với Mongoose?

  4. Làm cách nào để lấy mảng từ bộ sưu tập mongoDB?

  5. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh MongoDB và Firebase