Không phải dữ liệu nào cũng xếp gọn được vào bảng Excel. Với những ứng dụng phục vụ người dùng khắp thế giới, Microsoft có Azure Cosmos DB, một kiểu cơ sở dữ liệu lưu thông tin dưới dạng tài liệu linh hoạt.
Thử hình dung bạn làm sổ liên lạc cho cả lớp bằng một bảng kẻ sẵn các cột: họ, tên, tuổi, tình trạng. Đến lượt một bạn chưa có thông tin "tình trạng", ô đó đành bỏ trống. Một bạn khác lại có thêm số điện thoại phụ, nhưng bảng không có cột để ghi. Muốn thêm cột thì phải sửa lại cả bảng. Đây cũng chính là tình huống mà lập trình viên gặp hằng ngày. Cơ sở dữ liệu NoSQL ra đời để xử lý nó.
Cơ sở dữ liệu quan hệ và NoSQL khác nhau ra sao?
Cơ sở dữ liệu là nơi phần mềm lưu và tra cứu thông tin. Loại phổ biến lâu nay là cơ sở dữ liệu quan hệ, như SQL Server hay Oracle. Dữ liệu nằm trong các bảng, mỗi bảng có số cột cố định, mỗi cột có kiểu dữ liệu riêng, mỗi dòng là một bản ghi. SQL là ngôn ngữ truy vấn chuẩn dùng cho loại cơ sở dữ liệu này.
Cuốn Azure Cosmos DB and DocumentDB Succinctly của tác giả Ed Freitas giải thích NoSQL đơn giản là "không quan hệ". Loại này bỏ bớt khuôn khổ bảng cứng nhắc. Có nhiều kiểu NoSQL: lưu theo cặp khóa và giá trị (Azure Table storage), lưu theo cột (Cassandra), lưu theo đồ thị (Neo4j) và lưu theo tài liệu (MongoDB, DocumentDB).
"Tài liệu" ở đây không phải file Word
Trong NoSQL, một tài liệu là một đối tượng JSON, định dạng ghi dữ liệu dạng "tên: giá trị" rất phổ biến trên web. Sách lấy ví dụ ba người: John Doe 44 tuổi đang hoạt động, Peter Pan 67 tuổi đã nghỉ hưu, còn Cristiano Ronaldo 31 tuổi thì chưa có thông tin tình trạng. Trong bảng quan hệ, ô tình trạng của Ronaldo phải để giá trị rỗng (NULL). Trong cơ sở dữ liệu tài liệu, tài liệu của Ronaldo đơn giản là không có mục đó.
Tài liệu còn chứa được thông tin lồng nhau. Thay vì hai cột họ và tên riêng, có thể có mục "FullName" bên trong gồm "First" và "Last". Điều này bảng quan hệ không làm trực tiếp được. Tập hợp nhiều tài liệu gọi là collection, tương tự như một bảng.
.png)
Hình 1. Kết quả truy vấn trong Azure Cosmos DB: câu lệnh SELECT * FROM c trả về một tài liệu JSON chứa thông tin cầu thủ
Một điểm dễ học là DocumentDB vẫn cho truy vấn bằng ngôn ngữ rất giống SQL. Người đã biết SQL có thể viết ngay câu lệnh như trong hình trên.
Vì sao doanh nghiệp cần NoSQL?
Theo sách, khác biệt lớn nằm ở cách mở rộng. Cơ sở dữ liệu quan hệ thường mở rộng "theo chiều dọc", tức là nâng cấp máy chủ mạnh hơn. Đến lúc máy đã hết sức, rất khó chia dữ liệu sang nhiều máy khác. NoSQL được thiết kế để mở rộng "theo chiều ngang", thêm máy là thêm sức chứa, nên dễ đạt quy mô phục vụ hàng triệu người trên Internet.
Azure Cosmos DB là dịch vụ cơ sở dữ liệu trên đám mây Azure của Microsoft. Sách mô tả nó phân tán toàn cầu, cho phép tăng giảm sức chứa và tốc độ xử lý ở nhiều khu vực địa lý, với độ trễ thấp. Dịch vụ này còn hỗ trợ nhiều kiểu giao tiếp như SQL của DocumentDB, MongoDB, đồ thị Gremlin và Azure Table.
.png)
Hình 2. Màn hình sau khi tạo tài khoản Azure Cosmos DB: Azure gợi ý tạo collection và tải ứng dụng mẫu cho .NET, Java, Node.js, Python
Tác giả cũng nói rõ: NoSQL đơn giản và gọn nhẹ, không cố làm hết mọi việc như SQL Server hay Oracle. Cơ sở dữ liệu quan hệ vẫn tồn tại lâu dài. Chỉ là giờ đây lập trình viên có thêm lựa chọn phù hợp cho từng bài toán.
Học cơ sở dữ liệu thì làm nghề gì?
Gần như ứng dụng nào cũng cần lưu dữ liệu: mạng xã hội, cửa hàng trực tuyến, ứng dụng ngân hàng, trò chơi. Vì vậy kiến thức cơ sở dữ liệu cần cho lập trình viên backend (phần xử lý phía máy chủ), lập trình viên ứng dụng, quản trị cơ sở dữ liệu, kỹ sư dữ liệu và kỹ sư điện toán đám mây.
Sách cho thấy một lộ trình học hợp lý: nắm vững cơ sở dữ liệu quan hệ và SQL trước, làm quen JSON và JavaScript, rồi mới bước sang NoSQL. Các ví dụ trong sách viết bằng C# trên Visual Studio, phía máy chủ dùng JavaScript. Đây đều là những ngôn ngữ sinh viên công nghệ thông tin được học.
Kỹ năng người học có được
Học NoSQL giúp bạn rèn tư duy thiết kế dữ liệu: khi nào nên dùng bảng chặt chẽ, khi nào nên để dữ liệu linh hoạt. Bạn cũng quen với điện toán đám mây, nơi dữ liệu không còn nằm trên một máy mà trải ra nhiều trung tâm dữ liệu. Và bạn biết so sánh, chọn công cụ theo nhu cầu thay vì dùng một thứ cho mọi việc.
Dữ liệu là nền móng của mọi ứng dụng
Mỗi lần bạn lướt mạng xã hội hay đặt hàng trên mạng, phía sau là một cơ sở dữ liệu đang làm việc. Hiểu được dữ liệu được lưu thế nào, tìm thế nào, là bước đầu để tự làm ra những ứng dụng như vậy. Nếu bạn tò mò về những gì diễn ra phía sau màn hình, cơ sở dữ liệu là một chủ đề rất đáng học.
Trường Cao đẳng Công nghệ thông tin TP.HCM
- Website: itc.edu.vn - Email tuyển sinh: tuyensinh@itc.edu.vn
- Điện thoại: (028) 386 050 03 - Hotline: 093 886 1080 / 097 500 5356
- Địa chỉ: 12 Trịnh Đình Thảo, P. Tân Phú, TP.HCM
ThS. Trương Châu Long - Trưởng bộ môn CNTT & HTTT