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

Tại sao không nên sử dụng các hàm được lưu trữ phía máy chủ trong MongoDB?

Tôi chắc chắn rằng tôi đã nêu danh sách một vài lần mặc dù kết quả tìm kiếm của Google chỉ được lấp đầy bởi những người cho bạn biết cách thực hiện:

  • Đó là eval
  • eval có khả năng tự nhiên để dễ dàng tiêm vào, nó giống như một đối tượng không phải PDO đối với SQL, nếu bạn không có một thư viện thoát quy mô đầy đủ xung quanh nó, nó sẽ khiến bạn rối tung lên. Bằng cách sử dụng các hàm này, bạn đang thay thế một cách hiệu quả ngôn ngữ mẹ đẻ an toàn hơn của MongoDB cho một thứ không an toàn như bất kỳ SQL cũ nào hiện có.
  • Nó có một khóa toàn cục và có thể sử dụng khóa ghi và sẽ không phát hành cho đến khi hoàn tất hoạt động, không giống như các hoạt động khác sẽ phát hành trong một số trường hợp nhất định.
  • eval chỉ hoạt động trên Primaries và không bao giờ hoạt động với bất kỳ thành viên nào khác của nhóm bản sao
  • Về cơ bản, nó đang chạy, không bị kiểm tra, rất nhiều JS trong envo V8 / spidermonkey đi kèm với MongoDB với đầy đủ khả năng chạm vào bất kỳ phần nào của cơ sở dữ liệu và lệnh quản trị của bạn, điều đó có an toàn không?
  • Nó KHÔNG phải là MongoDB và cũng không phải là "MongoDBs SQL", nó chạy trong môi trường JS tích hợp sẵn, không phải bản thân mã MongoDBs C ++ (không giống như khung tổng hợp).
  • Do điểm trước đó, nó CỰC KỲ chậm so với nhiều tùy chọn khác, điều này phù hợp với $where cách sử dụng cũng vậy.

Như vậy là đủ để bạn bắt đầu trên mặt trận này.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách bắt ngoại lệ khi tạo cá thể MongoClient

  2. MongoDB $ log10

  3. Làm thế nào để khôi phục từ một lần khôi phục MongoDB?

  4. Đối tượng bộ sưu tập không phải là lỗi có thể gọi được với PyMongo

  5. Tạo chỉ mục văn bản ký tự đại diện trong MongoDB