Hướng dẫn does amazon use mongodb? - amazon có sử dụng mongodb không?
Sau đây là sự khác biệt về chức năng giữa Amazon DocumentDB (với khả năng tương thích MongoDB) và MongoDB. Show
Chủ đề
Lợi ích chức năng của Amazon DocumentDBCập nhật sự khác biệt chức năngSự khác biệt về chức năng với MongoDB Giao dịch ngầm
Trong Amazon DocumentDB, tất cả các câu lệnh CRUD ( 2, 3, 4, 5) đảm bảo tính nhất quán và tính nhất quán, ngay cả đối với các hoạt động sửa đổi nhiều tài liệu. Với sự ra mắt của Amazon DocumentDB 4.0, các giao dịch rõ ràng cung cấp các thuộc tính axit cho các hoạt động đa cấp và đa thu thập hiện được hỗ trợ. Để biết thêm về việc sử dụng các giao dịch trong Amazon DocumentDB, vui lòng xem các giao dịch.Cập nhật sự khác biệt chức năngSự khác biệt về chức năng với MongoDB Chủ đề
Giao dịch ngầmTrong Amazon DocumentDB, tất cả các câu lệnh CRUD ( 2, 3, 4, 5) đảm bảo tính nhất quán và tính nhất quán, ngay cả đối với các hoạt động sửa đổi nhiều tài liệu. Với sự ra mắt của Amazon DocumentDB 4.0, các giao dịch rõ ràng cung cấp các thuộc tính axit cho các hoạt động đa cấp và đa thu thập hiện được hỗ trợ. Để biết thêm về việc sử dụng các giao dịch trong Amazon DocumentDB, vui lòng xem các giao dịch.Sau đây là các ví dụ về các hoạt động trong Amazon DocumentDB để sửa đổi nhiều tài liệu đáp ứng cả hành vi nguyên tử và nhất quán. Các hoạt động cá nhân bao gồm các hoạt động số lượng lớn như 6 và 7 là nguyên tử nhưng toàn bộ hoạt động hàng loạt không phải là nguyên tử. Ví dụ: toàn bộ hoạt động 8 là nguyên tử nếu các hoạt động chèn riêng lẻ thực thi thành công mà không có lỗi. Nếu gặp lỗi với hoạt động 8, mỗi câu lệnh chèn riêng lẻ trong hoạt động 8 sẽ thực thi dưới dạng hoạt động nguyên tử. Nếu bạn yêu cầu các thuộc tính axit cho các hoạt động 8, 6 và 7, nên sử dụng một giao dịch.Amazon DocumentDB tiếp tục cải thiện khả năng tương thích với MongoDB bằng cách làm việc ngược từ các khả năng mà khách hàng của chúng tôi yêu cầu chúng tôi xây dựng. Phần này chứa sự khác biệt về chức năng mà chúng tôi đã xóa trong Amazon DocumentDB để làm cho việc di chuyển và xây dựng các ứng dụng dễ dàng hơn cho khách hàng của chúng tôi.
Lập chỉ mục mảng
Trong Amazon DocumentDB, tất cả các câu lệnh CRUD (db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 2, db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 3, db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 4, db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 5) đảm bảo tính nhất quán và tính nhất quán, ngay cả đối với các hoạt động sửa đổi nhiều tài liệu. Với sự ra mắt của Amazon DocumentDB 4.0, các giao dịch rõ ràng cung cấp các thuộc tính axit cho các hoạt động đa cấp và đa thu thập hiện được hỗ trợ. Để biết thêm về việc sử dụng các giao dịch trong Amazon DocumentDB, vui lòng xem các giao dịch.Sau đây là các ví dụ về các hoạt động trong Amazon DocumentDB để sửa đổi nhiều tài liệu đáp ứng cả hành vi nguyên tử và nhất quán. Sau đây là các ví dụ về các hoạt động trong Amazon DocumentDB để sửa đổi nhiều tài liệu đáp ứng cả hành vi nguyên tử và nhất quán. Các hoạt động cá nhân bao gồm các hoạt động số lượng lớn như 6 và 7 là nguyên tử nhưng toàn bộ hoạt động hàng loạt không phải là nguyên tử. Ví dụ: toàn bộ hoạt động 8 là nguyên tử nếu các hoạt động chèn riêng lẻ thực thi thành công mà không có lỗi. Nếu gặp lỗi với hoạt động 8, mỗi câu lệnh chèn riêng lẻ trong hoạt động 8 sẽ thực thi dưới dạng hoạt động nguyên tử. Nếu bạn yêu cầu các thuộc tính axit cho các hoạt động 8, 6 và 7, nên sử dụng một giao dịch.Amazon DocumentDB tiếp tục cải thiện khả năng tương thích với MongoDB bằng cách làm việc ngược từ các khả năng mà khách hàng của chúng tôi yêu cầu chúng tôi xây dựng. Phần này chứa sự khác biệt về chức năng mà chúng tôi đã xóa trong Amazon DocumentDB để làm cho việc di chuyển và xây dựng các ứng dụng dễ dàng hơn cho khách hàng của chúng tôi.
Lập chỉ mục mảng
Sau đây là các ví dụ về các hoạt động trong Amazon DocumentDB để sửa đổi nhiều tài liệu đáp ứng cả hành vi nguyên tử và nhất quán.Các hoạt động cá nhân bao gồm các hoạt động số lượng lớn như 6 và 7 là nguyên tử nhưng toàn bộ hoạt động hàng loạt không phải là nguyên tử. Ví dụ: toàn bộ hoạt động 8 là nguyên tử nếu các hoạt động chèn riêng lẻ thực thi thành công mà không có lỗi. Nếu gặp lỗi với hoạt động 8, mỗi câu lệnh chèn riêng lẻ trong hoạt động 8 sẽ thực thi dưới dạng hoạt động nguyên tử. Nếu bạn yêu cầu các thuộc tính axit cho các hoạt động 8, 6 và 7, nên sử dụng một giao dịch.Các hoạt động cá nhân bao gồm các hoạt động số lượng lớn như db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 6 và db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 7 là nguyên tử nhưng toàn bộ hoạt động hàng loạt không phải là nguyên tử. Ví dụ: toàn bộ hoạt động db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 8 là nguyên tử nếu các hoạt động chèn riêng lẻ thực thi thành công mà không có lỗi. Nếu gặp lỗi với hoạt động db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 8, mỗi câu lệnh chèn riêng lẻ trong hoạt động db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 8 sẽ thực thi dưới dạng hoạt động nguyên tử. Nếu bạn yêu cầu các thuộc tính axit cho các hoạt động db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 8, db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 6 và db.runCommand({ update: "miles", updates: [ { q: { "credit_card": { $eq: true } }, u: { $mul: { "flight_miles.$[]": NumberInt(2) } }, multi: true } ] }) 7, nên sử dụng một giao dịch.Amazon DocumentDB tiếp tục cải thiện khả năng tương thích với MongoDB bằng cách làm việc ngược từ các khả năng mà khách hàng của chúng tôi yêu cầu chúng tôi xây dựng. Phần này chứa sự khác biệt về chức năng mà chúng tôi đã xóa trong Amazon DocumentDB để làm cho việc di chuyển và xây dựng các ứng dụng dễ dàng hơn cho khách hàng của chúng tôi. Lập chỉ mục mảngChỉ số đa khóa Để sử dụng một chỉ mục với toán tử 9, bạn phải sử dụng lệnh 2. Khi sử dụng 2, bạn phải chỉ định tên của trường bạn đang áp dụng 9 trên. Ví dụ: nếu bạn có một chỉ mục trên trường 5 với tên chỉ mục là 6, 7 sẽ sử dụng chỉ mục 6, nhưng 9 sẽ không sử dụng chỉ mục. Bạn có thể xác minh xem một chỉ mục được chọn bằng cách sử dụng lệnh 0 hoặc sử dụng trình hồ sơ để ghi nhật ký các truy vấn chậm. Ví dụ, 1.Phương pháp 2 chỉ có thể được sử dụng với một chỉ mục tại một thời điểm.Việc sử dụng một chỉ mục cho truy vấn 9 được tối ưu hóa cho các truy vấn regex sử dụng tiền tố và không chỉ định các tùy chọn regex 4, 5 hoặc 6.Khi sử dụng một chỉ mục với 9, bạn nên tạo một chỉ mục trên các trường có tính chọn lọc cao trong đó số lượng giá trị trùng lặp nhỏ hơn 1% tổng số tài liệu trong bộ sưu tập. Ví dụ, nếu bộ sưu tập của bạn chứa 100.000 tài liệu, chỉ tạo các chỉ mục trên các trường trong đó cùng một giá trị xảy ra 1000 lần hoặc ít hơn.Dự đoán cho các tài liệu lồng nhauCó một sự khác biệt về chức năng với toán tử 8 giữa Amazon DocumentDB và MongoDB trong phiên bản 3.6 đã được giải quyết trong Amazon DocumentDB 4.0 nhưng sẽ không được hỗ trợ trong Amazon DocumentDB 3.6.Amazon DocumentDB 3.6 chỉ xem xét trường đầu tiên trong một tài liệu lồng nhau khi áp dụng một phép chiếu trong khi MongoDB 3.6 sẽ phân tích các subdocument và áp dụng trình chiếu cho mỗi tài liệu phụ. Ví dụ: nếu phép chiếu là 9, thì hành vi hoạt động như mong đợi trong cả Amazon DocumentDB và MongoDB. Tuy nhiên, nếu phép chiếu là 0 thì Amazon DocumentDB 3.6 sẽ chỉ áp dụng phép chiếu cho 1 chứ không phải 2 hoặc 3. Trong Amazon DocumentDB 4.0, phép chiếu 0 sẽ được áp dụng cho 1, 2 và 3.Sự khác biệt về chức năng với MongoDBChủ đề
Cơ sở dữ liệu và bộ sưu tập của quản trị viênCursormaxxtimems db.collection.getIndexes()0Hạn chế tên trường explain()Chỉ số xây dựng Hạn chế tên trườngChỉ số xây dựng Tra cứu với phím trống trong đường dẫn API mongDB, hoạt động và loại dữ liệu
Tiếng mong muốn và Mongo 0Đặt hàng kết quả 1Có thể thử lại viết Chỉ số xây dựngTra cứu với phím trống trong đường dẫn API mongDB, hoạt động và loại dữ liệu Tiếng mong muốn và Mongo Tra cứu với phím trống trong đường dẫnKhi bạn tìm kiếm một phím bao gồm chuỗi trống như một phần của đường dẫn (ví dụ: 4, 5) và đối tượng có đường dẫn khóa chuỗi trống (ví dụ: 6) bên trong một mảng, Amazon DocumentDB sẽ trả về các kết quả khác nhau so với nếu bạn là Để chạy cùng một cái nhìn lên MongoDB.Trong MongoDB, đường dẫn khóa trống tra cứu trong mảng hoạt động như mong đợi khi phím chuỗi trống không ở cuối đường dẫn. Tuy nhiên, khi phím chuỗi trống ở cuối đường dẫn lên, nó không nhìn vào mảng. Tuy nhiên, trong Amazon DocumentDB, chỉ có phần tử đầu tiên trong mảng được đọc, bởi vì 7 chuyển đổi chuỗi trống thành 8, do đó, bộ tra cứu chuỗi được coi là chỉ mục mảng tra cứu.API mongDB, hoạt động và loại dữ liệuAmazon DocumentDB tương thích với API MongoDB 3.6 và 4.0. Để biết danh sách cập nhật các chức năng được hỗ trợ, hãy xem API MongoDB được hỗ trợ và các loại dữ liệu. [ { "v" : 3, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.test" } ] 9 và rs0:PRIMARY< db.foo.insert({"a":{"$a":1}})0 Tiện íchAmazon DocumentDB không hỗ trợ cơ sở dữ liệu quản trị và do đó không kết xuất hoặc khôi phục cơ sở dữ liệu quản trị khi sử dụng các tiện ích 9 hoặc 0. Khi bạn tạo một cơ sở dữ liệu mới trong Amazon DocumentDB bằng 0, bạn cần tạo lại vai trò người dùng ngoài hoạt động khôi phục.Đặt hàng kết quảAmazon DocumentDB không đảm bảo thứ tự sắp xếp kết quả ngầm của các bộ kết quả. Để đảm bảo thứ tự của một tập hợp kết quả, chỉ định rõ ràng một thứ tự sắp xếp bằng 4.Ví dụ sau đây sắp xếp các mục trong bộ sưu tập hàng tồn kho theo thứ tự giảm dần dựa trên trường chứng khoán. 2Khi sử dụng giai đoạn tổng hợp 5, thứ tự sắp xếp không được bảo tồn trừ khi giai đoạn 5 là giai đoạn cuối cùng trong đường ống tổng hợp. Khi sử dụng giai đoạn tổng hợp 5 kết hợp với giai đoạn tổng hợp 8, giai đoạn tổng hợp 5 chỉ được áp dụng cho các bộ tích lũy 00 và 01. Trong Amazon DocumentDB 4.0, hỗ trợ đã được thêm vào 02 để tôn trọng thứ tự sắp xếp từ giai đoạn 5 trước đó.Có thể thử lại viếtBắt đầu với các trình điều khiển tương thích MongoDB 4.2, ghi có thể thử lại được bật theo mặc định. Tuy nhiên, Amazon DocumentDB hiện không hỗ trợ ghi thử lại. Sự khác biệt chức năng sẽ biểu hiện trong một thông báo lỗi tương tự như sau. 3Viết có thể thử lại có thể được vô hiệu hóa thông qua chuỗi kết nối (ví dụ: 04 hoặc đối số từ khóa của Trình xây dựng MongoClient (ví dụ: 05.Sau đây là một ví dụ Python vô hiệu hóa ghi có thể thử lại trong chuỗi kết nối. 4Chỉ số thưa thớtĐể sử dụng chỉ mục thưa thớt mà bạn đã tạo trong một truy vấn, bạn phải sử dụng mệnh đề 06 trên các trường bao gồm chỉ mục. Nếu bạn bỏ qua 06, Amazon DocumentDB không sử dụng chỉ mục thưa thớt.Sau đây là một ví dụ. 5Đối với các chỉ mục đa khóa, thưa thớt, Amazon DocumentDB không hỗ trợ một ràng buộc chính duy nhất nếu việc tìm kiếm một tài liệu dẫn đến một tập hợp các giá trị và chỉ thiếu một tập hợp con của các trường được lập chỉ mục. Ví dụ, 08 không được hỗ trợ, với đầu vào của 09, vì 10 được lưu trữ trong chỉ mục.Nén lưu trữAmazon DocumentDB hiện không hỗ trợ nén cho dữ liệu hoặc chỉ mục được lưu trữ. Kích thước dữ liệu cho dữ liệu được lưu trữ và chỉ mục có thể lớn hơn khi bạn sử dụng các tùy chọn khác. Sử dụng $ elemmatch trong một biểu thức $ tất cảAmazon DocumentDB hiện không hỗ trợ việc sử dụng toán tử 11 trong biểu thức 12. Là một cách giải quyết, bạn có thể sử dụng toán tử 13 với 11 như sau.Hoạt động ban đầu: 6Hoạt động cập nhật: 7db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 15, db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 16, db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 17, db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 18, db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 06 và db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 11 lập chỉ mụcAmazon DocumentDB hiện không hỗ trợ khả năng sử dụng các chỉ mục với 15, 16, 17, 18, 06, 26 và 11. Do đó, việc sử dụng các nhà khai thác này sẽ dẫn đến quét thu thập. Thực hiện bộ lọc hoặc khớp trước khi sử dụng một trong các toán tử này sẽ giảm lượng dữ liệu cần được quét và do đó có thể cải thiện hiệu suất.db.miles.updateMany( { "credit_card": { $eq: true } }, { $mul: { "flight_miles.$[]": NumberInt(2) } } ) 28Amazon DocumentDB hỗ trợ khả năng thực hiện các trận đấu bình đẳng (ví dụ, tham gia bên ngoài bên trái) nhưng không hỗ trợ các nhóm con không tương quan. Sử dụng một chỉ mục với db.miles.updateMany(
{ "credit_card": { $eq: true } },
{ $mul: { "flight_miles.$[]": NumberInt(2) } }
)
|