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. Các Cơ sở dữ liệu này sử dụng nhiều mô hình dữ liệu đa dạng, trong đó có văn bản, đồ thị, khóa – giá trị, trong bộ nhớ và tìm kiếm. Trang này có các tài nguyên giúp bạn hiểu biết thêm về cơ sở dữ liệu NoSQL và cách bắt đầu sử dụng.

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, từ "NoSQL" được sử dụng tương đương với "phi quan hệ".


Cơ sở dữ liệu phi quan hệ được xây dựng chuyên dụng của AWS có tính năng mới nào

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 loại mô hình dữ liệu đa dạng để truy cập và quản lý dữ liệu, ví dụ như văn bản, đồ thị, khóa – giá trị, trong bộ nhớ và tìm kiếm. 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 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 mô hình dữ liệu (ví dụ như văn bản, khóa–giá trị và đồ 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

nosql_keyvalue_g

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ữ mới nhất của Snapchat, sang DynamoDB.

nosql_document_g

Tài liệu: Một số nhà phát triển không thích hình dung mô hình dữ liệu dưới dạng các hàng và cột phi chuẩn hóa. Thông thường, ở bậc ứng dụng, dữ liệu được thể hiện dưới dạng văn bản JSON bởi vì định dạng này trực quan hơn đối với các nhà phát triển để giúp họ xem mô hình dữ liệu của mình dưới dạng văn bản. Sự phổ biến của cơ sở dữ liệu văn bản đã tăng lên do các nhà phát triển có thể tiếp tục sử dụng dữ liệu trong cơ sở dữ liệu bằng cách sử dụng cùng định dạng văn bản mà họ đã sử dụng trong mã ứng dụng của mình. DynamoDB và MongoDB là các cơ sở dữ liệu văn bản phổ biến cung cấp các API trực quan và mạnh mẽ để phục vụ công việc phát triển linh hoạt và nhanh chóng.

nosql_graph_g

Đồ 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.

nosql_inmemory_g

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 ElastiCache cung cấp Memcached và Redis, để phục vụ các khối lượng công việc có độ trễ thấp và thông lượng cao, chẳng hạn như không thể đáp ứng nhu cầu của McDonald’s bằng kho 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 yêu cầu cường độ nhanh hơn.

nosql_search_g

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ố. Amazon Elasticsearch Service (Amazon ES) là Cơ sở dữ liệu được xây dựng chuyên dụng để cung cấp khả năng ảo hóa và phân tích dữ liệu do máy tạo gần như theo thời gian thực bằng cách tạo chỉ mục, tập hợp và tìm kiếm nhật ký và số liệu có cấu trúc chưa hoàn chỉnh. Amazon ES còn là công cụ tìm kiếm mạnh mẽ và có hiệu năng cao dành cho các trường hợp sử dụng tìm kiếm toàn văn bản. Expedia đang sử dụng trên 150 miền Amazon ES, 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 NoSQL (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.

  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 trong bộ nhớ, giá trị–khóa, văn bản và đồ thị được thiết kế cho OLTP cho một số 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ơ sở dữ liệu NoSQL cung cấp nhiều mô hình dữ liệu đa dạng, trong đó có văn bản, đồ thị, khóa–giá trị, trong bộ nhớ và tìm kiếm.
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ì?