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

Giới thiệu khái quát về khu vực MongoDB

Khu MongoDB

Để hiểu MongoDB Zones, trước tiên chúng ta phải hiểu Zone là gì:một nhóm các phân đoạn dựa trên một bộ thẻ cụ thể.

MongoDB Zones giúp phân phối các khối dựa trên các thẻ, trên các phân đoạn. Tất cả công việc (đọc và ghi) liên quan đến tài liệu trong một khu vực được thực hiện trên các phân đoạn khớp với khu vực đó.

Có thể có các tình huống khác nhau trong đó các cụm phân đoạn (dựa trên vùng) có thể tỏ ra hữu ích cao. Giả sử:

  • Một ứng dụng được phân phối theo địa lý có thể yêu cầu giao diện người dùng cũng như kho dữ liệu
  • Một ứng dụng có kiến ​​trúc n-tier để một số bản ghi được tìm nạp từ phần cứng bậc cao hơn (độ trễ thấp), trong khi những bản ghi khác có thể được tìm nạp từ phần cứng bậc thấp (tạo độ trễ cao)

Lợi ích của việc sử dụng các vùng MongoDB

Với sự trợ giúp của MongoDB Zones, các DBA có thể tạo ra các giải pháp lưu trữ theo tầng hỗ trợ vòng đời dữ liệu, với dữ liệu thường xuyên sử dụng được lưu trữ trong bộ nhớ, dữ liệu ít sử dụng hơn được lưu trữ trên máy chủ và vào thời điểm thích hợp dữ liệu lưu trữ được đưa vào ngoại tuyến.

Cách thiết lập vùng

Trong các cụm phân đoạn, bạn có thể tạo các vùng đại diện cho một nhóm các phân đoạn và liên kết một hoặc nhiều phạm vi giá trị chính của phân đoạn với vùng đó. MongoDB định tuyến tất cả các lần đọc và tất cả các lần ghi đi vào một phạm vi vùng chỉ đến các phân đoạn bên trong vùng đó. Bạn có thể liên kết mỗi vùng với một hoặc nhiều phân đoạn trong cụm và một phân đoạn có thể liên kết với bất kỳ số lượng vùng nào.

Một số mẫu triển khai phổ biến nhất trong đó các vùng có thể được áp dụng như sau:

  • Cô lập một tập hợp con dữ liệu cụ thể trên một tập hợp các phân đoạn cụ thể.
  • Bằng cách đảm bảo rằng dữ liệu có liên quan nhất nằm trên các phân đoạn gần máy chủ ứng dụng nhất về mặt địa lý.
  • Định tuyến dữ liệu đến các phân đoạn dựa trên hiệu suất của phần cứng phân đoạn.

Hình ảnh sau đây minh họa một cụm phân mảnh với ba phân đoạn và hai khu vực. Vùng A biểu thị một phạm vi có giới hạn dưới là 0 và giới hạn trên là 10. Vùng B hiển thị một phạm vi có giới hạn dưới là 10 và giới hạn trên là 20. Các mảng ĐỎ và XANH có vùng A. Shard BLUE cũng có khu B. Shard GREEN không có vùng nào được liên kết với nó. Cụm ở trạng thái ổn định và không có phần nào vi phạm bất kỳ khu vực nào

Phạm vi của Vùng MongoDB

Mỗi và mọi vùng bao gồm một hoặc nhiều phạm vi giá trị chính của phân đoạn. Mỗi phạm vi mà một khu vực bao gồm luôn bao gồm ranh giới dưới của nó và không bao gồm ranh giới trên của nó.

HÃY NHỚ: Các khu vực không thể chia sẻ phạm vi và chúng không thể có phạm vi chồng chéo.

Thêm các mảnh vào một vùng

Phương thức sh.addShardTag () được sử dụng để thêm vùng vào một phân đoạn. Một phân đoạn đơn lẻ có thể có nhiều vùng và nhiều phân đoạn cũng có thể có cùng một vùng. Ví dụ sau đây thêm vùng A vào một phân đoạn.

sh.addShardTag("shard0000", "A")

Xóa các mảnh thành một vùng

Để xóa một vùng khỏi một phân đoạn, phương thức sh.removeShardTag () được sử dụng. Ví dụ sau đây loại bỏ vùng A khỏi một phân đoạn.

sh.removeShardTag("shard0002", "A")
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í

Mẹo cho Khu vực MongoDB

Giữ cho tài liệu đơn giản

MongoDB là một cơ sở dữ liệu không có lược đồ. Điều này có nghĩa là không có lược đồ được xác định trước theo mặc định. Chúng tôi có thể thêm một lược đồ xác định trước trong các phiên bản mới hơn, nhưng nó không bắt buộc. Đừng đánh giá thấp những khó khăn xảy ra khi làm việc với tài liệu và mảng, vì nó có thể trở nên thực sự khó khăn khi phân tích dữ liệu của bạn trong quy trình phía ứng dụng / ETL. Bên cạnh đó, mảng có thể ảnh hưởng đến hiệu suất sao chép:đối với mọi thay đổi trong mảng, tất cả các giá trị của mảng đều được sao chép.

Phần cứng tốt nhất không phải lúc nào cũng là lựa chọn tốt nhất

Sử dụng phần cứng tốt chắc chắn sẽ giúp mang lại hiệu suất tốt. Nhưng điều gì có thể xảy ra trong một môi trường khi một ví dụ của một cỗ máy lớn chết? Câu trả lời là "chuyển đổi dự phòng".

Việc có nhiều máy nhỏ (thay vì một hoặc hai) trong môi trường phân tán có thể đảm bảo rằng sự cố ngừng hoạt động sẽ chỉ ảnh hưởng đến một vài phần của phân đoạn mà ứng dụng ít hoặc không nhận biết được. Nhưng đồng thời, nhiều máy hơn có nghĩa là khả năng cao xảy ra hỏng hóc. Cân nhắc sự cân bằng này khi thiết kế môi trường của bạn. Các lựa chọn phù hợp ảnh hưởng đến hiệu suất.

Bộ làm việc

Làm thế nào lớn là tập hợp làm việc? Thông thường, một ứng dụng không sử dụng tất cả dữ liệu. Một số dữ liệu được cập nhật thường xuyên, trong khi các dữ liệu khác thì không. Tập dữ liệu làm việc của bạn có vừa với RAM không? Hiệu suất tối ưu xảy ra khi tất cả tập dữ liệu đang hoạt động nằm trong RAM.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách trả về mảng chuỗi với tập hợp mongodb

  2. 3 cách trả lại mẫu tài liệu ngẫu nhiên từ bộ sưu tập MongoDB

  3. Triển khai MongoDB bằng Docker

  4. Làm thế nào để cập nhật nếu tồn tại nếu không, chèn tài liệu mới?

  5. Spring Data MongoDB với Java 8 LocalDate MappingException