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

MongoDB + Elasticsearch hay chỉ Elasticsearch?

Nói về các đối số để sử dụng Mongo thay vì / cùng với ES:

  1. Quản lý người dùng / vai trò.

    • Tích hợp sẵn trong MongoDB. Có thể không phù hợp với mọi nhu cầu của bạn, có thể còn vụng về ở đâu đó, nhưng nó tồn tại và nó đã được triển khai cách đây khá lâu.
    • Điều duy nhất để bảo mật trong ES là shield . Nhưng nó chỉ giao hàng cho đăng ký Vàng / Bạch kim để sử dụng trong sản xuất.
  2. Lược đồ

    • ES không có schemaless, nhưng được xây dựng dựa trên Lucene và được viết bằng Java . Ý tưởng cốt lõi của công cụ này - lập chỉ mục và tìm kiếm tài liệu, và làm việc theo cách này đòi hỏi tính nhất quán của chỉ mục. Ở cuối, tất cả các tài liệu phải được đặt trong lucene phẳng chỉ mục, đòi hỏi một số hiểu biết về cách ES sẽ xử lý các tài liệu và giá trị lồng nhau của bạn cũng như cách bạn nên tổ chức các chỉ mục của mình để duy trì sự cân bằng giữa tốc độ và tính đầy đủ / nhất quán của dữ liệu. Làm việc với ES đòi hỏi bạn phải liên tục ghi nhớ một số điều về lược đồ. Tức là:vì bạn có thể lập chỉ mục hầu hết mọi thứ cho ES mà không cần đặt trước ánh xạ tương ứng, ES có thể "đoán" lập bản đồ một cách nhanh chóng nhưng đôi khi làm sai và đôi khi ánh xạ ngầm là xấu, bởi vì một khi đã đặt, nó không thể thay đổi được. / o lập chỉ mục toàn bộ chỉ mục. Vì vậy, tốt hơn hết là không coi ES như một cửa hàng không có cặn, bởi vì bạn có thể dẫm phải một thứ gì đó (và đây sẽ là nỗi đau :)), nhưng thay vì xử lý nó như một lược đồ chuyên sâu, ít nhất là khi bạn làm việc với các tài liệu, nó có thể được chia thành các trường cụ thể.
    • Mặt khác, Mongo có thể "nhai và không để lại mảnh vụn" từ hầu hết mọi thứ bạn cho vào. Và hầu hết các truy vấn của bạn sẽ hoạt động tốt, cho đến khi bạn nhớ cách Mongo xử lý dữ liệu của bạn từ góc độ JavaScript. Và vì JS được nhập yếu, bạn có thể làm việc với quy trình làm việc thực sự không có toán học (chắc chắn, nếu bạn cần như vậy)
  3. Xử lý dữ liệu không phải dạng bảng.

    • ES bị giới hạn trong việc xử lý dữ liệu mà không đưa nó vào chỉ mục tìm kiếm. Và giải pháp này đủ tốt khi bạn cần lưu trữ và truy xuất một số dữ liệu bổ sung (so với dữ liệu bạn muốn tìm kiếm).
    • MongoDB hỗ trợ gridFS . Điều này cung cấp cho bạn khả năng xử lý khối lượng lớn dữ liệu phía sau cùng một giao diện. Tức là bạn có thể lưu trữ dữ liệu nhị phân trong Mongo và truy xuất dữ liệu đó trong cùng một giao diện, từ góc độ mã của bạn.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để chỉ định thứ tự tự nhiên trong MongoDB?

  2. Tìm kiếm toàn văn trên MongoDB GridFS?

  3. Làm cách nào để lưu dữ liệu của tôi trên mongoDB bằng cách sử dụng expressjs?

  4. Tại sao mongoose sử dụng lược đồ khi lợi ích của mongodb được cho là nó không có lược đồ?

  5. Sane mặc định cho MongoDB trên OSX?