Định dạng nào được sử dụng để lưu trữ dữ liệu trong MongoDB?

MongoDB là một giải pháp cơ sở dữ liệu mã nguồn mở, phi quan hệ, được phân loại là một hệ thống NoSQL và có thể được sử dụng cho các ứng dụng Dữ liệu lớn. MongoDB được giới thiệu lần đầu tiên vào năm 2009 và hoạt động với cái gọi là bộ sưu tập và tài liệu, lần lượt chứa các cặp khóa-giá trị khác nhau để lưu trữ dữ liệu

Cơ sở dữ liệu NoSQL là gì?

Nguyên tắc NoSQL (“Không chỉ SQL”) xuất hiện lần đầu tiên vào cuối những năm 2000 và thường đề cập đến tất cả các cơ sở dữ liệu không lưu trữ dữ liệu trong các bảng quan hệ và có ngôn ngữ truy vấn không phải là SQL. Các ví dụ nổi tiếng nhất về cơ sở dữ liệu NoSQL, bên cạnh MongoDB, là Apache Cassandra, Redis hoặc Neo4j

Cơ sở dữ liệu NoSQL có thể mở rộng quy mô cao hơn đáng kể so với các giải pháp SQL thông thường do cấu trúc của chúng, vì chúng cũng có thể được phân phối trên các hệ thống và máy tính khác nhau. Ngoài ra, hầu hết các giải pháp đều là nguồn mở và cho phép truy vấn cơ sở dữ liệu mà các hệ thống quan hệ không thể đáp ứng được

Các giải pháp NoSQL thuộc một trong bốn loại

Định dạng nào được sử dụng để lưu trữ dữ liệu trong MongoDB?
Danh mục cơ sở dữ liệu NoSQL

  • Cửa hàng tài liệu lưu trữ nhiều loại thông tin trong một tài liệu. Ví dụ: một tài liệu có thể chứa tất cả dữ liệu trong một ngày
  • Kho lưu trữ khóa-giá trị là cấu trúc dữ liệu rất đơn giản, trong đó mỗi bản ghi được lưu trữ dưới dạng một giá trị với một khóa duy nhất. Khóa này có thể được sử dụng để truy xuất thông tin cụ thể
  • Wide-Column Stores lưu trữ một bản ghi dữ liệu trong một cột chứ không phải theo hàng như thường lệ. Chúng đã được tối ưu hóa để nhanh chóng tìm thấy dữ liệu trong các tập dữ liệu lớn
  • Cơ sở dữ liệu đồ thị lưu trữ thông tin trong cái gọi là nút và cạnh. Điều này giúp dễ dàng biểu diễn các mạng xã hội, ví dụ, trong đó mọi người là các nút riêng lẻ và mối quan hệ giữa họ được biểu diễn dưới dạng cạnh

Cấu trúc cơ sở dữ liệu MongoDB

MongoDB chứa nhiều cái gọi là bộ sưu tập, có thể so sánh với các bảng của cơ sở dữ liệu quan hệ. Trong một bộ sưu tập, có thể có một số cái gọi là tài liệu, lần lượt tương ứng với các bản ghi trong một bảng để duy trì sự tương tự này. Điều thực sự thú vị và mới mẻ xảy ra trong chính các tài liệu. Đó là lý do tại sao chúng ta sẽ xem xét kỹ hơn về chúng

Các tài liệu chứa một số cặp khóa-giá trị lưu trữ dữ liệu thực tế. Các giá trị có thể chứa các kiểu dữ liệu khác nhau (chuỗi, số nguyên, dấu phẩy, v.v. ) đồng thời một khóa có thể có hai kiểu dữ liệu khác nhau trong hai tài liệu khác nhau. Trong mô hình dữ liệu cơ sở dữ liệu quan hệ, điều này sẽ không thể thực hiện được trong hai hàng một cột

Trong triển khai hiện tại, MongoDB chỉ cho phép kích thước dữ liệu 8 MB trên mỗi tài liệu. Sau khi trừ dung lượng lưu trữ cho chi phí tệp, không còn quá nhiều dung lượng lưu trữ cho tập dữ liệu. Tuy nhiên, MongoDB sử dụng định dạng dữ liệu nhị phân được xây dựng trên JSON, giúp nó thân thiện với bộ nhớ hơn nhiều so với các định dạng tệp dựa trên văn bản. Theo tên của nó, BSON, định dạng dữ liệu này dựa trên nguồn gốc của nó (“JSON nhị phân”)

Định dạng tệp MongoDB là gì?

BSON là định dạng tệp nhị phân của JSON và tối ưu hóa nó ở một số khía cạnh. Các định dạng tệp gốc, như CSV, XML hoặc JSON, được gọi là định dạng dựa trên văn bản. Họ lưu trữ dữ liệu ở dạng văn bản thuần túy. Điều này làm cho chúng dễ hiểu đối với con người chúng ta, nhưng đòi hỏi một lượng không gian lưu trữ tương đối lớn. Khi các dự án Dữ liệu lớn trở nên nổi bật hơn trong những năm gần đây, các định dạng dữ liệu nhị phân đã trở nên thú vị hơn

Những phần lưu trữ này hoặc thậm chí tất cả dữ liệu ở dạng ký hiệu nhị phân, khiến con người chúng ta không thể đọc được chúng trong thời gian lưu trữ. Điều này có nghĩa là việc mở và lưu các tệp như vậy sẽ mất nhiều thời gian hơn một chút vì thông tin phải được xử lý trước, nhưng không gian lưu trữ nhỏ hơn và các truy vấn đôi khi hiệu quả hơn. Các tệp BSON lưu trữ các khóa dưới dạng giá trị nhị phân. Tuy nhiên, các giá trị vẫn được giữ dưới dạng văn bản, trong khi siêu dữ liệu được lưu trữ ở dạng nhị phân và do đó có thể được đọc nhanh hơn các khóa văn bản. Đây là một ví dụ về từ điển JSON đơn giản và tệp BSON tương ứng

{"hello": "world"} →
x16x00x00x00              // total document size
x02                       // 0x02 = type String
hellox00                  // field name
x06x00x00x00worldx00      // field value
x00                       // 0x00 = type EOO ('end of object')

Như chúng ta có thể thấy, tệp BSON thêm một số siêu dữ liệu bổ sung vào định dạng ban đầu, chẳng hạn như kiểu dữ liệu. Điều này có thể trông phức tạp hơn nhiều đối với các tệp nhỏ, nhưng nó chứng tỏ giá trị của nó đối với các tệp rất lớn bằng cách giảm tốc độ đọc

MongoDB thuộc loại NoSQL nào?

MongoDB thuộc về cái gọi là kho lưu trữ tài liệu, là một kiểu con của cơ sở dữ liệu NoQuery. Chúng không liên quan, vì dữ liệu không được lưu trữ trong hàng và cột mà trong tài liệu. Kho lưu trữ tài liệu là một trong những tiểu thể loại phổ biến nhất của NoSQL so với cơ sở dữ liệu quan hệ truyền thống. Những lợi thế của ứng dụng bao gồm

  • Khả năng ứng dụng dễ dàng cho các nhà phát triển cũng do mô hình dữ liệu dễ hiểu
  • Lược đồ dữ liệu linh hoạt, có thể dễ dàng thay đổi ngay cả sau khi tạo cơ sở dữ liệu ban đầu
  • Khả năng mở rộng theo chiều ngang của cơ sở dữ liệu với việc tăng khối lượng dữ liệu hoặc truy cập

Ưu điểm của MongoDB là gì?

MongoDB, giống như các giải pháp NoSQL khác, mang lại nhiều lợi thế so với cơ sở dữ liệu quan hệ cổ điển cho các tập dữ liệu lớn

  • cân bằng tải. Các cơ sở dữ liệu này có thể được phân phối trên các máy ảo khác nhau và do đó vẫn duy trì hiệu suất tương đối ngay cả với một số lượng lớn truy vấn đồng thời hoặc với khối lượng dữ liệu lớn. Mặt khác, cơ sở dữ liệu quan hệ không thể được phân phối trên nhiều máy do thuộc tính cơ bản của chúng (ACID). Do đó, một cỗ máy phải được làm mạnh hơn nếu nó phải xử lý bất kỳ truy vấn nào. Trong hầu hết các trường hợp, điều này tốn kém và phức tạp hơn so với việc trải tải trên một hệ thống
  • Định dạng dữ liệu linh hoạt. Như chúng tôi đã nhấn mạnh, MongoDB có thể lưu trữ các lược đồ dữ liệu linh hoạt hơn nhiều so với cơ sở dữ liệu quan hệ. Mỗi khóa về mặt lý thuyết có thể có định dạng dữ liệu riêng
  • Hỗ trợ nhiều ngôn ngữ lập trình. MongoDB hiện đã được phát triển và hỗ trợ cho nhiều ngôn ngữ lập trình như Python, PHP, Ruby, Node. js, C++, Scala, JavaScript và nhiều thứ khác. Điều này giúp dễ dàng tích hợp cơ sở dữ liệu cho nhiều dự án ứng dụng và bằng ngôn ngữ lập trình của chúng mà không phải chuyển sang ngôn ngữ khác

MongoDB lưu trữ dữ liệu như thế nào?

Cơ sở dữ liệu MongoDB thực sự có thể được sử dụng cho hầu hết các lĩnh vực ứng dụng mà người ta có thể lưu trữ dữ liệu ở định dạng JSON. Sau đó, chúng có thể được “dịch” tương đối dễ dàng sang định dạng BSON và được lưu trữ trong MongoDB. Cấu trúc của tệp BSON không chỉ định bất kỳ cấu trúc nào của dữ liệu và có thể lưu trữ các lược đồ linh hoạt

Nếu chúng ta muốn vẽ sự tương tự với cơ sở dữ liệu quan hệ, các tài liệu riêng lẻ là các hàng trong cơ sở dữ liệu quan hệ, tức là. e. Hồ sơ. Các trường trong tệp BSON chứa dữ liệu của một loại dữ liệu nhất định và do đó được so sánh tốt nhất với các cột trong bảng. Cuối cùng, các tài liệu có nội dung và cấu trúc thông tin tương tự được lưu trữ trong cái gọi là bộ sưu tập, có thể được coi là bảng trong cơ sở dữ liệu quan hệ

Một ví dụ cổ điển về điều này là dữ liệu chuyển động của người dùng trên một trang web. Mỗi hành trình của người dùng khác với hành trình khác và do đó không cung cấp lược đồ dữ liệu cố định. Ví dụ: người dùng trên trang thương mại điện tử đặt hàng và đăng nhập vào hệ thống. Mặt khác, người dùng tiếp theo tìm hiểu về các lời mời làm việc mới nhất trong phần nghề nghiệp của công ty. Trong tệp JSON, tệp này có thể được ánh xạ tương đối dễ dàng thông qua các khóa và do đó cũng được lưu trữ trong MongoDB. Trong cơ sở dữ liệu quan hệ, trường hợp sử dụng tương tự sẽ không dễ ánh xạ

Các lĩnh vực ứng dụng có thể hình dung khác bao gồm dữ liệu phụ trợ từ các ứng dụng ứng dụng, hệ thống quản lý nội dung cho trang web hoặc thậm chí là kho dữ liệu hoàn chỉnh của công ty

MongoDB có phù hợp với các ứng dụng Dữ liệu lớn không?

Ngày nay, thuật ngữ Dữ liệu lớn xuất hiện trên môi của mọi người khi cố gắng mô tả hiện tượng các công ty và tổ chức công nói riêng có lượng dữ liệu ngày càng tăng theo ý của họ, điều này đang đẩy cơ sở dữ liệu truyền thống nói riêng đến giới hạn của chúng

MongoDB chắc chắn là một hệ thống khả thi để hiện thực hóa các ứng dụng Dữ liệu lớn. Trong bối cảnh này, nó gây ấn tượng hơn hết với khả năng mở rộng theo chiều ngang đã nói ở trên và lược đồ dữ liệu linh hoạt. Hơn nữa, nó có một công cụ lưu trữ xử lý bộ nhớ rất hiệu quả và nén các tài liệu chẳng hạn

Tuy nhiên, ưu điểm chính là MongoDB hỗ trợ truy vấn động. Tóm lại, điều này có nghĩa là các câu lệnh truy vấn dữ liệu không được tạo cho đến khi truy vấn đã được bắt đầu. Điều này mang lại lợi thế của việc viết các chương trình linh hoạt phản ứng với tình hình hiện tại. Hãy tưởng tượng bạn điều hành một cửa hàng trực tuyến và một khách hàng chuẩn bị đăng nhập. Chỉ sau khi khách hàng nhập thông tin đăng nhập của mình và nhấn nút đăng nhập, chương trình mới có thể quyết định thông tin về khách hàng phải được tìm kiếm trong tài liệu nào

Do đó, MongoDB đặc biệt phù hợp trong lĩnh vực Dữ liệu lớn khi dữ liệu vẫn cần được thay đổi giữa lưu trữ và truy vấn, tôi. e. tổng hợp, ví dụ