Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Một trường hợp cho MongoDB với AEM

MongoDB là gì?

MongoDB, trong số những thứ khác, là một cơ sở dữ liệu NoSQL hướng tài liệu. Điều này có nghĩa là nó tách khỏi mô hình quan hệ, truyền thống để đưa ra một mô hình mở rộng linh hoạt, theo chiều ngang để quản lý và tổ chức dữ liệu.

MongoDB hoạt động với AEM như thế nào?

MongoDB tích hợp với Adobe Experience Manager (AEM) bằng các tùy chọn crx3mongo runmodea và JVM:-Doak.mongo.uri và -Doak.mongo.db

Tại sao tôi lại MongoDB?

Chủ yếu MongoDB cung cấp cấu hình HA thay thế cho cấu hình CRX cũ hơn. Trong thực tế, kiến ​​trúc giống với một danh mục chia sẻ trên NFS hoặc đến NetApp hơn là phân cụm thực sự. Các tác giả và nhà xuất bản sử dụng MongoDB không nhất thiết phải biết về nhau.

Hãy giải quyết vấn đề này - CRX clustering không có một hồ sơ theo dõi hoàn hảo. Một trong những thách thức cố hữu đối với danh mục đối tượng chỉ dành cho cục bộ là ở quy mô lớn, một danh mục duy nhất thể hiện một số lợi ích:

  • giảm sự trùng lặp dữ liệu
  • phạm vi tập trung để phân tích và điều chỉnh hiệu suất
  • Tính khả dụng của HA mà không yêu cầu tương tác nhiều nút
  • chia tỷ lệ ngang để dự phòng và hiệu suất

Ngay cả với một cụm CRX hoạt động hoàn hảo, không có lợi ích nào trong số này được giải quyết. Nhập những ngày xưa cũ của cấp dữ liệu được chia sẻ.

Với 5.6.1 trở về trước, các triển khai lớn và đang phát triển có thể gắn kết kho lưu trữ đối tượng của họ dưới dạng NFS được chia sẻ, nơi giao thức hoặc máy chủ NFS cung cấp hỗ trợ khóa cho hành vi ghi nhiều lần với mức độ va chạm thấp. Đây vẫn là một lựa chọn khả thi, nhưng, khi không triển khai NetApp, thường có nguy cơ xảy ra lỗi duy nhất trong bộ điều khiển, hoặc tầng dữ liệu, giữ lại kiến ​​trúc n * 9.

Việc giới thiệu kênh vi mô MongoDB vào AEM 6.x về cơ bản cung cấp cùng một kiến ​​trúc với cơ sở dữ liệu nặng về từ khóa hơn mà chúng tôi yêu thích.

Trường hợp sử dụng chính cho MongoMK là với các trường hợp tác giả AEM, trong đó giới hạn người dùng đang hoạt động (~ 25-30) có nghĩa là quy mô theo chiều ngang trước tiên phải giải quyết vấn đề đồng thời. Ở đây, tầng dữ liệu được chia sẻ tỏa sáng nhất khi hiệu suất là thứ hai khó khăn để mở rộng quy mô và tính nhất quán đồng thời loại bỏ nhu cầu giao tiếp giữa nút với nút.

Chắc chắn vẫn có thể tham gia các nhà xuất bản theo cách tương tự, tuy nhiên, lợi ích bị giảm do thiếu vấn đề đồng thời (tức là chỉ thêm nhiều nhà xuất bản hơn để có nhiều quy mô hơn) và hình phạt đối với hiệu suất của một danh mục không thuộc địa phương.

Vậy là xong! Mở rộng đến vô cùng và hơn thế nữa!

Chậm lại, Buzz Lightyear, đã xảy ra sự cố. MongoDB một trang web được kỳ vọng sẽ phân chia tỷ lệ rất hiệu quả với tùy chọn của nó cho dữ liệu truy cập nhanh và kết nối mạng nội tuyến. Ở đây, bầu trời có thể là giới hạn. Tuy nhiên, hãy xem xét việc triển khai nhiều trang web trong đó các bản sao MongoDB phải giao tiếp qua các trung tâm dữ liệu khác nhau và hàng dặm cáp quang không xác định. Nhập nhật ký hoạt động (oplog).

Oplog là trung gian để các bản sao vẫn được đồng bộ hóa; về cơ bản cung cấp các phép toán delta được áp dụng theo thứ tự. Điều này khá giống với một số cấu hình cụm cơ sở dữ liệu khác.

Trong quá trình hoạt động được tối ưu hóa, oplog được thực thi gần với thời gian thực với không thể thay đổi chính, mặc dù MongoDB cho phép trôi dạt. Tuy nhiên, trong quá trình hoạt động trên nhiều địa điểm, độ trễ dây và độ trễ hoạt động có thể xếp chồng lên nhau để tạo ra độ lệch lớn hơn và đưa ra các thay đổi sau đối với cấu hình này:

  • Về mặt chức năng, oplog là một chồng lệnh.
  • Giống như nhiều ngăn xếp khác, đó là tính năng nhập trước - xuất trước.
  • Hành vi ngăn xếp quy định rằng khi lần đẩy tiếp theo sẽ ghi đè lên một bản ghi chưa được bật lên, thì việc mất dữ liệu sẽ xảy ra.

Các lập trình viên MongoDB đã chọn để nắm bắt và giải quyết tình huống này bằng cách sao chép, xây dựng lại và đồng bộ hóa từ oplog (mới) sau khi xây dựng lại.

Bề ngoài, không có gì kỳ lạ hoặc nguy hiểm về hoạt động này. Trước tiên, hãy xem xét hoạt động xây dựng đó, thao tác này sẽ xóa tất cả dữ liệu và chúng kéo một bản sao mới từ bản thảo đã biết. Ngay cả khi quá trình xuất mất 0 giây để hoàn tất, bản sao của khối lượng dữ liệu qua một dây tiềm ẩn vốn dĩ sẽ bị trôi trước khi bản sao từ xa hoàn tất quá trình nhập. Cũng giả định rằng độ trễ của dây là thách thức duy nhất, do đó, sau khi xây dựng lại, oplog chỉ chứa phần trôi dạt được giới thiệu bởi quá trình xây dựng lại. Độ trễ sao chép được kích hoạt của Issuethat ban đầu vẫn còn, vì vậy có thể mong đợi rằng, theo thời gian, thứ cấp mới được xây dựng sẽ buộc phải xây dựng lại.

Trong một số trường hợp, hành vi này đi vào một vòng lặp không ngừng về độ trễ sao chép và xây dựng lại, dẫn đến các bản thứ hai từ xa không bao giờ ở trạng thái chức năng.

Đối với AEM, điều này có nghĩa là việc sử dụng các bản sao MongoDB làm nguồn dữ liệu chính để nghiên cứu chéo trang web đặt các tác giả từ xa vào nguy cơ đáng kể.