Bạn đã bao giờ tự hỏi tại sao các bản cập nhật và nâng cấp là rất cần thiết cho bất kỳ hệ thống nào? Vâng, đó không phải là bí mật: Chúng đảm bảo rằng các hệ thống vẫn có liên quan và hiệu quả. Với MongoDB, nó không khác. Bất cứ khi nào chúng ta nghĩ về việc cập nhật, chúng tôi tìm kiếm hiệu quả, bảo mật, hiệu suất và các lợi ích khác đi kèm với các hệ thống cập nhật. Tuy nhiên, mỗi bản cập nhật đưa ra những thay đổi cần được quản lý cẩn thận. Trong bài viết này, chúng tôi sẽ bao gồm một số tính năng mới của phiên bản MongoDB 8.0 và nhấn mạnh những cân nhắc chính bạn nên xem xét trước khi nâng cấp lên phiên bản mới này. Có gì mới trong phiên bản 8.0? Cơ sở dữ liệu tài liệu phổ biến nhất hiện đang nhanh hơn bao giờ hết. là một sự lựa chọn tuyệt vời cho những người tìm kiếm hiệu suất, công nghệ tiên tiến và trải nghiệm trực quan. Nó cung cấp một sự cải thiện đáng kể về thông lượng và độ trễ, so với các phiên bản trước đó. Thử nghiệm nội bộ so với 7.0 cho thấy 32% đọc nhanh hơn, 59% cập nhật nhanh hơn và 200% + truy vấn theo chuỗi thời gian nhanh hơn. Phiên bản mới nhất này tập trung vào một số trụ cột chính: Cấu hình MongoDB 8.0 MongoDB 8.0 cung cấp các cải tiến đáng kể về hiệu suất, chẳng hạn như đọc nhanh hơn, viết nhanh hơn và hoạt động số lượng lớn. và Vì vậy, nếu ứng dụng của bạn trải qua tải trọng cao, nâng cấp lên 8.0 có thể làm giảm đáng kể thời gian phản hồi và cải thiện công suất, đảm bảo rằng hệ thống của bạn vẫn có thể mở rộng ngay cả khi sử dụng nặng. Performance improvement insertMany bulkInsert Trong MongoDB 8.0, giới thiệu khả năng thực hiện truy vấn phạm vi trên các trường được mã hóa bằng cách sử dụng các toán tử $lt, $lte, $gt và $gte. Security Ứng dụng Encryption : Với MongoDB 8.0, quy mô ngang bây giờ nhanh hơn và giá cả phải chăng hơn. phương pháp này cho phép các ứng dụng vượt ra ngoài giới hạn của cơ sở dữ liệu truyền thống bằng cách phân phối dữ liệu trên nhiều máy chủ, được gọi là phân mảnh, mà không cần phải chuẩn bị một lượng lớn tài nguyên trước. các tính năng phân mảnh mới trong MongoDB 8.0 làm cho phân phối dữ liệu nhanh hơn đến 50 lần trong khi giảm chi phí lên đến 50%. Resilience, scalability, and high availability Thay đổi chung Ứng dụng Encryption Với phiên bản mới, Queryable Encryption cho phép bạn tìm kiếm trong một phạm vi, sử dụng các nhà khai thác như , , và , ví dụ, để lọc dữ liệu theo khoảng thời gian cụ thể, chẳng hạn như ngày hoặc giá trị số, trong khi giữ dữ liệu được mã hóa. $lt $lte gt $gte Express query giai đoạn Express đã được giới thiệu như là một giai đoạn thực hiện mới tối ưu hóa con đường truy vấn cho các trường hợp sử dụng đơn giản.Nếu bạn đang chạy một truy vấn đơn giản sử dụng chỉ mục _id duy nhất, ví dụ... db.customer.find({_id: ObjectId('670ec6b005b98857588f5b6a')}).explain() Bạn sẽ thấy rằng giai đoạn EXPRESS_IXSCAN mới này đã được bao gồm. Các giai đoạn EXPRESS có thể là một trong các giai đoạn sau: EXPRESS_CLUSTERED_XSCAN ĐIỀU Lời bài hát: Delete Tải EXPRESS_IXSCAN EXPRESS - Cập Nhật Thay vì thực hiện giai đoạn kế hoạch cổ điển, truy vấn của bạn bây giờ sẽ sử dụng giai đoạn mới này. Điều này bỏ qua lập kế hoạch và thực hiện truy vấn thường xuyên, cung cấp lên đến 17% cải thiện hiệu suất. Query Shape và Query Settings Hình dạng truy vấn trong MongoDB đại diện cho một tập hợp các thuộc tính nhóm các truy vấn tương tự với nhau, bao gồm các bộ lọc, sắp xếp, dự đoán, giai đoạn tổng hợp và không gian tên. Điều này cho phép MongoDB cải thiện hiệu suất bằng cách sử dụng lại các kế hoạch truy vấn cho các truy vấn tương tự về cấu trúc, dẫn đến việc thực hiện hiệu quả hơn. Bắt đầu với MongoDB 8.0, hình dạng truy vấn hỗ trợ cài đặt truy vấn, cho phép bạn xác định hành vi cụ thể cho các truy vấn phù hợp. Một trong những hành vi như vậy là Khi được áp dụng, MongoDB sẽ tự động từ chối bất kỳ truy vấn nào phù hợp với hình dạng này, bất kể giá trị cụ thể của nó. reject: true Hãy tưởng tượng bạn đang quản lý một cơ sở dữ liệu nhận truy vấn từ các ứng dụng của bên thứ ba. Một ứng dụng bắt đầu gửi các truy vấn nặng thực hiện quét bộ sưu tập (COLLSCAN), làm chậm đáng kể hệ thống - ví dụ, một truy vấn như: Use case: db.pizzaOrders.find({price: 10}) // Explain Plan "winningPlan": { "stage": "COLLSCAN", "filter": { "price": { "$eq": 20 } }, }, Chúng tôi có thể đặt một truy vấnSettings để từ chối truy vấn phù hợp với cấu trúc này (tùy thuộc vào các giá trị): db.adminCommand( { setQuerySettings: { find: "pizzaOrders", filter: { price: 20 }, $db: "my_database" }, settings: { comment: "Will be rejected", reject: true } } ) Lệnh này thiết lập một hình dạng truy vấn nơi bất kỳ truy vấn nào tìm kiếm Trong the sẽ bị từ chối, bất kể thực tế giá trị được cung cấp trong truy vấn. (Trọng tâm hoàn toàn là cấu trúc của truy vấn.) Do đó, nếu chúng ta thực hiện một truy vấn phù hợp với cấu trúc này... price pizzaOrders price db.pizzaOrders.find({price: 10}) ... truy vấn sẽ tự động bị từ chối bởi MongoDB: Để xem tất cả các thiết đặt truy vấn, bạn có thể sử dụng $querySettings giai đoạn trong một đường ống tổng hợp: db.aggregate( [ { $querySettings: {} } ] ) Kết quả : [ { "queryShapeHash": "4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0", "settings": { "reject": true, "comment": "Will be rejected" }, "representativeQuery": { "find": "pizzaOrders", "filter": { "price": 20 }, "$db": "my_database" } } ] Tuy nhiên, nếu bạn muốn kiểm tra hình dạng truy vấn — tức là các loại khác nhau của truy vấn đã được thực hiện — bạn có hai tùy chọn: Sử dụng $QueryStats Giai đoạn tổng hợp này cung cấp số liệu thống kê về truy vấn chạy . since the last server restart use('admin'); db.aggregate( [ { $queryStats: {} } ] ) Điều này giúp phân tích các mẫu truy vấn và tối ưu hóa hiệu suất. Kiểm tra các bản ghi MongoDB. Các truy vấn chậm được đăng nhập với truy vấnShapeHashes của họ trong nhật ký MongoDB. Điều này hữu ích cho việc xác định các truy vấn không hiệu quả cần tối ưu hóa. Để loại bỏ, chúng ta có thể sử dụng hình dạng truy vấn hash: db.adminCommand( { removeQuerySettings: '4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0' } ) Cách tiếp cận này có giá trị vì nó đảm bảo cơ sở dữ liệu sẽ không bị ảnh hưởng bởi các truy vấn của bên thứ ba có thể gây ra tiêu thụ tài nguyên cao, tất cả . without the need to make changes to the application Compatibility và deprecations Yêu cầu hành vi Trước phiên bản 8.0, nếu bạn tìm kiếm các giá trị bằng , trường với giá trị cũng sẽ được trả về. Tuy nhiên, trong phiên bản mới này, dữ liệu được lưu trữ như sẽ không còn được trả về trong các truy vấn với bình đẳng, ví dụ như: null undefined undefined null // People collection [ { _id: 1, name: null }, { _id: 2, name: undefined } ] Với tính năng này, nếu bạn chạy truy vấn sau... db.people.find({name: null}) ... kết quả là: [ { _id: 1, name: null } ] Dữ liệu với sẽ không còn được trả về. Nếu ứng dụng của bạn chứa dữ liệu với , bạn có thể viết lại hoặc nâng cấp dữ liệu và truy vấn chưa xác định để tính đến thay đổi hành vi này. undefined undefined · The loại đã bị xóa, và trong một số trường hợp, nếu bạn cố gắng chèn Nó sẽ được chuyển đổi thành . Note undefined undefined null Index bộ lọc Xem sử dụng , như đã thảo luận trong phần hình truy vấn của bài viết này, vì các bộ lọc chỉ mục bị mất giá trong phiên bản này. cung cấp nhiều chức năng hơn đáng kể, làm cho nó trở thành sự lựa chọn ưa thích.Với các bộ lọc chỉ mục hiện đã bị mất giá, nên chuyển sang Tận dụng những tính năng tiên tiến của nó. setQuerySettings setQuerySettings setQuerySettings Cải thiện lập kế hoạch và chiến lược Bây giờ bạn đã thấy các tính năng mới trong phiên bản mới nhất và quyết định nâng cấp lên bản phát hành MongoDB mới nhất, có một vài điều bạn cần biết. chủ đề này sẽ mô tả một số chiến lược và bước lý tưởng để đảm bảo nâng cấp trơn tru và thành công của một bản sao thiết lập trong MongoDB Atlas. Hãy nhớ rằng mỗi kịch bản có đặc điểm riêng của nó, và hiểu cách ứng dụng của bạn sử dụng các tính năng MongoDB là rất quan trọng để nâng cấp hiệu quả. Đánh giá nâng cấp trước Upgrade version path Tất cả Các thành viên phải chạy phiên bản 7.0 trước khi nâng cấp lên phiên bản 8.0. Replica thiết lập Điều quan trọng cần lưu ý là không thể nâng cấp trực tiếp từ phiên bản 5.0-series lên 8.0, ví dụ, cũng không thể từ phiên bản 6.0 lên 8.0. Để làm điều này, bạn phải nâng cấp liên tiếp, phiên bản theo phiên bản, cho đến khi bạn đạt đến phiên bản 7.0. Review release notes Không nơi nào khác sẽ chứa thông tin có giá trị hơn Luôn luôn đảm bảo chú ý đến mỗi ghi chú được phát hành, đặc biệt là đối với bất kỳ thay đổi đột phá, tính năng mới và chức năng bị mất. release notes of the version Release notes của phiên bản Check the driver compatibility Trước khi nâng cấp bất cứ điều gì liên quan đến Mongodb, điều quan trọng là kiểm tra các bảng tương thích trong tài liệu cho trình điều khiển của bạn. , bạn nên đảm bảo rằng phiên bản MongoDB tương thích với trình điều khiển MongoDB mà bạn dự định sử dụng. avoid breaking your application Chúng ta có thể thấy rằng để sử dụng tất cả các tính năng của MongoDB 8.0, bạn cần sử dụng trình điều khiển phiên bản 5.2 đến 5.3. trình điều khiển ứng dụng có thể cần được cập nhật để tận dụng đầy đủ các tính năng máy chủ mới hơn. Cluster health check Một điểm quan trọng khác trước khi bắt đầu nâng cấp là kiểm tra sức khỏe của tất cả các thành viên của bộ bản sao của bạn. ** Đảm bảo tất cả các nút đang chạy tối ưu.** Bạn có thể tìm thấy thông tin này bằng cách truy cập vào menu “Dữ liệu Cơ sở dữ liệu” và nhấp vào cụm của bạn: Trên màn hình này, bạn sẽ nhận thấy rằng mỗi nút có một chấm màu xanh lá cây bên cạnh tên của nó, chỉ ra rằng sức khỏe là tốt. Staging cluster: your testing hub Để đảm bảo cập nhật an toàn và giảm thiểu rủi ro, điều cần thiết là phải làm việc với một Môi trường triển lãm hoạt động như một khu vực an toàn để thử nghiệm các phiên bản, tính năng và thay đổi mới mà không ảnh hưởng đến người dùng cuối. Thử nghiệm môi trường Tạo một Staging Cluster Bước này liên quan đến việc tạo một cụm chuyên dụng cho mục đích thử nghiệm. Theo quy trình tiêu chuẩn để thiết lập một cụm mới, để mô phỏng chính xác môi trường sản xuất. Đảm bảo nó phù hợp với phiên bản sản xuất hiện tại 2. làm mới giai đoạn với dữ liệu sản xuất Khôi phục một bản sao lưu gần đây từ cụm sản xuất để đảm bảo môi trường giai đoạn phản ánh trạng thái sản xuất hiện tại. Bạn có thể làm điều này thông qua giao diện Atlas bằng cách chọn bản sao lưu, chọn tùy chọn khôi phục và nhắm mục tiêu cụm giai đoạn. Cập nhật Staging Cluster lên 8.0 Cập nhật cụm xếp hạng lên MongoDB 8.0 để kiểm tra phiên bản mới và các tính năng của nó. Để làm điều này, chỉ cần nhấp vào cụm xếp hạng và chọn “Edit Configuration” và “Additional Settings”: 4. kiểm tra ứng dụng của bạn Chạy thử nghiệm để đảm bảo mọi thứ hoạt động như mong đợi, bao gồm cả thử nghiệm cơ sở dữ liệu và ứng dụng. nâng cấp sản xuất cluster Sau khi thử nghiệm trong môi trường dàn dựng, hãy đảm bảo rằng Phiên bản Tương thích Tính năng (FCV) được thiết lập thích hợp, trước khi nâng cấp cụm sản xuất. cung cấp một lớp bảo mật bổ sung trong quá trình nâng cấp bằng cách kiểm soát những tính năng nào của phiên bản MongoDB mới được kích hoạt trong cụm. Điều này cho phép bạn chuyển dần sang phiên bản mới nhất, đảm bảo mọi thứ hoạt động đúng trước khi kích hoạt đầy đủ các tính năng mới trong sản xuất. FCV Mặc dù không bắt buộc, nhưng việc cấu hình FCV mang lại cho bạn sự linh hoạt.Nếu cần thiết, bạn có thể quay trở lại phiên bản trước bằng cách điều chỉnh cài đặt FCV. Điều này đảm bảo rằng bạn có thể quản lý quá trình nâng cấp với rủi ro tối thiểu và có nhiều quyền kiểm soát hơn đối với bất kỳ vấn đề tiềm năng nào. Sau khi bạn đã cấu hình FCV (nếu muốn), bạn có thể tiếp tục nâng cấp cụm sản xuất.Để làm như vậy, chỉ cần làm theo các bước tương tự được mô tả trong phần trước, nhưng lần này, áp dụng chúng cho cụm sản xuất. giám sát Sau khi nâng cấp cũng quan trọng như tất cả các bước trước đó. giám sát hoạt động là rất quan trọng để đảm bảo sự thành công của quá trình. Một số điểm quan trọng để kiểm tra là: : Giám sát sức khỏe của các nút để đảm bảo chúng hoạt động đúng cách. Node health : Giữ một mắt trên các Các hoạt động đọc và viết để đảm bảo không có vấn đề về hiệu suất. Latency of operations Latency • Theo dõi các Để đảm bảo chúng hoạt động hiệu quả sau khi nâng cấp. Query performance Hiệu suất queries : Kiểm tra rằng các chỉ mục đang hoạt động đúng cách và tối ưu hóa chúng nếu cần thiết. Indexes Cuối cùng nhưng không kém phần quan trọng, hãy kiểm tra các chỉ số cho mỗi nút trong cụm của bạn. Chúng sẽ cung cấp cái nhìn sâu sắc có giá trị về sức khỏe tổng thể của hệ thống của bạn. Bạn có thể tìm thấy chúng trong tab “Metrics” của cụm của bạn: Recap Kế hoạch nâng cấp của bạn nên được tùy chỉnh để phù hợp với nhu cầu và mục tiêu cụ thể của tổ chức của bạn. Đảm bảo theo dõi vòng đời hỗ trợ của cụm MongoDB của bạn và cập nhật về các phiên bản phát hành, vì vậy bạn có thể chuẩn bị cho một nâng cấp liền mạch và hiệu quả. Hiểu cách ứng dụng của bạn tương tác với các tính năng MongoDB. Nhận biết bất kỳ thay đổi cần thiết nào đối với ứng dụng của bạn. Lập kế hoạch nâng cấp của bạn tốt trước. Đừng bỏ qua các bản cập nhật driver. Thực hiện thử nghiệm kỹ lưỡng trước khi tiến hành nâng cấp. Cải tiến của bạn phức tạp đến mức nào? Bây giờ chúng tôi đã phác thảo các bước chính để nâng cấp thành công - bao gồm đánh giá trước khi nâng cấp, thử nghiệm cụm giai đoạn và kiểm tra khả năng tương thích của trình điều khiển - hãy đánh giá mức độ phức tạp của nâng cấp của bạn. Upgrade trực tiếp Nếu bạn đã sử dụng MongoDB 7.0, có trình điều khiển được cập nhật, và đang chạy trên một cấp độ Atlas được hỗ trợ đầy đủ, thì việc nâng cấp thường nhanh hơn và đơn giản hơn. Trong những trường hợp này, thiết lập một cụm cài đặt, xác nhận sức khỏe, và thực hiện nâng cấp có thể được hoàn thành hiệu quả, thường với thời gian ngừng hoạt động tối thiểu hoặc không có. nâng cấp phức tạp hơn Nếu bạn đang sử dụng phiên bản cũ hơn (ví dụ: 5.0 hoặc 6.0), bạn sẽ cần phải nâng cấp dần dần (ví dụ: 5.0 → 6.0 → 7.0 → 8.0), như đã đề cập trước đó. Vì thời gian nâng cấp thay đổi đáng kể dựa trên các yếu tố này, sử dụng một cụm giai đoạn làm tham chiếu (được thảo luận trong phần trước) Mặc dù cách tiếp cận này sẽ không cung cấp thời gian chính xác, nhưng nó có thể cung cấp cho bạn một ý tưởng gần đúng về tổng thời gian nâng cấp, cho phép bạn lên kế hoạch phù hợp. can help estimate the duration. Bất kể mức độ phức tạp, việc tuân theo các thực tiễn tốt nhất - chẳng hạn như kiểm tra môi trường sân khấu và giám sát sức khỏe cụm - đảm bảo một quá trình chuyển đổi trơn tru và đáng tin cậy. Kết luận Bài viết này đã làm nổi bật những thay đổi chính trong phiên bản mới nhất, bao gồm các cân nhắc về khả năng tương thích, các tính năng bị giảm giá và các thực tiễn tốt nhất để nâng cấp một cách trơn tru.Bằng cách hiểu những khía cạnh này, bạn có thể đảm bảo một quá trình chuyển đổi liền mạch sang MongoDB 8.0 và tiếp tục hưởng lợi từ các khả năng nâng cao của nó. Bài viết này được viết bởi Ricardo Mello, Senior Developer Advocate-São Paulo, Brazil. Ricardo tập trung vào Java và Kotlin, với chứng nhận là MongoDB Associate Developer và Java SE 8 Programmer. Với 13 năm kinh nghiệm làm kỹ sư phần mềm, ông tận dụng chuyên môn của mình để trao quyền cho các nhà phát triển và thúc đẩy sự đổi mới tại MongoDB. Ông đam mê chia sẻ kiến thức, tin rằng đó là một trong những cách tốt nhất để đóng góp cho cộng đồng. Bài viết này được viết bởi Ricardo Mello, Senior Developer Advocate-São Paulo, Brazil. Ricardo tập trung vào Java và Kotlin, với chứng nhận là MongoDB Associate Developer và Java SE 8 Programmer. Với 13 năm kinh nghiệm làm kỹ sư phần mềm, ông tận dụng chuyên môn của mình để trao quyền cho các nhà phát triển và thúc đẩy sự đổi mới tại MongoDB. Ông đam mê chia sẻ kiến thức, tin rằng đó là một trong những cách tốt nhất để đóng góp cho cộng đồng. Lời bài hát: Ricardo Mello Lời bài hát: Ricardo Mello Linkedin