NoSQL là gì?

Cơ sở dữ liệu phi quan hệ, hiệu năng cao với mô hình dữ liệu linh hoạt

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

Cơ sở dữ liệu NoSQL là Cơ sở dữ liệu được xây dựng dành riêng cho mô hình dữ liệu và có sơ đồ linh hoạt để xây dựng các ứng dụng hiện đại. Cơ sở dữ liệu NoSQL được công nhận rộng rãi vì khả năng dễ phát triển, chức năng cũng như hiệu năng ở quy mô lớn. Trang này có các tài nguyên giúp bạn hiểu thêm về cơ sở dữ liệu NoSQL và bắt đầu sử dụng.

Cơ sở dữ liệu trên AWS: Công cụ thích hợp cho tác vụ thích hợp

Cơ sở dữ liệu NoSQL (phi quan hệ) hoạt động như thế nào?

Cơ sở dữ liệu NoSQL sử dụng nhiều mô hình dữ liệu để truy cập và quản lý dữ liệu. Các loại cơ sở dữ liệu này được tối ưu hóa dành riêng cho các ứng dụng yêu cầu mô hình dữ liệu linh hoạt có lượng dữ liệu lớn và độ trễ thấp, có thể đạt được bằng cách giảm bớt một số hạn chế về tính nhất quán của dữ liệu của các cơ sở dữ liệu khác.

Hãy xem ví dụ về mô hình sơ đồ dành cho cơ sở dữ liệu sách đơn giản:

  • Trong cơ sở dữ liệu quan hệ, hồ sơ về một cuốn sách thường được phân tách (hay còn gọi là "chuẩn hóa") và lưu trữ trong các bảng tách biệt nhau, còn mối quan hệ được quy định bằng các ràng buộc khóa ngoại và khóa chính. Trong ví dụ này, bảng Sách có các cột cho ISBN, Tên sáchSố phiên bản, bảng Tác giả có các cột cho ID tác giả Tên tác giả và cuối cùng, bảng Tác giả–ISBN có các cột cho ID tác giả ISBN. Mô hình quan hệ được thiết kế để cho phép các cơ sở dữ liệu này thực thi tính toàn vẹn tham chiếu giữa nhiều bảng trong cơ sở dữ liệu, được chuẩn hóa để giảm dư thừa và thường được tối ưu hóa cho mục đích lưu trữ.
  • Trong cơ sở dữ liệu NoSQL, hồ sơ về một cuốn sách thường được lưu trữ dưới dạng văn bản JSON. Với từng quyển sách, mục, ISBN, Tên sách, Số phiên bản, Tên tác giảID tác giả được lưu trữ dưới dạng thuộc tính trong một văn bản duy nhất. Trong mô hình này, dữ liệu được tối ưu hóa cho việc phát triển trực quan và khả năng thay đổi quy mô theo chiều ngang.

Vì sao bạn nên sử dụng cơ sở dữ liệu NoSQL?

Cơ sở dữ liệu NoSQL là lựa chọn cực kỳ thích hợp cho nhiều ứng dụng hiện đại, ví dụ như di động, web và trò chơi đòi hỏi phải sử dụng cơ sở dữ liệu cực kỳ thiết thực, linh hoạt, có khả năng thay đổi quy mô và hiệu năng cao để đem đến cho người dùng trải nghiệm tuyệt vời.

  • Linh hoạt: Cơ sở dữ liệu NoSQL thường cung cấp các sơ đồ linh hoạt giúp công đoạn phát triển nhanh hơn và có khả năng lặp lại cao hơn. Mô hình dữ liệu linh hoạt biến cơ sở dữ liệu NoSQL thành lựa chọn lý tưởng cho dữ liệu không được tổ chức thành cấu trúc hoặc có cấu trúc chưa hoàn chỉnh.
  • Khả năng thay đổi quy mô: Cơ sở dữ liệu NoSQL thường được thiết kế để tăng quy mô bằng cách sử dụng các cụm phần cứng được phân phối thay vì tăng quy mô bằng cách bổ sung máy chủ mạnh và tốn kém. Một số nhà cung cấp dịch vụ đám mây xử lý các hoạt động này một cách không công khai dưới dạng dịch vụ được quản lý đầy đủ.
  • Hiệu năng cao: Cơ sở dữ liệu NoSQL được tối ưu hóa theo các mô hình dữ liệu cụ thể và các mẫu truy cập giúp tăng hiệu năng cao hơn so với việc cố gắng đạt được mức độ chức năng tương tự bằng cơ sở dữ liệu quan hệ.
  • Cực kỳ thiết thực: Cơ sở dữ liệu NoSQL cung cấp các API và kiểu dữ liệu cực kỳ thiết thực được xây dựng riêng cho từng mô hình dữ liệu tương ứng.

Các loại cơ sở dữ liệu NoSQL

Khóa–giá trị: Cơ sở dữ liệu khóa–giá trị có khả năng phân mảnh cao và cho phép thay đổi quy mô theo chiều ngang ở các quy mô lớn mà các loại hình cơ sở dữ liệu khác không thể làm được. Mô hình dữ liệu khóa–giá trị được dùng cho trò chơi, công nghệ quảng cáo và đặc biệt thích hợp cho IoT. Amazon DynamoDB được thiết kế để có độ trễ ổn định chỉ vài mili giây cho khối lượng công việc thuộc quy mô bất kỳ. Hiệu năng ổn định này là lý do chính để di chuyển tính năng Stories của Snapchat (kể cả khối lượng công việc ghi lưu trữ lớn nhất của Snapchat) sang DynamoDB.

Tài liệu: Trong mã ứng dụng, dữ liệu thường được biểu diễn dưới dạng một đối tượng hoặc văn bản dạng JSON vì đây là mô hình dữ liệu hiệu quả và trực quan cho các nhà phát triển. Cơ sở dữ liệu văn bản giúp nhà phát triển dễ dàng lưu trữ và truy vấn dữ liệu trong một cơ sở dữ liệu bằng cách sử dụng cùng một định dạng mô hình văn bản họ sử dụng trong mã ứng dụng của mình. Tính chất linh hoạt, bán cấu trúc và phân cấp của các văn bản và cơ sở dữ liệu văn bản cho phép chúng phát triển phù hợp với yêu cầu của ứng dụng. Mô hình văn bản phát huy hiệu quả với danh mục, hồ sơ người dùng và hệ thống quản lý nội dung, nơi từng văn bản là duy nhất và phát triển theo thời gian. Amazon DocumentDB (với khả năng tương thích MongoDB) và MongoDB là các cơ sở dữ liệu văn bản phổ biến cung cấp các API mạnh mẽ và trực quan để phát triển linh hoạt và lặp lại.

Đồ thị: Mục đích của cơ sở dữ liệu đồ thị là giúp việc dựng và chạy ứng dụng hoạt động với các bộ dữ liệu có khả năng kết nối cao trở nên dễ dàng. Cơ sở dữ liệu đồ thị thường được sử dụng cho các đồ thị tri thức, mạng xã hội, công cụ đề xuất và phát hiện lừa đảo. Amazon Neptune là dịch vụ cơ sở dữ liệu đồ thị được quản lý đầy đủ. Neptune hỗ trợ cả mô hình Đồ thị thuộc tính lẫn Framework mô tả tài nguyên (RDF), cung cấp cho người dùng lựa chọn hai API đồ thị: TinkerPop và RDF/SPARQL. Các cơ sở dữ liệu đồ thị phổ biến gồm có Neo4j và Giraph.

Trong bộ nhớ: Ứng dụng trò chơi và công nghệ quảng cáo đã sử dụng loại Cơ sở dữ liệu này trong nhiều trường hợp như bảng xếp hạng, kho lưu trữ phiên và phân tích thời gian thực yêu cầu thời gian phản hồi đạt mức micro giây và lưu lượng có thể đạt mức đỉnh điểm vào bất kỳ thời điểm nào. Amazon MemoryDB for Redis là một dịch vụ cơ sở dữ liệu trong bộ nhớ, bền, tương thích với Redis có chức năng đảm bảo độ trễ của thao tác đọc tính bằng micro giây, độ trễ của thao tác ghi chưa đến mười mili giây và độ bền trên nhiều vùng sẵn sàng. MemoryDB được xây dựng với mục đích đem lại độ bền và hiệu suất cực nhanh để bạn có thể sử dụng làm cơ sở dữ liệu chính cho các ứng dụng vi dịch vụ, hiện đại. Amazon ElastiCache là dịch vụ bộ nhớ đệm trong bộ nhớ được quản lý hoàn toàn, tương thích với cả Redis và Memcached để phục vụ khối lượng công việc có độ trễ thấp, thông lượng cao. Các khách hàng yêu cầu khả năng phản hồi theo thời gian thực cho ứng dụng của mình như Tinder phụ thuộc vào những kho lưu trữ dữ liệu trong bộ nhớ hơn là lưu trữ dữ liệu trên đĩa. Amazon DynamoDB Accelerator (DAX) là ví dụ khác về kho dữ liệu được xây dựng chuyên dụng. DAX giúp DynamoDB đọc nhanh hơn rất nhiều.

Tìm kiếm: Nhiều ứng dụng xuất nhật ký để giúp nhà phát triển khắc phục sự cố. Dịch vụ OpenSearch của Amazon được xây dựng nhằm mục đích cung cấp hình ảnh trực quan và phân tích gần như trong thời gian thực về các dữ liệu do máy tạo bằng cách lập chỉ mục, tập hợp và tìm kiếm trong các nhật ký và chỉ số bán cấu trúc. Dịch vụ OpenSearch của Amazon cũng là công cụ tìm kiếm mạnh mẽ, có hiệu suất cao cho các trường hợp sử dụng tìm kiếm toàn bộ văn bản. Expedia đang sử dụng trên 150 miền Dịch vụ OpenSearch của Amazon, 30 TB dữ liệu và 30 tỷ văn bản cho nhiều chức năng đóng vai trò quan trọng, từ theo dõi và khắc phục sự cố trong khâu vận hành đến tối ưu hóa quá trình theo dấu và định giá chồng ứng dụng được phân phối.

Cơ sở dữ liệu SQL (quan hệ) so với Cơ sở dữ liệu NoSQL (phi quan hệ)

Trong nhiều thập kỷ, mô hình dữ liệu chiếm ưu thế về lượng sử dụng để phát triển ứng dụng là mô hình dữ liệu quan hệ được sử dụng trong các cơ sở dữ liệu quan hệ, ví dụ như Oracle, DB2, SQL Server, MySQL và PostgreSQL. Mãi cho đến cuối những năm 2000, các mô hình dữ liệu khác mới bắt đầu được đưa vào áp dụng và sử dụng nhiều hơn. Để phân biệt và phân loại các cơ sở dữ liệu và mô hình dữ liệu mới này, từ "NoSQL" đã được đặt ra. Thông thường, thuật ngữ "NoSQL" được sử dụng tương đương với "phi quan hệ".

Mặc dù có nhiều loại cơ sở dữ liệu NoSQL với nhiều tính năng đa dạng, bảng sau sẽ minh họa một số khác biệt giữa cơ sở dữ liệu SQL và NoSQL.

Bắt đầu với NoSQL
  Cơ sở dữ liệu quan hệ Cơ sở dữ liệu NoSQL

Khối lượng công việc tối ưu

Cơ sở dữ liệu quan hệ được thiết kế dành cho các ứng dụng xử lý giao dịch trực tuyến (OLTP) trong giao dịch có độ ổn định cao và thích hợp để xử lí phân tích trực tuyến (OLAP). Các cơ sở dữ liệu NoSQL được thiết kế cho các mẫu truy cập dữ liệu, bao gồm các ứng dụng có độ trễ thấp. Cơ sở dữ liệu tìm kiếm NoSQL được thiết kế để phục vụ phân tích dữ liệu có cấu trúc chưa hoàn chỉnh. 
Mô hình dữ liệu

Mô hình quan hệ chuẩn hóa dữ liệu vào bảng được hình thành từ hàng và cột. Sơ đồ quy định rõ ràng bảng, hàng, cột, chỉ mục, mối quan hệ giữa các bảng và các thành tố cơ sở dữ liệu khác. Cơ sở dữ liệu sẽ thực thi tính toàn vẹn tham chiếu trong mối quan hệ giữa các bảng. 

Các cơ sở dữ liệu NoSQL cung cấp nhiều mô hình dữ liệu khác nhau như khóa-giá trị, tài liệu và biểu đồ, được tối ưu hóa để đạt hiệu năng và quy mô tối ưu. 
Thuộc tính ACID

Cơ sở dữ liệu quan hệ có các thuộc tính mang tính nguyên tố, nhất quán, tách biệt và bền vững (ACID):

  • Tính nguyên tố đòi hỏi giao dịch phải được thực thi đầy đủ hoặc hoàn toàn không thực hiện.
  • Tính nhất quán đòi hỏi rằng khi giao dịch được thực hiện, dữ liệu phải nhất quán với sơ đồ cơ sở dữ liệu.
  • Tính tách biệt đòi hỏi rằng các giao dịch diễn ra đồng thời phải được thực thi tách biệt với nhau.
  • Tính bền vững đòi hỏi phải có khả năng phục hồi từ tình trạng hư hỏng hệ thống hoặc mất điện đột ngột về trạng thái đã biết cuối cùng.
Cơ sở dữ liệu NoSQL thường phải đánh đổi bằng cách nới lỏng một số thuộc tính ACID này của cơ sở dữ liệu quan hệ để có mô hình dữ liệu linh hoạt hơn có khả năng thay đổi quy mô theo chiều ngang. Việc này biến các cơ sở dữ liệu NoSQL thành lựa chọn tuyệt vời cho các trường hợp sử dụng cần thông lượng cao, độ trễ thấp cần thay đổi quy mô theo chiều ngang vượt qua giới hạn của một phiên bản duy nhất.
Hiệu năng Hiệu năng thường phụ thuộc vào hệ thống con của ổ đĩa. Thông thường, việc tối ưu hóa các truy vấn, chỉ mục và cấu trúc bảng bắt buộc phải được thực hiện để đạt mức hiệu năng tối đa. Hiệu năng thường được xem là chức năng của kích cỡ cụm phần cứng ngầm, độ trễ mạng và ứng dụng đưa ra lệnh gọi.
Quy mô Cơ sở dữ liệu quan hệ thường tăng quy mô bằng cách tăng năng lực điện toán của phần cứng hoặc tăng quy mô bằng cách thêm bản sao của khối lượng công việc chỉ đọc. Cơ sở dữ liệu NoSQL thường có tính phân mảnh cao do các mẫu truy cập khóa-giá trị có khả năng tăng quy mô bằng cách sử dụng kiến trúc được phân phối để tăng thông lượng, đem đến hiệu năng ổn định với quy mô gần như không giới hạn.
API Yêu cầu lưu trữ và truy xuất dữ liệu được truyền đạt bằng cách sử dụng các truy vấn nhất quán với ngôn ngữ truy vấn có cấu trúc (SQL). Các truy vấn này được phân tích và thực thi bởi cơ sở dữ liệu quan hệ. API trên cơ sở đối tượng cho phép các nhà phát triển ứng dụng dễ dàng lưu trữ và truy xuất cấu trúc dữ liệu trong bộ nhớ. Khóa phân mảnh tìm kiếm các cặp khóa-giá trị, tập hợp cột hoặc văn bản có cấu trúc chưa hoàn chỉnh có chứa đối tượng và thuộc tính của ứng dụng được xếp theo chuỗi.

Thuật ngữ SQL so với NoSQL

Bảng sau sẽ so sánh thuật ngữ được sử dụng trong cơ sở dữ liệu NoSQL chọn lọc với thuật ngữ được sử dụng trong cơ sở dữ liệu SQL.

SQL MongoDB DynamoDB Cassandra  Couchbase
Bảng Bộ sưu tập Bảng Bảng Bộ chứa dữ liệu
Hàng Tài liệu Mục Hàng Tài liệu
Cột Trường Thuộc tính Cột Trường
Khóa chính Id đối tượng Khóa chính
Khóa chính ID văn bản
Chỉ mục Chỉ mục Chỉ mục thứ cấp Chỉ mục Chỉ mục
Chế độ xem Chế độ xem Chỉ mục thứ cấp toàn cục Chế độ xem cụ thể hóa Chế độ xem
Bảng hoặc đối tượng lồng nhau Văn bản nhúng Bản đồ Bản đồ Bản đồ
Mảng Mảng Danh sách Danh sách Danh sách
Danh sách
Danh sách
Khóa chính

Bắt đầu với DynamoDB

Việc bắt đầu với DynamoDB rất dễ dàng. Hãy tham khảo trang web Hướng dẫn bắt đầu dành cho DynamoDB để tạo bảng đầu tiên chỉ trong vài lần nhấp chuột. Bạn cũng có thể tải xuống báo cáo nghiên cứu chuyên sâu của AWS, để tìm hiểu các biện pháp thực hành tốt nhất để di chuyển khối lượng công việc từ hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) lên DynamoDB.

Amazon DynamoDB là gì?