CƠ CHẾ ĐỒNG BỘ HOÁ LIÊN LƯỢC ĐỒ CHO CÁC ỨNG DỤNG CƠ SỞ DỮ LIỆU PHÂN TÁN A FLEXIBLE CROSS-SCHEMA SYNCHRONIZATION MECHANISM FOR DISTRIBUTED DATABASE SYSTEMS HOÀNG XUÂN TÙNG 1 Khoa Công nghệ Thông tin, Trường Đại học Cơng nghệ, ĐHQG HN Email: tunghx@vnu.edu.vn Tóm tắt: Đồng hố sở liệu tính quan trọng hệ thống tính tốn phân tán Đồng hoá liên lược đồ (cross-schema) cho phép việc đồng hố thực môi trường sở liệu không đồng nơi mà sở liệu có cấu trúc khác thực đồng liệu với Trong báo này, giới thiệu XSync, middleware thiết kế nhằm phục vụ thực việc đồng hoá liên lược đồ cách hiệu cho hệ thống sử dụng sở liệu Với XSync, nhà phát triển phần mềm dễ dàng tích hợp khả đồng liệu vào hệ thống IT cách linh hoạt với chi phí phát triển thấp đem lại nhiều lợi ích lớn mặt tính hiệu Từ khóa: cross-schema, database, synchronization, ETL Abstract: Database Data synchronization between distributed databases is an essential feature of computation systems Cross-schema database synchronization allows data to be transfered among heterogeneous database environments, in which databases are different from each other not only in database platform but also database schema and its internal data In this paper, we introduce XSync, a middleware that is specially designed to solve the problem of cross-schema synchronization in an efficient way Using XSync, system developers can easily integerate advance synchronization capabilities into their systems XSync brings flexibility and greatly extends the systems with low development cost Keywords: cross-schema, database, synchronization, ETL ĐẶT VẤN ĐỀ Cơ sở liệu quan hệ (CSDL hay database) phần thiếu hệ thống ứng dụng dịch vụ Tuỳ thuộc vào yêu cầu hiệu khả mở rộng ứng dụng, hệ thống kiến trúc thiết kế với nhiều CSDL đồng hoá với nhiều hình thức Các kịch ứng dụng điển hình đồng hố CSDL kể đến đồng hoá local database cloud database, hay việc nạp liệu vào data warehouse [5] Hình thức đồng hố đơn giản kể đến nhân (replication) Khi đó, CSDL có cấu trúc liệu giống hệt Tuy nhiên HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THƠNG MINH 99 việc đồng hoá trở nên mạnh mẽ linh hoạt cho phép CSDL tham gia đồng hoá phép khác cấu trúc (schema) liệu bên Nói cách khác, chế đồng hoá mong chờ "cross-schema" thay chế nhân (replication) Nếu chế đồng hoá nhân thực theo hướng "database approach" đồng hố tích hợp thành chức hệ quản trị sở liệu 0, đồng hố cross-schema thách thức thường thực theo hướng "application approach" [4][6] Đồng hoá cross-schema phụ thuộc chặt chẽ vào CSDL ứng dụng nên việc xây dựng đồng hoá tuỳ thuộc vào ứng dụng Việc thực triển khai đồng hoá cross-schema cho hệ thống phân tán linh hoạt có chi phí cao gần phải thực lại việc phát triển từ đầu cho trường hợp khác Trong báo này, đề xuất giải pháp hỗ trợ đồng hoá CSDL, tên XSync, cho ứng dụng nhằm giúp việc triển khai cross-schema synchronization trở nên linh hoạt hiệu XSync giải toán đồng CSDL theo hướng "semi-application approach" người dùng thay phải phát triển lại chức đồng cho ứng dụng cần soạn file cấu hình định nghĩa xác thuộc tính chuyển đổi CSDL nguồn CSDL đích Dựa vào thơng tin cấu hình đó, hệ thống XSync tự động trích xuất liệu từ CSDL nguồn, thực việc chuyển đổi liệu nạp vào CSDL đích xa qua nhiều chế kết nối mạng linh hoạt khác request/reply hay push/pull CÁC NGHIÊN CỨU LIÊN QUAN Nhân sở liệu hay phân cụm sở liệu [8] phương án đồng datatabase nhằm tăng cường khả mở rộng hệ thống Các phương án đồng thuộc nhóm giải pháp dựa chức hệ quản trị sở liệu (database-based approach) Các chế là hữu dụng cho kịch ứng dụng backup liệu, tăng tốc độ truy xuất database thường triển khai môi trường mạng nội data center Tuy nhiên mơ hình triển khai thực môi trường mạng diện rộng hay đồng sở liệu địa phương sở liệu đám mây do: (1) thiếu tính linh hoạt đồng liệu, (2) lượng liệu đồng lớn (3) việc mát liệu trình đồng khiến q trình đồng khơng cịn làm việc Bên cạnh giải pháp dựa hệ quản trị sở liệu, giải pháp dựa ứng dụng (application-based approach) linh hoạt triển khai mơi trường mạng diện rộng mạng Internet cho ứng dụng local-cloud synchronization McCormick, Zach, Douglas C Schmidt [4] đưa vài kiến trúc cho việc động liệu Các mẫu kiến trúc trình bày mơ tả cấu trúc tổ chức hệ thống đồng tầng ứng dụng, chức nhiệm vụ hệ thống con, luật hướng dẫn cho việc tổ chức phối hợp hệ thống Hai kiến trúc tiêu biểu đưa Asynchronous Data Synchronization and Synchroneous 100 HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THÔNG MINH Data Synchronizaton, cho ứng dụng mobile Mặc dù giải pháp [4] linh hoạt thực tiễn, nhiên đề xuất không cung cấp khả chuyển đổi schema liệu database Với phát triển ngày nhanh mạng internet, việc có chế đồng liệu không đồng cho môi trường doanh nghiệp quan trọng Khá nhiều nghiên cứu (ví dụ [8][9]) đưa nhằm cung cấp giải pháp dựa middleware tương tự XSync để cung cấp khả đồng liệu cho ứng dụng nhiều hồn cảnh tình khác Tuy nhiên, tương tự [4] giải pháp không trọng đến vấn đề chuyển đổi cấu trúc liệu liệu bên sở liệu Gần với nghiên cứu báo này, theo chúng tơi biết, có lẽ mơ hình đồng ETL [7] ETL viết tắt Extract-Transform-Load, giai đoạn mơ hình thực liên tiếp cho chu trình đồng liệu: + Giai đoạn Extraction: Hệ thống ETL truy xuất vào hệ thống nguồn trích xuất liệu Mục đích giai đoạn đưa liệu dạng phù hợp cho giai đoạn sau giai đoạn Transform + Giai đoạn Transform: Trong giai đoạn này, loạt bước chuyển đổi liệu áp dụng vào liệu có từ giai đoạn extract Một vài dạng chuyển đổi liệu điển hình giai đoạn gồm: "lấy trường liệu cụ thể", "translate giá trị", "tính giá trị từ giá trị đầu vào", hay "phân tách liệu đầu vào thành mảnh liệu con" + Giai đoạn Load: Ghi liệu sau giai đoạn Transform vào hệ thống đích Như vậy, ETL hỗ trợ đồng cross-schema Tuy nhiên, ETL khơng hồn thiện cho chức đồng hố liệu khơng hỗ trợ tải nạp liệu (incremental update), không quy định rõ ràng chế truyền thơng nguồn, đích, khơng tối ưu cho tính chất bảo mật thời gian thực hệ thống PHƯƠNG PHÁP ĐỀ XUẤT Một cách ngắn gọn XSync tiếp nhận cách tiếp cận ETL cho chuyển đổi liệu cách tiếp cận [4][8][9] cho việc kiến trúc đồng hố Ngồi XSync trọng giải yêu cầu cốt lõi sau: (1) Change Data Capture: nhận biết thu gom thay đổi database nguồn để hỗ trợ incremental synchronization; (2) ETL-based Data Transformation: chế chuyển đổi tối ưu dựa ETL; (3) Bidirectional Synchronization: chế đồng chiều, cho phép sở liệu đồng lẫn a) Change Data Capture (CDC) Có thể có hai phương án đồng hố: đồng hố tồn (complete synchronization) đồng hoá (incremental synchronization) Với đồng hố tồn bộ, tồn nội dung database nguồn chép sang database đích Để cập nhật liệu HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THƠNG MINH 101 sửa đổi database nguồn sang database đích, tồn q trình đồng phải thực lại từ đầu Với đồng hoá dần dần, phần liệu khác biệt sở liệu nguồn chuyển sang sở liệu đích Để thực đồng dần dần, chế sử dụng bao gồm: sử dụng trigger gắn vào trước kiện sửa đổi CSDL nguồn, đánh nhãn thời gian (timestamping) ghi CSDL nguồn Với XSync, chế Change Data Capture sử dụng chế timestamping đánh nhãn thời gian cho ghi Mỗi ghi sở liệu bổ sung hai trường nhãn thời gian "updatedAt" "deletedAt" Hai trường nhãn liệu cập nhật thời gian ghi tương ứng tạo hay sửa đổi Với xu hướng phát triển phần mềm nay, hầu hết ứng dụng sở liệu sử dụng thư viện ORM (Object Relation Mapping) việc đánh timestamp vào sở liệu tích hợp sẵn ORM bổ sung cách tương đối đơn giản Dựa nhãn thời gian, việc lọc bỏ liệu đồng bộ, giữ lại liệu sửa đổi tương đối đơn giản Tiến trình XSync gắn với sở liệu nguồn chạy ngầm thực đồng định kỳ sau khoảng thời gian T cố định Sau phiên đồng thành công XSync lưu lại nhãn thời gian phiên đồng Những ghi sở liệu đích có nhãn thời gian lớn nhãn thời gian lưu lại XSync đưa vào phiên đồng b) ETL-based Data Transform (EDT) Cơ chế CDC mô tả mục a cung cấp liệu nguồn cho khâu chuyển đổi liệu ETLbased Data Transform Ở khối chức này, transformation function định nghĩa file cấu hình synchronization schema Synchronization schema tập hợp cấu trúc sử dụng ký pháp JSON để mô tả: (1) bảng liệu cần đồng sở liệu nguồn; (2) ánh xạ (mapping) từ bảng nguồn sang bảng đích, ánh xạ từ cột bảng nguồn sang cột tương ứng bảng đích; (3) hàm chuyển đổi liệu liệu bên ghi Các hàm chuyển đổi liệu mà XSync hỗ trợ hàm khả nghịch Lý mà có hàm khả nghịch hỗ trợ XSync cần hỗ trợ đồng hai chiều Để hiểu rõ hoạt động XSync, ta hay xem xét ví dụ bảng "student" CSDL nguồn đồng sang bảng "hoc_sinh" CSDL đích Ngoài ra, cột "idStudent", "name", "address", "class" bảng "student" ánh xạ tương ứng thành cột "idHS", "ten", "dia_chi", "lop" bảng "hoc_sinh" Đồng thời, giá trị cột "name" bảng "student" chuyển đổi thành chữ hoa cột "tên" bảng "hoc_sinh" Với trường hợp ví dụ trên, synchronization schema tương ứng cho Hình Như thấy ví dụ, ký pháp synchronization schema trực tiếp dễ sử dụng 102 HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THƠNG MINH { "from_table": "student", "to_table": "hoc_sinh", "mappings": { "idStudent": "idHS", "name": "ten", "address": "dia_chi", "class": "lop" }, "transformation": { "forward": { "name": "UPPERCASE(%ten%)" }, "backward": { "ten": "LOWERCASE(%name%)" } } } Hình Ví dụ Synchronization schema có chuyển đổi tên bảng, tên trường, liệu trường Thêm vào đó, để đảm bảo tin cậy chống chịu lỗi trình đồng bộ, việc đồng XSynch thực theo hình thức giao dịch (database transaction) phía CSDL đích Việc thực đồng giao dịch CSDL cho phép phiên đồng rollback trạng thái cũ trường hợp có lỗi xảy c) Bidirectional synchronization Với chế CDC EDT mô tả trên, đồng liệu chiều (unidirectional synchronization) khả thi với trợ giúp framework truyền thông (communication frameworks) ví dụ Webservice, Remote Procedure Call (RPC), hay messaging Để thực XSync, lựa chọn sử dụng ZeroMQ [10] tin cậy, tính gọn nhẹ, khả hỗ trợ nhiều phương thức giao tiếp bao gồm Request/Reply (giống RPC Webservice), Push/Pull (giống messaging) Hạn chế có lẽ ZeroMQ cung cấp API hỗ trợ mức thấp, điều khiến cơng sức độ phức tạp tăng lên sử dụng Tuy nhiên XSync cần phát triển lần dùng dùng lại cho ứng dụng khác nên tính hiệu XSync cho toán đồng liệu bảo toàn Dựa đồng chiều, đồng hai chiều bidirectional synchronization thực cách kết hợp hai kênh đồng chiều với minh hoạ Hình Hình Bidirectional synchronization việc kết hợp hai kênh đồng unidirectional HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THƠNG MINH 103 THÍ NGHIỆM VÀ ĐÁNH GIÁ HIỆU NĂNG Để đánh giá tính xác đồng XSync mang lại hiệu xử lý XSync, vài thí nghiệm chạy thử thiết lập mơi trường phịng thí nghiệm Trong thí nghiệm chúng tơi, sở liệu nguồn đích CSDL MySQL Bản phát triển (development version) XSync triển khai ngôn ngữ Javascript chạy NodeJS version Các sở liệu mẫu sử dụng để thực đồng hoá thử nghiệm gồm bảng: bảng "city" chứa 4000 ghi; bảng "language" chứa 239 ghi; bảng "countrylanguage" chưa 984 ghi Hệ thống thí nghiệm cài đặt máy tính 8GB RAM, xử lý Intel Core i7 2.6GHz với nhân, chạy hệ điều hành Ubuntu 64bit 16.04 Bản MySQL sử dụng thí nghiệm chúng tơi có phiên 5.7 Đầu tiên thí nghiệm đánh giá hoạt động XSync chế độ đồng chiều thực Trong thí nghiệm này, sở liệu nạp liệu thử nghiệm mô tả đồng toàn sang sở liệu đích vốn ban đầu rỗng Tiếp ghi thêm vào ghi có sửa đổi vào CSDL nguồn theo batch 100 ghi Hệ thống XSync tự động đồng liệu sang sở đích thơng lượng đồng đo đạc lại Kết thí nghiệm tóm tắt lại Bảng Bảng Kết chạy thử đồng chiều điều kiện đồng chuyển đổi khác Đặc điểm đồng (Sync characteristics) Fresh synchronization Đặc điểm chuyển đổi (Transformation characteristics) Synchronization Accuracy Throughput (record/s) No transformation Chính xác 1899 Schema only Chính xác 1847 Schema & data Chính xác 1612 Chính xác 243 Chính xác 192 Schema & data Chính xác 183 No transformations Chính xác 287 Schema only Chính xác 230 Schema & data Chính xác 207 Incremental sync for new No transformations records Schema only Incremental sync for updating records Sau hai sở liệu nguồn đích có liệu đồng Các thay đổi thực đồng thời hai sở liệu để đánh giá hoạt động XSync đồng liệu hai chiều Giống thí nghiệm đánh giá đồng chiều, sửa đổi thêm thực theo batch 100 ghi lần Kết thu đánh giá hoạt động XSync thực đồng chiều tóm tắt Bảng 104 HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THƠNG MINH Bảng Kết chạy thử đồng chiều điều kiện đồng chuyển đổi khác Đặc điểm đồng (Sync characteristics) Incremental sync for new records Incremental sync for updating records Đặc điểm chuyển đổi (Transformation characteristics) Synchronization Accuracy Throughput (record/s) No transformations Chính xác 105 Schema only Chính xác 109 Schema & data Chính xác 88 No transformations Chính xác 110 Schema only Chính xác 101 Schema & data Chính xác 89 Quan sát kết thí nghiệm bảng cho thấy XSync tương đối hứa hẹn để áp dụng ứng dụng thực tế Lưu ý XSync giai đoạn phát triển cịn có nhiều đoạn mã chưa tối ưu XSync chạy nhanh thực đồng liệu (Fresh sync.) Khi khơng có overhead để nhận biết tổng hợp cập nhật Với trường hợp đồng (incremental sync.), thông lượng cập nhật giảm đáng kể (khoảng đến lần) so với đồng Nếu so sánh thông lượng đồng trường hợp khác đặc điểm chuyển đổi liệu, ta thấy khác biệt tương đối nhỏ so với khác đồng đồng Như chi phí lớn cho q trình đồng XSync nằm khâu CDC (Change Data Capture) Điều theo hiểu biết hợp lý lý giải CDC liên quan chặt chẽ đến hoạt động truy vấn database để lọc ghi cần đồng Đó câu truy vấn SELECT với mệnh đề WHERE Trong đó, chi phí để thực chuyển đổi liệu thao tác transform ghi liệu thu tốn tài ngun tính tốn nhiều so với truy vấn từ CSDL KẾT LUẬN Trong báo cáo chúng tơi trình bày giải pháp đồng XSync giúp ứng dụng hay dịch vụ sử dụng sở liệu dễ dàng đồng với cấu trúc sở liệu đích sở liệu nguồn khác XSync thực đồng liệu dần dần, phần, cho phép đồng liệu hai chiều Qua kết thí nghiệm chạy thử, thấy XSync dù chưa thực tối ưu để có hiệu cao hoàn toàn đáp ứng yêu cầu cơng cụ mạnh, linh hoạt nhiều tình cần đồng sở liệu hệ thống XSync tập trung vào đồng bảng liệu mà chưa thực việc đồng cho liệu hỗ trợ index, trigger, hay store procedure Việc hỗ trợ đồng dạng liệu đem đến nhiều lợi ích nhiều tình ứng dụng thực tế mục tiêu nghiên cứu chúng tơi HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THÔNG MINH 105 Tài liệu tham khảo [3] Moiz, Salman Abdul and Sailaja, P and Venkataswamy, G and Pal, Supriya N, Database replication: A survey of open source and commercial tools, Database, Vol 13, 2011 [4] McCormick, Zach and Schmidt, Douglas C, Data synchronization patterns in mobile application design, Proceedings of the 19th Conference on Pattern Languages of Programs, 2012 [5] Chaudhuri, Surajit and Dayal, Umeshwar, An overview of data warehousing and OLAP technology, ACM Sigmod record, Vol 26, 1997 [6] Malhotra, Naveen and Chaudhary, Anjali, Implementation of Database Synchronization Technique between Client and Server, International Journal Of Engineering And Computer Science, Vol 3, 2014 [7] Vassiliadis, Panos, A survey of extract transform load technology, International Journal of Data Warehousing and Mining (IJDWM), Vol 5, 2009 [8] Cecchet, Emmanuel and Candea, George and Ailamaki, Anastasia, Middleware-based database replication: the gaps between theory and practice, Proceedings of the 2008 ACM SIGMOD international conference on Management of data, Vol , 2008 [9] Cecchet, Emmanuel, C-JDBC: a Middleware Framework for Database Clustering., IEEE Data Eng Bull., Vol 27, 2004 [10] Hintjens, Pieter, ZeroMQ: messaging for many applications, O'Reilly Media, Inc., Vol , 2013 106 HỘI THẢO KHOA HỌC MÁY TÍNH VÀ CÁC HỆ THỐNG THÔNG MINH ...việc đồng hoá trở nên mạnh mẽ linh hoạt cho phép CSDL tham gia đồng hoá phép khác cấu trúc (schema) liệu bên Nói cách khác, chế đồng hoá mong chờ "cross-schema" thay chế nhân (replication) Nếu chế. .. phương sở liệu đám mây do: (1) thiếu tính linh hoạt đồng liệu, (2) lượng liệu đồng lớn (3) việc mát liệu trình đồng khiến q trình đồng khơng làm việc Bên cạnh giải pháp dựa hệ quản trị sở liệu, ... database đích, tồn trình đồng phải thực lại từ đầu Với đồng hoá dần dần, phần liệu khác biệt sở liệu nguồn chuyển sang sở liệu đích Để thực đồng dần dần, chế sử dụng bao gồm: sử dụng trigger gắn vào