DocumentDB SQL - Tổng quan
DocumentDB là nền tảng cơ sở dữ liệu tài liệu NoSQL mới nhất của Microsoft chạy trên Azure. Trong hướng dẫn này, chúng ta sẽ tìm hiểu tất cả về cách truy vấn tài liệu bằng cách sử dụng phiên bản SQL đặc biệt được hỗ trợ bởi DocumentDB.
Cơ sở dữ liệu tài liệu NoSQL
DocumentDB là cơ sở dữ liệu tài liệu NoSQL mới nhất của Microsoft, tuy nhiên, khi chúng tôi nói cơ sở dữ liệu tài liệu NoSQL, chính xác thì ý của chúng tôi là NoSQL và cơ sở dữ liệu tài liệu là gì?
SQL có nghĩa là Ngôn ngữ truy vấn có cấu trúc, là ngôn ngữ truy vấn truyền thống của cơ sở dữ liệu quan hệ. SQL thường được coi là cơ sở dữ liệu quan hệ.
Sẽ thực sự hữu ích hơn nếu coi cơ sở dữ liệu NoSQL là cơ sở dữ liệu không quan hệ, vì vậy NoSQL thực sự có nghĩa là không quan hệ.
Có nhiều loại cơ sở dữ liệu NoSQL khác nhau bao gồm các cửa hàng giá trị chính như:
- Lưu trữ bảng Azure
- Cửa hàng dựa trên cột, như Cassandra
- Cơ sở dữ liệu đồ thị, như NEO4
- Cơ sở dữ liệu tài liệu, như MongoDB và Azure DocumentDB
Tại sao cú pháp SQL?
Điều này thoạt nghe có vẻ lạ, nhưng trong DocumentDB là cơ sở dữ liệu NoSQL, chúng tôi truy vấn bằng SQL. Như đã đề cập ở trên, đây là một phiên bản đặc biệt của SQL được bắt nguồn từ ngữ nghĩa JSON và JavaScript.
SQL chỉ là một ngôn ngữ, nhưng nó cũng là một ngôn ngữ rất phổ biến, giàu tính biểu cảm. Vì vậy, chắc chắn có vẻ như là một ý tưởng hay khi sử dụng một số phương ngữ của SQL hơn là nghĩ ra một cách hoàn toàn mới để diễn đạt các truy vấn mà chúng ta cần học nếu bạn muốn lấy tài liệu ra khỏi cơ sở dữ liệu của mình.
SQL được thiết kế cho cơ sở dữ liệu quan hệ và DocumentDB là cơ sở dữ liệu tài liệu không quan hệ. Nhóm DocumentDB đã thực sự điều chỉnh cú pháp SQL cho thế giới phi quan hệ của cơ sở dữ liệu tài liệu và đây là ý nghĩa của việc root SQL trong JSON và JavaScript.
Ngôn ngữ này vẫn đọc như SQL quen thuộc, nhưng ngữ nghĩa tất cả đều dựa trên các tài liệu JSON miễn phí của lược đồ thay vì các bảng quan hệ. Trong DocumentDB, chúng ta sẽ làm việc với các kiểu dữ liệu JavaScript hơn là các kiểu dữ liệu SQL. Chúng ta sẽ quen thuộc với SELECT, FROM, WHERE, v.v., nhưng với các kiểu JavaScript, bị giới hạn ở số và chuỗi, đối tượng, mảng, Boolean và null ít hơn nhiều so với phạm vi rộng của các kiểu dữ liệu SQL.
Tương tự, các biểu thức được đánh giá là các biểu thức JavaScript hơn là một số dạng T-SQL. Ví dụ: trong thế giới dữ liệu không chuẩn hóa, chúng tôi không xử lý các hàng và cột, mà là các tài liệu không có giản đồ với cấu trúc phân cấp chứa các mảng và đối tượng lồng nhau.
SQL hoạt động như thế nào?
Nhóm DocumentDB đã trả lời câu hỏi này theo một số cách sáng tạo. Một vài trong số chúng được liệt kê như sau:
Đầu tiên, giả sử bạn chưa thay đổi hành vi mặc định để tự động lập chỉ mục mọi thuộc tính trong tài liệu, bạn có thể sử dụng ký hiệu chấm trong các truy vấn của mình để điều hướng đường dẫn đến bất kỳ thuộc tính nào cho dù nó có được lồng sâu như thế nào trong tài liệu.
Bạn cũng có thể thực hiện phép nối nội bộ tài liệu trong đó các phần tử mảng lồng nhau được nối với phần tử mẹ của chúng trong tài liệu theo cách rất giống với cách phép nối được thực hiện giữa hai bảng trong thế giới quan hệ.
Các truy vấn của bạn có thể trả về tài liệu từ cơ sở dữ liệu như hiện tại hoặc bạn có thể chiếu bất kỳ hình dạng JSON tùy chỉnh nào mà bạn muốn dựa trên nhiều hay ít dữ liệu tài liệu mà bạn muốn.
SQL trong DocumentDB hỗ trợ nhiều toán tử phổ biến bao gồm:
Phép toán số học và bitwise
Logic AND và OR
So sánh bình đẳng và phạm vi
Nối chuỗi
Ngôn ngữ truy vấn cũng hỗ trợ một loạt các hàm tích hợp.