« Home « Kết quả tìm kiếm

Mở rộng truy vấn MySQL và ứng dụng chuyển đổi dữ liệu dạng bảng sang JSON


Tóm tắt Xem thử

- Mở rộng truy vấn MySQL và ứng dụng chuyển đổi dữ liệu dạng bảng sang JSON.
- Chương 1: Tổng quan về Json và ứng dụng: Trong chương này sẽ trình bày một cách khái quát về định dạng trao đổi dữ liệu JSON như cấu trúc của dữ liệu dạng JSON, quá trình gửi và nhận dữ liệu dạng JSON giữa máy chủ và máy khách và ứng dụng của JSON.
- Tổng quan kiến trúc hệ quản trị cơ sở dữ liệu MySQL: Trong chương này sẽ trình bày một cách khái quát và chi tiết nhất về lịch sử hình thành và kiến trúc của hệ quản trị CSDL MySQL..
- Chương 3: Mở rộng truy vấn chuyển đổi dữ liệu sang dạng json: Trong chương này sẽ trình bày các cách khác nhau để thêm mới một hàm vào máy chủ MySQL.
- Tập trung tìm hiểu cách viết và thêm mới một hàm do người dùng định nghĩa (UDF) vào MySQL từ đó ứng dụng vào xây dựng hàm UDF để chuyển đổi dữ liệu truy vấn sang dạng JSON..
- Keywords: Dữ liệu.
- Chuyển đổi dữ liệu.
- Cơ sở dữ liệu.
- TỔNG QUAN VỀ JSON VÀ ỨNG DỤNG A.Khái niệm JSON và ứng dụng.
- JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu.
- Ưu điểm của JSON so với định dạng trao đổi dữ liệu XML.
- Không dài dòng, dữ liệu của nó nhỏ phù hợp trong việc trao đổi dữ liệu.
- Quá trình gửi và nhận dữ liệu dạng JSON từ máy khách đến máy chủ:.
- Quá trình gửi và nhận dữ liệu dạng JSON từ máy khách đến máy chủ được mô tả bằng sơ đồ sau:.
- Hình 1.2 Quá trình gửi và nhận dữ liệu JSON từ máy khách đến máy chủ..
- Ứng dụng của JSON.
- Lưu trữ dữ liệu đơn thuần.
- Đôi khi chúng ta muốn lưu trữ dữ liệu dưới dạng metadata ở phía máy chủ chuỗi JSON sẽ được lưu vào cơ sở dữ liệu và sau đó khi cần dữ liệu thì sẽ được giải mã..
- Phương pháp lưu trữ dữ liệu này cũng tươn tự như sử dụng tính năng serialize và unserialize của các ngôn ngữ lập trình.
- Nhưng trong khi serialize và unserialize sử dụng với cả dữ liệu và biến tức là phụ thuộc vào ngôn ngữ lập trình.
- Vì vậy nếu dữ liệu của chúng ta chỉ đơn thuần là dữ liệu cơ bản (chuỗi kí tự, số…) thì hoàn toàn không nên sử dụng serialize mà nên sử dụng JSON..
- Sử dụng trong ngôn ngữ JavaScript và ActionScript để xử lý thông tin trả về từ phía máy chủ rất nhanh về dễ dàng.
- KIẾN TRÚC TỔNG QUAN CỦA HỆ QUẢN TRỊ CSDL MYSQL A.Lịch sử phát triển của hệ quản trị cơ sở dữ liệu MySQL..
- MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng.
- MySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính linh hoạt, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
- Tính năng này cho phép hai nhóm dữ liệu có thể hòa trộn thành một nhóm dữ liệu..
- Hình 2.1 Kiến trúc tổng quan của hệ quản trị cơ sở dữ liệu MySQL.
- Chúng có nhiệm vụ lưu trữ và thu hồi tất cả các dữ liệu được lưu trữ trong MySQL..
- Xác nhận X.509 cũng có thể được sử dụng trên một kết nối Secure Sockets Layer (SSL).
- Chúng ta có thể chuyển.
- Bất cứ khi nào nếu nhiều hơn một truy vấn để thay đổi dữ liệu đồng thời, lúc này sẽ phát sinh vấn đề kiểm soát đồng thời.
- Chúng tôi sẽ sử dụng một hộp thư điện tử trên một hệ thống Unix là một ví dụ.
- Các hệ thống phân phối mail sử dụng phương thức khóa để ngăn chặn việc lỗi file này.
- Nếu chúng ta nghĩ rằng một hộp thư như là một bảng trong cơ sở dữ liệu và mỗi thư như là một hàng, thì ta dễ dàng nhận thấy vấn đề ở cùng nội dung.
- Với nhiều cách, hộp thư thực sự chỉ là một bảng cơ sở dữ liệu đơn giản.
- Việc sửa đổi các hàng trong một bảng cơ sở dữ liệu tương tự như việc xóa hoặc thay đổi nội dung của các thông điệp trong một file hộp thư..
- Thay vì khóa toàn bộ tài nguyên, ta chỉ cần khóa một phần có chứa các dữ liệu chúng ta cần phải thay đổi.
- Tốt hơn, việc khóa chỉ nên thực hiện chính xác với phần dữ liệu chúng ta có kế hoạch thay đổi.
- Việc giảm thiểu số lượng dữ liệu mà chúng ta muốn khóa tại một thời điểm, cho phép các thay đổi một nguồn tài nguyên nhất định nào đó xảy ra đồng thời miễn là chúng không xung đột với nhau..
- MySQL hỗ trợ các kỹ thuật lưu trữ khác nhau để điều khiển tạo ra các bảng phục vụ cho các mục đích ứng dụng khác nhau của người dùng.
- MyISAM: là kỹ thuật lưu trữ mặc định (trước phiên bản 5.1), và được sử dụng ở hầu hết các ứng dụng web, ứng dụng kho dữ liệu và những môi trường ứng dụng ứng dụng khác..
- InnoDB: Một kỹ thuật lưu trữ an toàn trong trong giao dịch như commit, rollback và khả năng phục hồi để bảo vệ dữ liệu người dùng.
- InnoDB cung cấp khóa hàng, và cũng cung cấp tính toàn vẹn dữ liệu bằng các ràng buộc toàn vẹn tham chiếu khóa ngoài..
- Với kỹ thuật này chúng ta có thể sử dụng vào nhiều ứng dụng khác nhau đặc biệt là ứng dụng trong kho dữ liệu.
- Memory: Lưu trữ tất cả dữ liệu trong bộ nhở RAM để truy cập nhanh các ứng dụng đòi hỏi cao về hiệu năng.
- Kỹ thuật này tốt cho môi trường VLDB giống như kho dữ liệu..
- Federated: cung cấp khả năng liên kết các máy chủ riêng biệt MySQL để tạo ra một cơ sở dữ liệu logic từ các máy chủ vật lý..
- NDBCLUSTER (cũng được biết đến như NDB): đây là một kỹ thuật phân cụm cơ sở dữ liệu đặc biệt phù hợp cho các ứng dụng đòi hỏi cao về thời gian hoạt động và tính sẵn dùng..
- CSV: là kỹ thuật lưu trữ dữ liệu trên file văn bản, sử dụng các giá trị định dạng bằng dấu..
- Blackhole: Mục đích của kỹ thuật này phục vụ trong thiết kế cơ sở dữ liệu phân tán..
- MỞ RỘNG TRUY VẤN CHUYỂN ĐỔI DỮ LIỆU SANG DẠNG JSON.
- Mục này giới thiểu các loại hàm trong MySQL và các cách tạo ra các hàm trong MySQL tuy nhiên trong khuôn khổ luận văn chỉ giới thiệu tập trung vào cách mở rộng truy vấn sử dụng các hàm do người dung tự phát triển.
- Từ đó ứng dụng xây dựng các hàm UDF chuyển đỗi dữ liệu truy vấn dạng bảng sang JSON..
- Hàm có thể trả về kiểu số nguyên, kiểu chuỗi, kiểu số thực cũng như chấp nhận nhiều tham số đầu vào cùng kiểu dữ liệu.
- Với mỗi hàm nếu chúng ta muốn sử dụng trong câu lệnh SQL chúng ta nên định nghĩa tương ứng trong C hoặc C.
- Ví dụ tên “xxx” được sử dụng cho tên một hàm để phân biệt giữa SQL và C (C.
- Khi sử dụng C++ chúng ta có thể đóng gói hàm trong C với từ khóa extern "C".
- điều này sẽ bảo đảm rằng tên của hàm trong C++ có thể đọc được khi hoàn thành hàm UDF..
- Hàm UDF đơn giản.
- Trong phần này sẽ mô tả các hàm khác nhau cần định nghĩa khi tạo các hàm UDF đơn giản.
- Khi tạo ra một hàm UDF đơn giản cần phải tạo ra 3 hàm, 2 trong số 3 hàm đó có thể tùy chọn.
- Khi một truy vấn SQL gọi hàm UDF thì hàm init sẽ được gọi đầu tiên nếu nó tồn tại.
- Hàm chính (hàm bắt buộc) sau khi hàm khởi tạo xxx_init() được gọi thì hàm xxx() sẽ được gọi hàm này có trách nhiệm xử lý dữ liệu và trả về kết quả..
- Khi một hàm UDF đơn giản được gọi thứ tự gọi các hàm sẽ như sau:.
- C.Hàm UDF tổng hợp.
- Trong phần này sẽ mô tả những thiết lập cần thiết khi tạo ra các hàm UDF tổng hợp.
- Như đã trình bày ở mục Hàm UDF tổng hợp ngoài các hàm của hàm UDF đơn giản nó còn có thêm các hàm như hàm xxx_reset, xxx_add và xxx_clear.
- Thứ tự các hàm được gọi khi truy vấn SQL gọi hàm UDF tổng hợp như sau:.
- Nó thiết lập lại giá trị của biến tổng hợp và sau đó sử dụng tham số UDF_ARGS như là giá trị đầu tiên của nhóm hàn được khai báo như sau:.
- Hàm xxx_clear() là hàm cần có trong MySQL phiên bản 5.1 Hàm xxx_add().
- Chúng ta sử dụng để thêm giá trị trong tham số UDF_ARGS cho giá trị tổng hợp.
- Hàm xxx() là hàm UDF có chức năng tổng hợp được khai báo như hàm xxx() của hàm UDF đơn giản..
- Hàm chính trong hàm tổng hợp khác với hàm chính trong hàm UDF đơn giản thay vì hoạt động trên các dòng dữ liệu đơn hàm chính trong hàm UDF luôn hoạt động trên dữ liệu tổng hợp được tổng hợp bởi hàm add dữ liệu này thường được lưu trữ bởi cấu trúc dữ liệu được tham chiếu bởi con trỏ initid->ptr được tạo ra bởi hàm init.
- Hàm chính sẽ lấy dữ liệu từ cấu trúc này và tính toán tổng hợp dữ liệu..
- Biên dịch và cài đặt hàm UDF.
- Các bước tiếp theo sau khi đã hoàn thành thao tác lập trình các hàm trên chúng ta phải thực hiện các bước sau để có thể sử dụng các hàm đó trong MySQL.
- Biên dịch các hàm UDF.
- Tải các hàm UDF vào máy chủ MySQL.
- Sử dụng các hàm UDF trong câu truy vấn..
- Biên dịch hàm UDF trên máy chủ Linux.
- Bước 1: Tạo ra một File liên kết động bằng cách sử dụng lệnh sau.
- Nếu sử dụng câu lênh gcc với lệnh configure và libtool chúng ta có thể sử dụng câu lệnh tạo file *.so đơn giản hơn như sau.
- Sau khi biên dịch thành một đối tượng chia sẻ chứa các hàm UDF chúng ta cần phải cài đặt chúng và thông báo cho MySQL biết.
- Khi sử dụng câu lệnh gcc để biên dịch file udf_example.c thành file udf_example.so.
- Việc biên dịch nếu sử dụng câu lệnh make sẽ tạo ra file udf_example.so.0.0.0 trong thư mục libs.
- Biên dịch hàm UDF trên máy chủ Windows.
- Trên hệ thống window để biên dịch các hàm UDF cần thực hiện như sau.
- devenv udf_example.sln /build Release Cài đặt hàm UDF trên máy chủ MySQL.
- RETURNS <kiểu dữ liệu>.
- Xây dựng hàm UDF chuyển đổi dữ liệu truy vấn sang dạng JSON 1) Hàm udf_json_to_array().
- Kiểu dữ liệu của tham số có thể là.
- 2) Hàm udf_json_to_member.
- Mục đích của hàm : Hàm này có thể được sử dụng để chuyển một danh sách tùy ý của cặp tên-giá trị vào trong một danh sách các đối tượng JSON.Hàm này được thiết kế với mục đích để có thể dễ dàng lặp các đối tượng của JSON..
- Là một danh sách các cặp tên-giá trị, tên sẽ được sử dụng làm tên đối tượng thành viên của chuỗi JSON, giá trị được sử dụng là giá trị của thành viên đó..
- 3) 3 Hàm udf_json_to_object.
- Tìm hiểu những kiến thức tổng quan về định dạng trao đổi dữ liệu JSON như khái niệm JSON, cấu trúc của JSON, những ưu nhược điểm của JSON so với XML, ứng dụng của JSON..
- Tìm hiểu và tổng hợp những kiến thức về hệ quản trị cơ sở dữ liệu mã nguồn mở MySQL như kiến trúc của MySQL..
- Tìm hiểu và tổng hợp những kiến thức về việc xây dựng hàm do người dùng định nghĩa UDF trong MySQL như cấu trúc của hàm UDF, cách thêm hàm UDF vào trong MySQL từ đó ứng dụng vào xây dựng các hàm UDF chuyển đổi dữ liệu truy vấn sang dạng JSON..
- Cài đặt một số hàm chuyển đổi dữ liệu truy vấn sang dạng JSON như json_to_array, son_to_object, json_to_string.
- Tìm hiểu và cài đặt các hàm UDF để chuyển các truy vấn phức tạp như nhóm, sắp xếp dữ liệu sang dạng JSON.