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

Các phương pháp hay nhất để chạy MongoDB trong một cụm

Triển khai cơ sở dữ liệu theo cụm là một chuyện, nhưng cách bạn duy trì DBM của mình khi ở trong cụm có thể là một công việc lớn để cung cấp nhất quán các ứng dụng của bạn. Người ta nên có bản cập nhật thường xuyên về trạng thái của cơ sở dữ liệu, đặc biệt là các số liệu quan trọng nhất để có manh mối về những gì cần nâng cấp hoặc thay đổi như một cách để ngăn chặn bất kỳ nút thắt cổ chai nào có thể xuất hiện.

Có rất nhiều cân nhắc liên quan đến MongoDB mà người ta nên tính đến, đặc biệt là việc cài đặt và chạy nó rất dễ xảy ra khả năng bỏ qua các phương pháp quản lý cơ sở dữ liệu cơ bản là rất cao.

Đôi khi, các nhà phát triển không tính đến sự phát triển trong tương lai và việc sử dụng cơ sở dữ liệu ngày càng tăng, do đó dẫn đến sự cố ứng dụng hoặc dữ liệu với một số vấn đề về tính toàn vẹn bên cạnh việc không nhất quán.

Trong bài viết này, chúng tôi sẽ thảo luận về một số phương pháp hay nhất mà người ta nên sử dụng cho MongoDB cluster để có hiệu suất hiệu quả cho các ứng dụng của bạn. Một số yếu tố cần xem xét bao gồm ...

  1. Nâng cấp lên phiên bản mới nhất
  2. Công cụ lưu trữ thích hợp
  3. Phân bổ tài nguyên phần cứng
  4. Nhân rộng và phân tích sắc nét
  5. Không bao giờ thay đổi tệp cấu hình máy chủ
  6. Chiến lược bảo mật tốt

Nâng cấp lên phiên bản mới nhất

Tôi đã làm việc với MongoDB từ các phiên bản trước 3.2 và thành thật mà nói, mọi thứ không hề dễ dàng vào thời điểm đó. Với những phát triển tuyệt vời, các lỗi đã sửa và các tính năng mới được giới thiệu, tôi sẽ khuyên bạn luôn nâng cấp cơ sở dữ liệu của mình lên phiên bản mới nhất. Ví dụ:sự ra đời của khung tổng hợp có tác động hiệu suất tốt hơn thay vì dựa vào khái niệm Map-Reduce đã tồn tại. Với phiên bản 4.0 mới nhất, giờ đây người ta có khả năng sử dụng tính năng giao dịch đa tài liệu, tính năng này thường cải thiện các hoạt động thông lượng. Phiên bản mới nhất cũng có thêm một số toán tử chuyển đổi kiểu mới như $ toInt, $ toString, $ trim và $ toBool. Toán tử này sẽ giúp ích rất nhiều trong việc xác nhận dữ liệu do đó tạo ra một số cảm giác về tính nhất quán của dữ liệu. Khi nâng cấp, vui lòng tham khảo tài liệu để bạn có thể tránh mắc phải những sai lầm nhỏ có thể dẫn đến sai sót.

Chọn một công cụ lưu trữ thích hợp

MongoDB hỗ trợ 3 công cụ lưu trữ cho đến nay đó là:công cụ lưu trữ WiredTiger, In-Memory và MMAPv1. Mỗi công cụ lưu trữ này đều có ưu điểm và hạn chế so với công cụ khác nhưng sự lựa chọn của bạn sẽ phụ thuộc vào đặc điểm kỹ thuật ứng dụng của bạn và chức năng cốt lõi của công cụ. Tuy nhiên, cá nhân tôi thích công cụ lưu trữ WiredTiger hơn và tôi muốn giới thiệu công cụ này cho những người không chắc chắn nên sử dụng công cụ nào. Công cụ lưu trữ WiredTiger rất phù hợp với hầu hết các khối lượng công việc, cung cấp mô hình đồng thời cấp tài liệu, điểm kiểm tra và nén.

Một số cân nhắc về việc lựa chọn công cụ lưu trữ phụ thuộc vào các khía cạnh sau:

  1. Giao dịch và tính nguyên tử: cung cấp dữ liệu trong quá trình chèn hoặc cập nhật chỉ được cam kết khi tất cả các điều kiện và giai đoạn trong ứng dụng đã được thực hiện thành công. Do đó, các hoạt động được gộp lại với nhau trong một đơn vị bất biến. Với tính năng này, giao dịch đa tài liệu tại chỗ có thể được hỗ trợ như trong phiên bản MongoDB mới nhất dành cho công cụ lưu trữ WiredTiger.
  2. Loại khóa: nó là một chiến lược kiểm soát việc truy cập hoặc cập nhật thông tin. Trong thời gian khóa, không có thao tác nào khác có thể thay đổi dữ liệu của đối tượng đã chọn cho đến khi thao tác hiện tại được thực hiện. Do đó, các truy vấn bị ảnh hưởng tại thời điểm này, do đó điều quan trọng là phải theo dõi chúng và giảm phần lớn cơ chế khóa bằng cách đảm bảo bạn chọn công cụ lưu trữ thích hợp nhất cho dữ liệu của mình.
  3. Lập chỉ mục: Các công cụ lưu trữ trong MongoDB cung cấp các chiến lược lập chỉ mục khác nhau tùy thuộc vào loại dữ liệu bạn đang lưu trữ. Hiệu quả của cấu trúc dữ liệu đó phải khá thân thiện với khối lượng công việc của bạn và người ta có thể xác định điều này bằng cách coi mọi chỉ mục bổ sung như có một số chi phí hiệu suất. Viết cấu trúc dữ liệu được tối ưu hóa có chi phí thấp hơn cho mọi chỉ mục trong môi trường ứng dụng chèn cao hơn so với cấu trúc dữ liệu được tối ưu hóa không ghi. Đây sẽ là một trở ngại lớn, đặc biệt là khi một số lượng lớn các chỉ mục có liên quan và việc lựa chọn một công cụ lưu trữ không phù hợp. Do đó, việc chọn một công cụ lưu trữ thích hợp có thể có tác động đáng kể.

Phân bổ tài nguyên phần cứng

Khi người dùng mới đăng nhập vào ứng dụng của bạn, cơ sở dữ liệu sẽ phát triển theo thời gian và các phân đoạn mới sẽ được giới thiệu. Tuy nhiên, bạn không thể dựa vào tài nguyên phần cứng mà bạn đã thiết lập trong giai đoạn triển khai. Khối lượng công việc sẽ tăng lên tương ứng và do đó yêu cầu cung cấp nhiều tài nguyên xử lý hơn như CPU ​​và RAM để hỗ trợ các cụm dữ liệu lớn của bạn. Điều này thường được đề cập đến việc lập kế hoạch năng lực trong MongoDB. Các phương pháp hay nhất về lập kế hoạch năng lực bao gồm:

  • Theo dõi cơ sở dữ liệu của bạn liên tục và điều chỉnh cho phù hợp với mong đợi. Như đã đề cập trước đây, sự gia tăng số lượng người dùng sẽ kích hoạt nhiều truy vấn hơn sau đó với khối lượng công việc tăng lên, đặc biệt nếu bạn sử dụng các chỉ mục. Bạn có thể bắt đầu gặp phải tác động này đối với phần cuối của ứng dụng khi nó bắt đầu ghi lại sự thay đổi về tỷ lệ phần trăm số lần ghi so với số lần đọc theo thời gian. Do đó, bạn sẽ cần phải định cấu hình lại cấu hình phần cứng của mình để giải quyết vấn đề này. Sử dụng mongoperf và công cụ MMS để phát hiện những thay đổi trong các thông số hiệu suất hệ thống.
  • Ghi lại tất cả các mặt trước yêu cầu về hiệu suất của bạn. Khi bạn gặp phải vấn đề tương tự, ít nhất bạn sẽ có một điểm tham chiếu sẽ giúp bạn tiết kiệm thời gian. Bản ghi của bạn phải liên quan đến kích thước dữ liệu bạn muốn lưu trữ, phân tích các truy vấn về độ trễ và lượng dữ liệu bạn muốn truy cập tại một thời điểm nhất định. Trong môi trường sản xuất, bạn cần xác định xem mình sẽ xử lý bao nhiêu yêu cầu mỗi giây và cuối cùng là độ trễ mà bạn có thể chấp nhận được.
  • Giai đoạn Chứng minh Khái niệm. Thực hiện một thiết kế lược đồ / chỉ mục và hiểu các mẫu truy vấn, sau đó tinh chỉnh ước tính của bạn về kích thước tập hợp hoạt động. Ghi lại cấu hình này làm điểm tham chiếu để thử nghiệm với các bản sửa đổi liên tiếp của ứng dụng.
  • Thực hiện các bài kiểm tra của bạn với khối lượng công việc thực tế. Sau khi thực hiện giai đoạn khái niệm bằng chứng, chỉ triển khai sau khi thực hiện một thử nghiệm đáng kể với dữ liệu trong thế giới thực và các yêu cầu về hiệu suất.

Nhân rộng và Làm sắc nét

Đây là hai khái niệm chính về đảm bảo Dữ liệu có sẵn cao và tăng khả năng mở rộng theo chiều ngang tương ứng trong cụm MongoDB.

Sharding về cơ bản phân vùng dữ liệu trên các máy chủ thành các phần nhỏ được gọi là phân đoạn. Việc cân bằng dữ liệu giữa các phân đoạn là tự động, các phân đoạn có thể được thêm vào hoặc xóa bỏ mà không nhất thiết phải sử dụng cơ sở dữ liệu ngoại tuyến.

Sao chép ở đầu bên kia duy trì nhiều bản sao dự phòng của dữ liệu để có tính khả dụng cao. Đây là một tính năng được tích hợp sẵn trong MongoDB và hoạt động trên một mạng diện rộng mà không cần đến các mạng chuyên biệt. Đối với thiết lập cụm, tôi khuyên bạn nên có ít nhất 2 mongos trở lên, 3 máy chủ cấu hình, 1 phân đoạn để đảm bảo kết nối giữa các máy tham gia vào cụm phân đoạn. Sử dụng tên DNS thay vì IP trong cấu hình.

Đối với môi trường sản xuất, hãy sử dụng tập hợp bản sao có ít nhất 3 thành viên và nhớ điền thêm các biến cấu hình như kích thước nhật ký.

Khi bắt đầu các phiên bản mongod của bạn cho các thành viên của bạn, hãy sử dụng cùng một tệp khóa.

Một số cân nhắc về shardkey của bạn nên bao gồm:

  • Khóa và giá trị là bất biến
  • Luôn cân nhắc việc sử dụng các chỉ mục trong một bộ sưu tập được phân đoạn
  • Lệnh cập nhật trình điều khiển phải chứa khóa phân đoạn
  • Các ràng buộc duy nhất được duy trì bởi khóa phân đoạn.
  • Khóa phân đoạn không được chứa các loại chỉ mục đặc biệt và không được vượt quá 512 byte.
Vài người trở thành MongoDB DBA - Đưa MongoDB vào Sản xuất Tìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng MongoDBDownload miễn phí

Không bao giờ thay đổi tệp cấu hình máy chủ

Sau khi thực hiện lần triển khai đầu tiên, bạn không nên thay đổi nhiều tham số trong tệp cấu hình, nếu không bạn có thể gặp rắc rối, đặc biệt là với các phân đoạn. Liên kết yếu nhất với sharding là các máy chủ cấu hình. Điều này có nghĩa là tất cả các phiên bản mongod phải chạy để sharding hoạt động.

Chiến lược bảo mật tốt

MongoDB đã dễ bị tấn công từ bên ngoài trong những năm qua, do đó một cam kết quan trọng đối với cơ sở dữ liệu của bạn là có một số giao thức bảo mật. Bên cạnh việc chạy các quy trình trong các cổng khác nhau, ít nhất người ta nên sử dụng một trong 5 cách khác nhau để bảo mật cơ sở dữ liệu MongoDB. Bạn có thể xem xét các nền tảng như MongoDB Atlas, các nền tảng này bảo mật cơ sở dữ liệu theo mặc định thông qua mã hóa dữ liệu cả khi chuyển tiếp và ở trạng thái nghỉ. Bạn có thể sử dụng các chiến lược như TLS / SSL cho tất cả các kết nối đến và đi.

Kết luận

Kiểm soát cụm MongoDB không phải là một nhiệm vụ dễ dàng và nó liên quan đến rất nhiều cách giải quyết. Cơ sở dữ liệu phát triển do có nhiều người dùng hơn, do đó khối lượng công việc tăng lên. Do đó, On có nhiệm vụ đảm bảo hiệu suất của DBM phù hợp với số lượng người dùng gia tăng này. Các phương pháp hay nhất không chỉ là việc tăng tài nguyên phần cứng và áp dụng một số khái niệm MongoDB như sharding, replication và index. Tuy nhiên, nhiều sự bất tiện có thể phát sinh sẽ được giải quyết tốt bằng cách nâng cấp phiên bản MongoDB của bạn. Thông thường, các phiên bản mới nhất đã được sửa lỗi, tích hợp các yêu cầu tính năng mới và hầu như không có tác động tiêu cực đến việc nâng cấp ngay cả với các số sửa đổi lớn.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tổng quan về Hồ sơ cơ sở dữ liệu MongoDB

  2. ScaleGrid thông báo dịch vụ lưu trữ MongoDB ở Canada

  3. Hướng dẫn cấu hình bộ cân bằng tải trong cụm phân chia MongoDB

  4. MongoDB:tìm và tìm thấy với tính năng lọc mảng lồng nhau

  5. MongoDB $ trong Toán tử truy vấn