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

Có ai đã làm việc với Aerospike? Nó so sánh với MongoDB như thế nào?

Tôi đã sử dụng Aerospike, MongoDB và Redis và đã thử nghiệm nhiều cơ sở dữ liệu NoSQL khác. Tôi có thể nói rằng Aerospike rất giỏi về những gì nó làm nhưng nó khác với MongoDB. Mọi thứ phụ thuộc vào việc bạn định sử dụng cơ sở dữ liệu để làm gì. Tôi có thể cho bạn một ví dụ về những gì tôi đang sử dụng các cơ sở dữ liệu khác nhau của mình. Tôi cũng có thể xem xét sự khác biệt giữa chúng và thảo luận về lợi ích của Aerospike.

MongoDB

Tôi đang sử dụng MongoDB như một sự thay thế SQL. Trong cơ sở dữ liệu MongoDB của tôi, tôi có nhiều trường khác nhau. Thông thường, các trường luôn thay đổi và tôi sẽ cần phải truy vấn ngẫu nhiên trên các trường khác nhau. Đó là một cơ sở dữ liệu rất phi cấu trúc và MongoDB thật tuyệt vời ở điều đó. Tôi cũng đã sử dụng MongoDB làm kho lưu trữ khóa-giá trị tiêu chuẩn. Nó hoạt động tốt nhưng tôi đã yêu cầu MongoDB hoạt động dưới mức tối ưu ở cả quy mô giao dịch và quy mô kích thước cơ sở dữ liệu. Phải thừa nhận rằng cơ sở dữ liệu có thể đã được tối ưu hóa tốt hơn một chút nhưng tôi thấy rất khó để tìm thấy tài liệu về cách định cấu hình MongoDB một cách chính xác trong các tình huống khác nhau.

Redis

Redis là một cửa hàng khóa giá trị thuần túy. Vấn đề lớn nhất của Redis là nó hoàn toàn là trong bộ nhớ (nó sẽ sử dụng đĩa làm bản sao lưu nhưng bạn không thể lưu trữ nhiều thông tin hơn so với bộ nhớ có sẵn). Nó cực kỳ nhanh chóng cho những gì nó được sử dụng. Cá nhân tôi sử dụng nó cho một cơ sở dữ liệu giao dịch nhỏ:Tôi thực hiện các chức năng rất đơn giản trên các phím như đếm số lần một sự kiện đã xảy ra cho một người dùng nhất định. Tôi cũng thực hiện tra cứu nhanh trong bộ nhớ mà tôi cần ánh xạ tới các giá trị khác nhau. Redis là một công cụ tuyệt vời cho một tập dữ liệu nhỏ và nó cực kỳ nhanh chóng. Cấu hình cũng rất dễ dàng.

Aerospike

Cá nhân tôi sử dụng Aerospike để thay thế Redis khi cần mở rộng quy mô. Từ hiểu biết của tôi, nó có thể được sử dụng cho nhiều hơn nữa. Giống như Redis, Aerospike là một cửa hàng có giá trị quan trọng. Tôi tin rằng phiên bản mã nguồn mở cũng hỗ trợ các chỉ mục thứ cấp mà Redis không hỗ trợ (Tôi chưa sử dụng các chỉ mục phụ trong quá trình sản xuất nhưng đã thực hiện ít thử nghiệm trên chúng).

Tính năng tốt nhất của Aerospike là khả năng mở rộng quy mô. Vấn đề lớn nhất tôi cần giải quyết khi xem xét Aerospike là mở rộng hệ thống của tôi để xử lý các tập dữ liệu lớn trong khi vẫn cực kỳ nhanh. Dự án tôi sử dụng Aerospike có yêu cầu rất nghiêm ngặt về tốc độ. Tôi thường thực hiện 3-4 lần tra cứu cơ sở dữ liệu cộng với các xử lý khác và cần có thời gian giao dịch dưới 50ms. Một vài tra cứu trên tập dữ liệu có dung lượng 300GB trở lên. Tôi không thể tìm thấy giải pháp để giữ dữ liệu này và làm cho nó có thể truy cập được trong một khoảng thời gian hợp lý. Redis rõ ràng sẽ không hoạt động trừ khi tôi có một chiếc máy có RAM 300GB +. MongoDB bắt đầu hoạt động cực kỳ kém với kích thước thấp hơn nhiều so với 300GB. Vì vậy, tôi đã thử Aerospike và nó có thể xử lý mọi thứ rất tốt. Điều tốt nhất về Aerospike:khi tập dữ liệu của tôi đã phát triển, tôi không phải làm gì nhiều hơn là dựng một hộp mới khi cần. Tốc độ vẫn ổn định.

Tôi cũng thấy tài liệu về Aerospikes rất hay. Nó không quá khó để định cấu hình và khá dễ dàng để tìm câu trả lời cho bất kỳ vấn đề nào xảy ra.

Kết luận

Vậy, Aerospike có tốt như họ tuyên bố? Cá nhân tôi, tôi đã thấy không có gì ít hơn những gì đã được tuyên bố. Tôi chưa cần phải mở rộng quy mô lên 1 triệu TPS nhưng tôi tin rằng có đủ phần cứng là có thể. Tôi cũng tin rằng những con số cho thấy sự khác biệt về tốc độ giữa Aerospike và MongoDB. Aerospike là một cơ sở dữ liệu được "định cấu hình" và "lên kế hoạch" nhiều hơn so với MongoDB. Bởi vì Aerospike này sẽ nhanh hơn nhiều so với MongoDB. Nó chỉ phải lo lắng về một chỉ số duy nhất (hoặc trong trường hợp chỉ số phụ, vài trăm) chỉ mục không giống như MongoDB có thể thay đổi động. Câu hỏi bạn thực sự cần đặt ra là bạn đang cố gắng hoàn thành điều gì với cơ sở dữ liệu của mình. Sau đó, xem xét cơ sở dữ liệu nào sẽ phù hợp với nhu cầu của bạn nhất. Nếu bạn cần một cơ sở dữ liệu lưu trữ khóa giá trị, nhanh, có thể mở rộng, tôi sẽ nói rằng Aerospike có lẽ là tốt nhất hiện có.

Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi cụ thể nào hoặc cần làm rõ bất kỳ điều gì. Tôi có thể sẽ giúp bạn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xóa _Id khỏi phản hồi tổng hợp mongoose

  2. Các biến Broadcast không hiển thị bên trong Partitions Apache Spark

  3. Cách nhanh nhất để có được biểu đồ kích thước mảng bằng cách sử dụng khung tổng hợp MongoDB

  4. Làm cách nào để tôi có thể sử dụng MongoDB để tìm tất cả các tài liệu có một trường, bất kể giá trị của trường đó là bao nhiêu?

  5. Làm cách nào để chèn các đối tượng lồng nhau vào MongoDB với Laravel 5?