Truy vấn dữ liệu là gì?
Truy vấn dữ liệu là tìm kiếm và hiển thị dữ liệu, bao gồm 2 hoạt động chính là indexing và querying, trong đó:
- Querying (còn gọi là truy vấn) là thao tác tìm kiếm dữ liệu bằng cách lọc các tiêu chí cụ thể.
- Indexing là cách sắp xếp dữ liệu giúp tăng tối đa hiệu quả của việc querying.
Nếu bạn tìm đọc một cuốn sách, việc tìm kiếm sách trong thư viện sẽ nhanh và dễ dàng hơn nhiều so với việc tìm sách trong một nhà kho với nhiều chồng sách khác nhau. Bởi vì sách trong thư viện được phân loại rõ ràng (sách thuộc thể loại gì) và được sắp xếp theo thứ tự (tập 1 đến tập 2, sách bắt đầu bằng chữ A, đến chữ B…), còn sách trong nhà kho không được sắp xếp theo một trật tự nhất định.
Trong bối cảnh dữ liệu được xem là nguồn dầu mới của thế kỉ 21 và số lượng dữ liệu đang gia tăng rất nhanh trên quy mô toàn cầu, Indexing và querying đang chiếm vai trò ngày càng quan trọng.
Vấn đề và giải pháp cho khả năng truy vấn dữ liệu từ blockchain
Vấn đề của blockchain trong việc truy vấn dữ liệu
Blockchain là công nghệ đột phá trong việc mang lại sự minh bạch và phi tập trung. Về cơ bản, blockchain là một cuốn sổ cái chứa dữ liệu không thể bị sửa đổi và ai cũng có quyền truy cập để xem dữ liệu trong cuốn sổ cái đó. Sự xuất hiện của những ý tưởng mới như smart contract, oracle là tiền đề cho nhiều nhánh phát triển như: DeFi, NFT, SocialFi… Theo đó, nhu cầu cho việc truy vấn dữ liệu trên blockchain cũng ngày càng tăng.
Mặc dù cũng giữ vai trò lưu trữ dữ liệu nhưng blockchain có thiết kế khác với các database (nơi lưu trữ dữ liệu) đang được sử dụng hiện nay. Chính điều này làm phát sinh các vấn đề liên quan tới việc truy vấn dữ liệu trên blockchain.
Những vấn đề chính ảnh hưởng đến hiệu quả truy vấn dữ liệu trên blockchain bao gồm:
- Thiết kế nền tảng: Cấu trúc blockchain bao gồm nhiều khối dữ liệu (block) được liên kết với nhau tạo thành chuỗi (chain). Cấu trúc này không cho phép lưu trữ hoàn toàn dữ liệu vào một block. Do đó việc tìm kiếm một thông tin nào đó trong một biển dữ liệu tốn rất nhiều thời gian và không hiệu quả.
- Thiếu ngôn ngữ truy vấn: Thông thường, mỗi loại database đều có một ngôn ngữ truy vấn giúp trả lời các câu hỏi theo tiêu chí cụ thể. Do blockchain sử dụng một ngôn ngữ lập trình mới nên chúng không tương thích với bất kỳ ngôn ngữ truy vấn nào hiện nay. Việc truy vấn thông tin với độ khó kỹ thuật cao yêu cầu các nhà phát triển dapp phải có khả năng lập trình xuất tốt.
- Hạn chế liên quan tới API: API là phương thức giúp kết nối các hệ thống dữ liệu lại với nhau. Tuy nhiên, hiện tại phần dữ liệu được kết nối còn khá đơn giản và chưa được tận dụng để đạt hiệu quả cao.
Những vấn đề trên khiến blockchain có thể là một “kho chứa sách” an toàn, nhưng lại không quá lý tưởng để trở thành một “thư viện” nơi ai cũng có thể dễ dàng tìm kiếm thông tin. Do đó, nếu muốn được ứng dụng rộng rãi, blockchain cần các giải pháp giúp việc truy vấn thông tin trở nên dễ dàng hơn.
Giải pháp giúp cải thiện khả năng truy vấn dữ liệu từ blockchain
Từ những vấn đề trên chúng ta có thể xác định những đặc điểm chính của các giải pháp giúp cải thiện khả năng truy vấn dữ liệu từ blockchain. Chúng bao gồm:
- Sử dụng hình thức lưu trữ tập trung, nơi thông tin được lưu trữ toàn diện và có thể được tìm kiếm dễ dàng.
- Phát triển và sử dụng một ngôn ngữ lập trình giúp truy vấn dữ liệu từ blockchain.
- Đảm bảo sự minh bạch về thứ tự lưu trữ dữ liệu để dễ dàng cho việc truy vấn trong hệ thống.
Giải pháp đang áp dụng giúp cải thiện khả năng truy vấn dữ liệu
Để cải thiện khả năng truy vấn dữ liệu từ blockchain, những giải pháp hiện tại sở hữu những đặc điểm chính như:
Sử dụng dịch vụ của các bên tập trung
Hiện tại có rất nhiều công ty cung cấp dịch vụ database tập trung và API cho blockchain, tiêu biểu có thể kể tới Infura, Alchemy… Tuy nhiên, về bản chất, những dịch vụ này đã vi phạm mục tiêu hướng tới sự phi tập trung của blockchain nói chung và các dapp nói riêng. Một hạn chế khác là các dịch vụ tập trung có khả năng bị tác động từ các tác nhân bên ngoài.
Sử dụng dịch vụ của bên phi tập trung
Đã có những dự án được phát triển để giải quyết vấn đề truy vấn dữ liệu nhưng vẫn đảm bảo tính phi tập trung, tiêu biểu trong số đó là The Graph.
The Graph cho phép người dùng tạo ra các Subgraphs (những node con của The Graph). Nhà phát triển sẽ chọn dữ liệu cần được indexing, Subgraph sẽ phụ trách việc indexing và lưu trữ dữ liệu được indexing từ blockchain. The Graph sử dụng ngôn ngữ truy vấn GraphQL giúp việc kết nối hoặc tận dụng nguồn dữ liệu đã được indexing từ subgraphs với các dapp trở nên dễ dàng.
Tự xây dựng một hệ thống lưu trữ riêng
Tự xây dựng một hệ thống lưu trữ riêng là giải pháp hợp lý nếu muốn tối ưu hiệu quả hoạt động và khả năng truy vấn dữ liệu. Tuy nhiên một hệ thống lưu trữ như vậy yêu cầu một khoản đầu tư lớn và chi phí bảo dưỡng cao.
Lời kết
Nhu cầu cho việc truy vấn dữ liệu trên blockchain đang ngày càng tăng. Việc cải thiện khả năng truy vấn dữ liệu là điều kiện cần để blockchain tăng tốc độ hòa nhập trong kỷ nguyên thông tin hiện nay.