MongoDB có thực sự miễn phí không?

MongoDB là một chương trình cơ sở dữ liệu định hướng tài liệu đa nền tảng nguồn có sẵn. Được phân loại là chương trình cơ sở dữ liệu NoSQL, MongoDB sử dụng các tài liệu giống như JSON với các lược đồ tùy chọn. MongoDB được phát triển bởi MongoDB Inc. và được cấp phép theo Giấy phép Công cộng Phía Máy chủ (SSPL) được coi là không miễn phí bởi một số bản phân phối

Lịch sử[sửa]

Công ty phần mềm 10gen bắt đầu phát triển MongoDB vào năm 2007 như một thành phần của nền tảng được lên kế hoạch dưới dạng sản phẩm dịch vụ. Năm 2009, công ty chuyển sang mô hình phát triển nguồn mở, với việc công ty cung cấp hỗ trợ thương mại và các dịch vụ khác. Năm 2013, 10gen đổi tên thành MongoDB Inc

Vào ngày 20 tháng 10 năm 2017, MongoDB đã trở thành một công ty giao dịch công khai, được niêm yết trên NASDAQ với tên MDB với giá IPO là 24 USD/cổ phiếu

MongoDB là một công ty toàn cầu có trụ sở chính tại Hoa Kỳ tại Thành phố New York, Hoa Kỳ và trụ sở Quốc tế tại Dublin, Ireland

Vào ngày 30 tháng 10 năm 2019, MongoDB đã hợp tác với Alibaba Cloud, người sẽ cung cấp cho khách hàng của mình giải pháp MongoDB-as-a-service. Khách hàng có thể sử dụng dịch vụ được quản lý từ các trung tâm dữ liệu toàn cầu của BABA

Lịch sử phát hành MongoDBPhiên bảnNgày phát hànhGhi chú tính năngRefs1. ngày 0 tháng 8 năm 20091. 2 Tháng mười hai 2009
  • nhiều chỉ mục hơn cho mỗi bộ sưu tập
  • tạo chỉ mục nhanh hơn
  • bản đồ/thu nhỏ
  • các chức năng JavaScript được lưu trữ
  • thời gian fsync có thể định cấu hình
  • một số tính năng nhỏ và sửa lỗi
1. 4 tháng 3 năm 20101. 6 tháng 8 năm 2010
  • sharding sẵn sàng sản xuất
  • bản sao bộ
  • hỗ trợ cho IPv6
1. 8 tháng ba 20112. 0Tháng chín 20112. 2 tháng tám 20122. 4 tháng ba 2013
  • hỗ trợ không gian địa lý nâng cao
  • chuyển sang công cụ JavaScript V8
  • cải tiến bảo mật
  • tìm kiếm văn bản (beta)
  • chỉ số băm
2. 6 ngày 8 tháng 4 năm 2014
  • cải tiến tổng hợp
  • tích hợp tìm kiếm văn bản
  • cải tiến công cụ truy vấn
  • giao thức thao tác ghi mới
  • cải tiến bảo mật
3. 03 Tháng Ba, 2015
  • Hỗ trợ công cụ lưu trữ WiredTiger
  • API công cụ lưu trữ có thể cắm
  • Xác thực SCRAM-SHA-1
  • cải thiện chức năng giải thích
  • Trình quản lý hoạt động MongoDB
3. 2 8 Tháng mười hai, 2015
  • Công cụ lưu trữ WiredTiger theo mặc định
  • cải tiến bầu cử sao chép
  • cấu hình máy chủ dưới dạng bộ bản sao
  • đọc Quan tâm
  • xác nhận tài liệu
  • đã chuyển từ V8 sang SpiderMonkey
3. 4 29 Tháng mười một, 2016
  • mối quan tâm đọc có thể tuyến tính hóa
  • lượt xem
  • đối chiếu
3. ngày 6 tháng 11 năm 20174. 0Tháng sáu 20184. 2 tháng 8 năm 20194. 4 tháng 7 năm 20204. 4. 5 tháng tư 20214. 4. ngày 6 tháng 5 năm 20215. 013 Tháng Bảy, 2021
  • API được phiên bản bằng chứng trong tương lai
  • mã hóa cấp trường phía máy khách
  • chia sẻ lại trực tiếp
  • hỗ trợ chuỗi thời gian
6. 0Tháng Bảy 2022

Các tính năng chính[sửa]

Truy vấn đặc biệt[sửa]

MongoDB hỗ trợ trường, truy vấn phạm vi và tìm kiếm biểu thức chính quy. Các truy vấn có thể trả về các trường tài liệu cụ thể và cũng bao gồm các hàm JavaScript do người dùng xác định. Truy vấn cũng có thể được định cấu hình để trả về một mẫu kết quả ngẫu nhiên có kích thước nhất định

Lập chỉ mục[sửa]

Các trường trong tài liệu MongoDB có thể được lập chỉ mục với các chỉ mục hoặc chỉ mục chính và phụ

MongoDB cung cấp tính sẵn sàng cao với các bộ bản sao. Một bộ bản sao bao gồm hai hoặc nhiều bản sao của dữ liệu. Mỗi thành viên trong bộ bản sao có thể đóng vai trò là bản sao chính hoặc phụ bất kỳ lúc nào. Theo mặc định, tất cả các thao tác ghi và đọc được thực hiện trên bản sao chính. Bản sao thứ cấp duy trì một bản sao dữ liệu của bản sao chính bằng cách sử dụng bản sao tích hợp. Khi một bản sao chính không thành công, bộ bản sao sẽ tự động tiến hành quy trình bầu chọn để xác định bản sao phụ nào sẽ trở thành bản sao chính. Thứ hai có thể tùy chọn phục vụ các hoạt động đọc, nhưng dữ liệu đó cuối cùng chỉ nhất quán theo mặc định

Nếu triển khai MongoDB được sao chép chỉ có một thành viên phụ duy nhất, thì phải thêm một trình nền riêng gọi là trọng tài vào tập hợp. Nó có một trách nhiệm duy nhất, đó là giải quyết cuộc bầu cử sơ bộ mới. Do đó, việc triển khai MongoDB phân tán được lý tưởng hóa yêu cầu ít nhất ba máy chủ riêng biệt, ngay cả trong trường hợp chỉ có một máy chủ chính và một máy chủ phụ.

Cân bằng tải[sửa]

MongoDB chia tỷ lệ theo chiều ngang bằng cách sử dụng sharding. Người dùng chọn một khóa phân đoạn, khóa này xác định cách dữ liệu trong bộ sưu tập sẽ được phân phối. Dữ liệu được chia thành các phạm vi (dựa trên khóa phân đoạn) và được phân phối trên nhiều phân đoạn. (Một phân đoạn là một bản gốc có một hoặc nhiều bản sao. ) Ngoài ra, khóa phân đoạn có thể được băm để ánh xạ tới một phân đoạn – cho phép phân phối dữ liệu đồng đều

MongoDB có thể chạy trên nhiều máy chủ, cân bằng tải hoặc sao chép dữ liệu để duy trì hoạt động của hệ thống trong trường hợp lỗi phần cứng

Lưu trữ tệp[sửa]

MongoDB có thể được sử dụng như một hệ thống tệp, được gọi là GridFS, với các tính năng cân bằng tải và sao chép dữ liệu trên nhiều máy để lưu trữ tệp

Chức năng này, được gọi là hệ thống tệp lưới, được bao gồm trong trình điều khiển MongoDB. MongoDB hiển thị các chức năng để thao tác tệp và nội dung cho các nhà phát triển. Có thể truy cập GridFS bằng tiện ích mongofiles hoặc plugin cho Nginx và lighttpd. GridFS chia tệp thành các phần hoặc khối và lưu trữ từng phần đó dưới dạng tài liệu riêng biệt

Tổng hợp[sửa]

MongoDB cung cấp ba cách để thực hiện tổng hợp. đường dẫn tổng hợp, chức năng thu nhỏ bản đồ và các phương pháp tổng hợp có mục đích duy nhất

Map-reduce có thể được sử dụng để xử lý hàng loạt dữ liệu và các hoạt động tổng hợp. Nhưng theo tài liệu của MongoDB, Đường ống tổng hợp cung cấp hiệu suất tốt hơn cho hầu hết các hoạt động tổng hợp

Khung tổng hợp cho phép người dùng có được loại kết quả mà mệnh đề SQL GROUP BY được sử dụng. Các toán tử tổng hợp có thể được xâu chuỗi lại với nhau để tạo thành một đường ống - tương tự như các đường ống Unix. Khung tổng hợp bao gồm toán tử tra cứu $ có thể nối các tài liệu từ nhiều bộ sưu tập, cũng như các toán tử thống kê như độ lệch chuẩn

Thực thi JavaScript phía máy chủ[sửa]

JavaScript có thể được sử dụng trong các truy vấn, hàm tổng hợp (chẳng hạn như MapReduce) và được gửi trực tiếp đến cơ sở dữ liệu để được thực thi

Bộ sưu tập giới hạn [ chỉnh sửa ]

MongoDB hỗ trợ các bộ sưu tập có kích thước cố định được gọi là bộ sưu tập có giới hạn. Loại bộ sưu tập này duy trì thứ tự chèn và khi đã đạt đến kích thước đã chỉ định, sẽ hoạt động giống như một hàng đợi tròn

Giao dịch[sửa]

MongoDB tuyên bố hỗ trợ các giao dịch ACID đa tài liệu kể từ thế hệ thứ 4. 0 phát hành vào tháng 6 năm 2018. Khiếu nại này được cho là không đúng vì MongoDB vi phạm cách ly ảnh chụp nhanh

Các ấn bản[sửa]

MongoDB Community Edition miễn phí và có sẵn cho Windows, Linux và macOS

Máy chủ doanh nghiệp MongoDB[sửa mã nguồn]

MongoDB Enterprise Server là phiên bản thương mại của MongoDB, có sẵn như một phần của đăng ký MongoDB Enterprise Advanced

Bản đồ MongoDB[sửa mã nguồn]

MongoDB cũng có sẵn dưới dạng dịch vụ được quản lý hoàn toàn theo yêu cầu. MongoDB Atlas chạy trên AWS, Microsoft Azure và Google Cloud Platform

Vào ngày 10 tháng 3 năm 2022, MongoDB đã cảnh báo người dùng của mình ở Nga và Belarus rằng dữ liệu của họ được lưu trữ trên nền tảng MongoDB Atlas sẽ bị hủy

Kiến trúc[sửa]

Khả năng tiếp cận ngôn ngữ lập trình[sửa | sửa mã nguồn]

MongoDB có trình điều khiển chính thức cho các ngôn ngữ lập trình và môi trường phát triển chính. Ngoài ra còn có một số lượng lớn trình điều khiển không chính thức hoặc được cộng đồng hỗ trợ cho các ngôn ngữ và khuôn khổ lập trình khác

Truy cập không cần máy chủ[sửa]

Quản lý và giao diện người dùng đồ họa[sửa | sửa mã nguồn]

Chèn bản ghi trong MongoDB với Robomongo 0. 8. 5

Giao diện chính của cơ sở dữ liệu là vỏ mongo. Kể từ MongoDB 3. 2, MongoDB Compass được giới thiệu dưới dạng GUI gốc. Có các sản phẩm và dự án của bên thứ ba cung cấp giao diện người dùng để quản trị và xem dữ liệu

Cấp phép[sửa]

Kể từ tháng 10 năm 2018, MongoDB được phát hành theo Giấy phép Công cộng Phía Máy chủ (SSPL), một giấy phép không miễn phí được phát triển bởi dự án. Nó thay thế Giấy phép Công cộng Chung GNU Affero và gần giống với Giấy phép Công cộng Chung GNU phiên bản 3, nhưng yêu cầu những người cung cấp phần mềm công khai như một phần của "dịch vụ" phải tạo ra toàn bộ mã nguồn của dịch vụ (trong chừng mực mà người dùng . Ngược lại, AGPL chỉ yêu cầu cung cấp mã nguồn của phần mềm được cấp phép cho người dùng khi phần mềm được truyền tải qua mạng. SSPL đã được đệ trình để chứng nhận cho Sáng kiến ​​nguồn mở nhưng sau đó đã bị rút lại. Vào tháng 1 năm 2021, Open Source Initiative tuyên bố rằng SSPL không phải là giấy phép nguồn mở. Trình điều khiển ngôn ngữ có sẵn theo Giấy phép Apache. Ngoài ra, MongoDB Inc. cung cấp giấy phép độc quyền cho MongoDB. Các phiên bản cuối cùng được cấp phép như AGPL phiên bản 3 là 4. 0. 3 (ổn định) và 4. 1. 4

MongoDB đã bị xóa khỏi các bản phân phối Debian, Fedora và Red Hat Enterprise Linux do thay đổi giấy phép. Fedora xác định rằng SSPL phiên bản 1 không phải là giấy phép phần mềm miễn phí vì nó "được tạo ra một cách có chủ ý để phân biệt đối xử mạnh mẽ" đối với người dùng thương mại

Báo cáo lỗi và phê bình[sửa | sửa mã nguồn]

Bảo mật[sửa]

Do cấu hình bảo mật mặc định của MongoDB, cho phép mọi người có quyền truy cập đầy đủ vào cơ sở dữ liệu, dữ liệu từ hàng chục nghìn bản cài đặt MongoDB đã bị đánh cắp. Hơn nữa, nhiều máy chủ MongoDB đã bị giữ để đòi tiền chuộc

Vào tháng 9 năm 2017; .

Từ MongoDB 2. 6 trở đi, các tệp nhị phân từ các gói MongoDB RPM và DEB chính thức sẽ liên kết với localhost theo mặc định. Từ MongoDB 3. 6, hành vi mặc định này đã được mở rộng cho tất cả các gói MongoDB trên tất cả các nền tảng. Do đó, tất cả các kết nối được nối mạng với cơ sở dữ liệu sẽ bị từ chối trừ khi được quản trị viên cấu hình rõ ràng

Chỉ trích kỹ thuật[sửa | sửa mã nguồn]

Trong một số trường hợp lỗi trong đó một ứng dụng có thể truy cập hai quy trình MongoDB riêng biệt, nhưng các quy trình này không thể truy cập lẫn nhau, MongoDB có thể trả về các lần đọc cũ. Trong trường hợp này, MongoDB cũng có thể khôi phục các ghi đã được xác nhận. Vấn đề này đã được giải quyết kể từ phiên bản 3. 4. 0 được phát hành vào tháng 11 năm 2016 (và được chuyển ngược sang v3. 2. 12)

Trước phiên bản 2. 2, các khóa được triển khai trên cơ sở quy trình trên mỗi máy chủ. Với phiên bản 2. 2, khóa đã được triển khai ở cấp cơ sở dữ liệu. Kể từ phiên bản 3. 0, các công cụ lưu trữ có thể cắm được đã được giới thiệu và mỗi công cụ lưu trữ có thể thực hiện các khóa khác nhau. Với MongoDB 3. 0 được triển khai ở cấp bộ sưu tập cho công cụ lưu trữ MMAPv1, trong khi công cụ lưu trữ WiredTiger sử dụng giao thức đồng thời lạc quan cung cấp khóa cấp tài liệu một cách hiệu quả. Ngay cả với các phiên bản trước 3. 0, một cách tiếp cận để tăng tính đồng thời là sử dụng sharding. Trong một số trường hợp, đọc và ghi sẽ mang lại khóa của chúng. Nếu MongoDB dự đoán một trang không có khả năng nằm trong bộ nhớ, thì các thao tác sẽ tạo ra khóa của chúng trong khi tải trang. Việc sử dụng năng suất khóa được mở rộng đáng kể trong 2. 2

Cho đến phiên bản 3. 3. 11, MongoDB không thể thực hiện sắp xếp dựa trên đối chiếu và bị giới hạn so sánh theo byte thông qua memcmp, điều này sẽ không cung cấp thứ tự chính xác cho nhiều ngôn ngữ không phải tiếng Anh khi được sử dụng với mã hóa Unicode. Sự cố đã được khắc phục vào ngày 23 tháng 8 năm 2016

Trước MongoDB 4. 0, các truy vấn đối với một chỉ mục không phải là nguyên tử. Các tài liệu đang được cập nhật trong khi truy vấn đang chạy có thể bị bỏ sót. Giới thiệu về mối quan tâm đọc ảnh chụp nhanh trong MongoDB 4. 0 loại bỏ hiện tượng này

Mặc dù MongoDB tuyên bố trong một bài báo không ghi ngày tháng có tựa đề "MongoDB và Jepsen" rằng cơ sở dữ liệu của họ đã vượt qua các bài kiểm tra của công ty Nghiên cứu An toàn Hệ thống Phân tán Jepsen, được gọi là "Các bài kiểm tra về độ an toàn, tính chính xác và tính nhất quán của dữ liệu khắc nghiệt nhất trong ngành", Jepsen đã xuất bản một bài báo vào tháng 5 năm 2020 nêu rõ . 6. 4 trên thực tế đã thất bại trong các thử nghiệm của họ và MongoDB 4 mới hơn. 2. 6 có nhiều vấn đề hơn bao gồm "giao dịch truy nguyên" trong đó giao dịch đảo ngược thứ tự để lần đọc có thể thấy kết quả của lần ghi trong tương lai. Jepsen đã lưu ý trong báo cáo của họ rằng MongoDB đã bỏ qua bất kỳ đề cập nào về những phát hiện này trên trang "MongoDB và Jepsen" của MongoDB

Hội nghị MongoDB[sửa mã nguồn]

Công ty MongoDB. tổ chức hội nghị nhà phát triển hàng năm được gọi là MongoDB World hoặc MongoDB. trực tiếp

Bao nhiêu MongoDB miễn phí?

Nó có thể được lưu trữ trên các nền tảng như AWS, Azure và GCP để phát triển. Bộ nhớ MongoDB miễn phí 512MB miễn phí.

Tại sao MongoDB không miễn phí?

MongoDB là cơ sở dữ liệu NoSQL mã nguồn mở. MongoDB có sẵn trong hai phiên bản. Một là Mã nguồn mở MongoDB, miễn phí như một phần của Cộng đồng mã nguồn mở, nhưng đối với các phiên bản khác, bạn phải trả phí Giấy phép . Khi so sánh với phiên bản miễn phí, phiên bản này có một số tính năng nâng cao.

Sử dụng MongoDB có mất tiền không?

Có, nó miễn phí sử dụng . Hãy xem xét MongoDB Atlas nếu bạn không muốn tự mình quản lý mongodb.

Phiên bản MongoDB nào miễn phí?

MongoDB Atlas là tùy chọn dịch vụ MongoDB được lưu trữ trên đám mây, không yêu cầu chi phí cài đặt và cung cấp một bậc miễn phí để bắt đầu. Phần này của hướng dẫn chứa thông tin về cách cài đặt MongoDB. Để được hướng dẫn nâng cấp triển khai hiện tại của bạn lên MongoDB 6. 0, thay vào đó hãy xem Quy trình nâng cấp.