Nghiên cứu kỹ thuật tiền xử lý dữ liệu trong tối ưu truy vấn cơ sở dữ liệu có kích thước lớn
Tóm tắt: Tối ưu hóa cơ sở dữ liệu là một vấn đề rất quan trọng trong việc xây
dựng các ứng dụng cơ sở dữ liệu. Có nhiều công nghệ và kỹ thuật được áp dụng cho
việc tối ưu cơ sở dữ liệu như đặt chỉ mục, phân mảnh dữ liệu vv; tuy nhiên với ứng
dụng có dữ liệu quá lớn hoặc có tần suất truy cập đồng thời rất cao và những truy vấn
dữ liệu khá phức tạp thì những kỹ thuật này chỉ có thể đạt đến một giới hạn nhất định
nào đó. Trong bài viết này chúng tôi đề xuất kỹ thuật tiền xử lý dữ liệu nhằm tạo ra
các dữ liệu có những định dạng phù hợp mà có thể kết hợp với những kỹ thuật truyền
thống nhằm tối ưu các truy vấn cơ sở dữ liệu có kích thước lớn. Bài viết đồng thời
cũng phân lớp và đề xuất mô hình triển khai cho việc tiền xử lý dữ liệu một cách hiệu
quả. Kết quả thử nghiệm cho bài toán reverse geocode trên dữ liệu không gian trên
tập dữ liệu mẫu mà chúng tôi đề xuất có thể cải thiện tốc độ hơn 54 lần và việc triển
khai nó trong thực tế cho phép chúng tôi có thể tạo ra được những báo cáo về dữ liệu
của hàng trăm triệu đến hàng chục tỷ bản ghi trong thời gian chấp nhận được. Điều
này cho thấy cách tiếp cận này là rất khả quan.
Tóm tắt nội dung tài liệu: Nghiên cứu kỹ thuật tiền xử lý dữ liệu trong tối ưu truy vấn cơ sở dữ liệu có kích thước lớn
Công nghệ thông tin C. Đ. Huy, N. N. An, “Nghiên cứu kỹ thuật tiền xử lý dữ liệu có kích thước lớn.” 208 NGHIÊN CỨU KỸ THUẬT TIỀN XỬ LÝ DỮ LIỆU TRONG TỐI ƯU TRUY VẤN CƠ SỞ DỮ LIỆU CÓ KÍCH THƯỚC LỚN Cao Đăng Huy*, Nguyễn Nhật An Tóm tắt: Tối ưu hóa cơ sở dữ liệu là một vấn đề rất quan trọng trong việc xây dựng các ứng dụng cơ sở dữ liệu. Có nhiều công nghệ và kỹ thuật được áp dụng cho việc tối ưu cơ sở dữ liệu như đặt chỉ mục, phân mảnh dữ liệuvv; tuy nhiên với ứng dụng có dữ liệu quá lớn hoặc có tần suất truy cập đồng thời rất cao và những truy vấn dữ liệu khá phức tạp thì những kỹ thuật này chỉ có thể đạt đến một giới hạn nhất định nào đó. Trong bài viết này chúng tôi đề xuất kỹ thuật tiền xử lý dữ liệu nhằm tạo ra các dữ liệu có những định dạng phù hợp mà có thể kết hợp với những kỹ thuật truyền thống nhằm tối ưu các truy vấn cơ sở dữ liệu có kích thước lớn. Bài viết đồng thời cũng phân lớp và đề xuất mô hình triển khai cho việc tiền xử lý dữ liệu một cách hiệu quả. Kết quả thử nghiệm cho bài toán reverse geocode trên dữ liệu không gian trên tập dữ liệu mẫu mà chúng tôi đề xuất có thể cải thiện tốc độ hơn 54 lần và việc triển khai nó trong thực tế cho phép chúng tôi có thể tạo ra được những báo cáo về dữ liệu của hàng trăm triệu đến hàng chục tỷ bản ghi trong thời gian chấp nhận được. Điều này cho thấy cách tiếp cận này là rất khả quan. Từ khóa: Tối ưu cơ sở dữ liệu; Tiền xử lý; Phân mảnh dữ liệu. 1. ĐẶT VẤN ĐỀ Tối ưu hóa về cơ sở dữ liệu là một chủ đề rất được quan tâm và nghiên cứu. Khi xây dựng một hệ thống phần mềm với một cơ sở dữ liệu lớn, có nhiều truy vấn và cập nhật đồng thời thì vấn đề này là cực kỳ quan trọng vì nó ảnh hưởng rất lớn đến sự đáp ứng của hệ thống, trải nghiệm người dùng, thậm chí là sự ổn định, tồn vong của cả một hệ thống phần mềm. Có nhiều giải pháp để tối ưu hóa cơ sở dữ liệu như chuẩn hóa thiết kế, đặt chỉ mục index hợp lý, thiết lập cấu hình hệ thống, tối ưu các câu hỏi truy vấn và phân mảnh dữ liệu [4]. Tuy nhiên với dữ liệu có kích thước quá lớn hoặc có tần suất truy cập rất cao mà câu hỏi truy vấn dữ liệu lại phức tạp thì những giải pháp này chỉ đạt đến một giới hạn nhất định. Đòi hỏi phải có một giải pháp mới để xử lý vấn đề này và chúng tôi đề xuất là sử dụng kỹ thuật tiền xử lý dữ liệu. Tiền xử lý dữ liệu là quá trình biến đổi dữ liệu sang một định dạng mới phục vụ cho một quá trình phân tích, xử lý dữ liệu nào đó. Thuật ngữ này là khá phổ biến trong khai phá dữ liệu, trí tuệ nhân tạo, xử lý ngôn ngữ và học máyvv. Tuy nhiên trong bài viết này đề cập đến một phạm vi hẹp là sử dụng kỹ thuật tiền xử lý dữ liệu để tối ưu các truy vấn dữ liệu. Như chúng ta đã biết hiện nay đa số các cơ sở dữ liệu dựa trên mô hình dữ liệu quan hệ bởi tính tiện lợi, toàn vẹn và nhất quán của dữ liệu. trong đó tất cả các thông tin của nó được lưu trữ trong các bảng có các cột và hàng và có mối quan hệ với nhau. Các truy vấn đến dữ liệu được thông qua ngôn ngữ truy vấn có cấu trúc SQL để trích xuất một phần hoặc toàn bộ dữ liệu trong các bảng này. Ngôn ngữ truy vấn có cấu trúc SQL chủ yếu dựa trên các phép toán của đại số quan hệ. Gồm Thông tin khoa học công nghệ Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 209 các phép toán 1 ngôi như chọn, phép chiếu, phép gán, phép đổi tên và các phép toán 2 ngôi như tích decac, giao (Intersection), hợp (union), hiệu (minus), nối (join), chia (Division). Ngoài ra các hệ quản trị cơ sở dữ liệu hiện đại còn tích hợp thêm một số phép toán như các hàm tập hợp (Aggregate function), Gom nhóm các bộ dữ liệu (Grouping) và Phép kết mở rộng (Outer Join). Các thực thể trong cơ sở dữ liệu quan hệ được phân biệt với nhau thông qua giá trị của nó do vậy cơ sở dữ liệu quan hệ là cơ sở dữ liệu hướng giá trị (value oriented). Các bộ hay bản ghi của dữ liệu được phân biệt với nhau bởi các giá trị của nó do vậy việc lựa chọn trích xuất dữ liệu trong cơ sở dữ liệu hoàn toàn dựa vào giá trị của dữ liệu Việc truy vấn dựa trên giá trị của dữ liệu sẽ có những hạn chế nhất định về mặt tốc độ nhất là khi dữ liệu có kích thước lớn do phải thực hiện việc quét (scan) dữ liệu trong các bảng. Hiệu năng của một truy vấn được dựa trên chi phí (cost) mà truy vấn đó chiếm dụng tài nguyên hệ thống: cA(all)=cD(lưu trữ)+cM(Memory)+cN(Networking)+cL(lock)+cC(CPU) [7] Trong đó: cD: là chi phí đọc ghi đĩa lưu trữ (bộ nhớ ngoài) liên quan đến truy vấn cM: chi phí thao tác đến bộ nhớ trong liên quan đến truy vấn cN: chi phí về truyền thông mạng là số băng thông mạng mà truy vấn chiếm dụng cL: là chi phí liên quan đến tranh chấp khóa của truy vấn. Các cơ sở dữ liệu hiện đại đưa các khóa (lock) vào để quản lý việc truy cập đồng thời và các chỉ mục (index) để tối ưu truy vấn và việc thay đổi cũng như đọc dữ liệu vì vậy sẽ tiêu tốn tài nguyên của hệ thống liên quan đến khóa cC: phí phí liên quan đến tài nguyên chiếm dụng CPU của truy vấn. Hiệu năng của một hệ thống cơ sở dữ liệu là tổng chi phí của tất cả các yêu cầu truy vấn phát sinh trong một đơn vị thời gian : Trong đó N là số truy vấn trong một đơn vị thời gian, cj là chi phí của truy vấn j Như vậy mấu chốt của vấn đề là muốn nâng cao hiệu năng của hệ thống thì phải giảm chi phí tài nguyên của các truy vấn đến cơ sở dữ liệu. Ngoài việc chuẩn hóa thiết kế để tránh dư thừa dữ liệu và đảm bảo tính toàn vẹn, chuẩn hóa và tối ưu các câu lệnh sql để cải thiện hiệu năng truy vấn, các hệ quản trị cơ sở dữ liệu đưa việc đặt chỉ mục (index) để đảm bảo rằng thay vì việc tìm dữ liệu trong một danh sách không được sắp xếp thì chuyển việc tìm kiếm trong một danh sách đã được sắp xếp. Ngoài ra các hệ quản trị cơ sở dữ liệu hiện đại đưa Công nghệ thông tin C. Đ. Huy, N. N. An, “Nghiên cứu kỹ thuật tiền xử lý dữ liệu có kích thước lớn.” 210 ra các công nghệ về phân mảnh dữ liệu đó là quá trình phân chia dữ liệu thành nhiều đoạn và việc phân chia này cũng dựa trên các chỉ mục index [4]. Trên thực tế có nhiều dạng dữ liệu mà việc đặt chỉ mục là không hề dễ dàng ví dụ như những dữ liệu không có cấu trúc hoặc có cấu trúc phức tạp như dữ liệu không gian. Các chỉ mục chỉ hiệu quả khi chúng được tìm kiếm và so sánh dựa trên các toán tử (operator) và sẽ mất hoàn toàn hiệu quả khi sử dụng các hàm (function) dù nó là hàm của hệ quản trị cơ sở dữ liệu (system function), hàm do người dùng tự định nghĩa (user define function) hay hàm của các tool bổ sung thêm (add in function). Trong trường hợp này việc đặt chỉ mục và phân mảnh dựa trên các dữ liệu hiện có nhằm tối ưu tối ưu truy vấn là rất khó để thực hiện đòi hỏi chúng ta phải tạo ra các dữ liệu mới thì mới có thể đặt chỉ mục được [5],[6] Với cơ sở dữ liệu có kích thước lớn (hàng trăm triệu đến hàng trăm tỷ bản ghi và dung lượng có thể đạt đến nhiều TB dữ liệu) các truy vấn có thể lấy dữ liệu từ nhiều bảng thì việc truy vấn dữ liệu rất chậm và trong rất nhiều trường hợp là không khả thi, khả năng đáp ứng đồng thời nhiều truy vấn cùng lúc là rất khó và có thể gây nên hiện tượng dead lock (khóa chết) gián đoạn hệ thống và tệ hơn có thể gây nên việc hỏng và mất dữ liệu. Ngoài ra với những hệ thống có số lượng truy cập truy vấn dữ liệu đồng thời rất lớn như truy vấn thông tin địa chỉ trên bản đồ reverse geocode thì mặc dù khối lượng dữ liệu có thể không quá lớn nhưng tần suất quá lớn (hàng vạn thậm chí hàng chục triệu truy vấn đồng thời) cũng có thể gây nên quá tải hệ thống đòi hỏi chúng ta phải có giải pháp để nâng cao hiệu năng của các truy vấn đến cơ sở dữ liệu. Chúng tôi đề xuất giải pháp là dùng kỹ thuật tiền xử lý dữ liệu để nâng cao tính hiệu quả của các truy vấn cơ sở dữ liệu. Đó là những kỹ thuật tính toán, xử lý trước để tạo ra các định dạng dữ liệu mới nhằm cải thiện hiệu năng một cách rõ rệt cho việc truy vấn dữ liệu. Các kỹ thuật này đã được chúng tôi áp dụng và mang lại một hiệu quả rõ rệt cho những hệ thống có kích thước dữ liệu tương đối lớn hoặc có nhiều truy cập khai thác đồng thời. Chúng tôi phân loại tiền xử lý dữ liệu thành 2 dạng là tạo ra các dữ liệu trên cũng một bảng truy vấn và tạo ra một số bảng dữ liệu tóm tắt hoàn toàn mới dựa trên việc rút gọn và tóm tắt các dữ liệu hiện có và đề xuất mô hình xử lý đối với hai dạng dữ liệu đó. 2. MÔ HÌNH TIỀN XỬ LÝ DỮ LIỆU TRONG TỐI ƯU TRUY VẤN Tiền xử lý dữ liệu chính là bước tạo ra các dữ liệu trung gian với một định dạng và nội dung phù hợp mà dựa trên nó chúng ta có thể cải thiện một cách hiệu quả hiệu năng truy vấn đến cơ sở dữ liệu và thậm chí là hiệu năng trong quản lý bảo trì và lưu trữ dữ liệu. Dựa trên đặc tính và định dạng của dữ liệu và nội dung truy vấn chúng tôi đề xuất hai mô hình tiền xử lý dữ liệu. Thông tin khoa học công nghệ Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 211 2.1. Tiền xử lý tạo ra các các dữ liệu trên cùng một bảng truy vấn. Kỹ thuật này được áp dụng đối với những truy vấn liên quan đến bảng có kích thước dữ liệu khá lớn hoặc tần suất khai thác nhiều lần mà các truy vấn đến nó là rất khó khăn trong việc thiết kế và sử dụng chỉ mục index, các điều kiện tìm kiếm sau lệnh where hoặc join là rất phức tạp đòi hỏi chi phí tính toán lớn cũng như chi phí về quét dữ liệu khi scan bảng đòi hỏi phải đọc dữ liệu rất nhiều từ toàn bộ bảng. Để giải quyết vấn đề này chúng ta sẽ tạo thêm một hoặc một số cột dữ liệu ở trên bảng mà giá trị của nó được tính toán dựa trên các cột hiện có và có định dạng phù hợp cho việc tạo chỉ mục cũng như hỗ trợ tốt việc phân mảnh dữ liệu nếu có (trong trường hợp số lượng bản ghi của bảng quá lớn). Thực chất của quá trình này là chúng ta đã phi chuẩn hóa về dữ liệu (de-normal) tạo ra các phụ thuộc hàm dựa trên các thuộc tính hiện có của bảng. Với những cột mới này chúng ta sẽ tạo chỉ mục tìm kiếm phù hợp và chỉnh sửa lại nội dung cú pháp các câu lệnh truy vấn để hướng đến việc sử dụng chỉ mục và phân đoạn bảng (với các bảng có dữ liệu lớn) Để thực hiện việc tiền xử lý trên cùng một bảng chúng ta sẽ thực hiện các bước như sau: Hình 1. sơ đồ các bước tiền xử lý dữ liệu trên cùng một bảng. Bước 1: Phân tích kích bản thực thi của truy vấn SQL hiện có, phân tích các tham số đầu vào Input của truy vấn và thứ tự các thao tác vật lý và logic mà bộ thực thi truy vấn của hệ quản trị cơ sở dữ liệu thực hiện để xử lý và trả kết quả truy vấn. Đặc biệt chú ý đến việc quét bảng và chỉ mục để tìm các tiến trình và thao tác có chi phí lớn nhất và có khả năng cải thiện được nhiều nhất. Chúng ta có thể sử dụng các công cụ hiện có của hệ quản trị cơ sở dữ liệu để thực hiện điều này. Ví dụ trong sql server chúng ta có thể sử dụng công cụ Estimated Execution Plan. Bước 2: Thêm các cột nhằm phục vụ cho việc tính toán tiền xử lý vào bảng liên quan đến truy vấn. Cột thêm vào nhằm tạo chỉ mục tìm kiếm và tối ưu hóa phép chọn. Tạo chỉ mục index từ các cột vừa tạo. Nếu dữ liệu của bảng quá lớn (>1GB) thì có thể phân mảnh bảng dữ liệu dựa trên chỉ mục vừa tạo để cải thiện hiệu suất quét bảng và truy vấn. Công nghệ thông tin C. Đ. Huy, N. N. An, “Nghiên cứu kỹ thuật tiền xử lý dữ liệu có kích thước lớn.” 212 Bước 3: Cập nhật các số liệu tiền xử lý vào các cột đã tạo mới một cách chính xác trong các tiến trình nền. Bước 4: Bổ sung các điều kiện lọc hướng tới chỉ mục tìm kiếm vào câu lệnh truy vấn SQL. điều kiện lọc liên quan đến chỉ mục phải được ưu tiên đầu tiên trong các điều kiện lọc sau lệnh where và lệnh join. Với bảng phân đoạn thì điều kiện lọc liên quan đến chỉ mục của phân đoạn bảng phải được nằm ở vị trí ưu tiên cao nhất trong thứ tự các điều kiện lọc này. Tránh tuyệt đối sử dụng hàm trong các điều kiện lọc mới bổ sung thêm. 2.2. Tiền xử lý tóm tắt dữ liệu từ nhiều bảng Kỹ thuật này được áp dụng trên những truy vấn mà cần lấy dữ liệu từ nhiều bảng với khối lượng dữ liệu rất lớn có thể lên đến nhiều tỷ bản ghi vì vậy truy vấn cần phải có nhiều phép hợp union và phép nối join trên nhiều bảng, và do nó quét dữ liệu từ nhiều bảng rất lớn nên chiếm dụng I/O đĩa cứng, tài nguyên khóa và CPU nên nó sẽ không thể chạy được trong thời gian chấp nhận được cũng như có thể gây treo hệ thống, deadlock (khóa chết) thậm chí là hỏng hóc dữ liệu. Với những truy vấn kiểu này chúng tôi đề xuất là xây dựng những bảng dữ liệu trung gian lưu trữ các dữ liệu tổng hợp và tóm tắt để phục vụ cho việc tối ưu tốc độ của các truy vấn liên quan đến tổng hợp dữ liệu Các dữ liệu tóm tắt sẽ được thiết kế theo nguyên tắc sau:Dựa trên định dạng thông tin đầu ra của các truy vấn - Các dữ liệu tóm tắt có số lượng bản ghi ít hơn nhiều lần so với số lượng bản ghi của dữ liệu gốc và chứa đựng các nguyên tố của truy vấn đầu ra. - Dữ liệu tóm tắt được đánh chỉ mục index dựa trên các tham số đầu vào của truy vấn. - Bảng dữ liệu quá lớn (>2GB) có thể phân mảnh dựa trên thông tin trong chỉ mục index để tối ưu hóa tốc độ truy vấn và quản lý cũng như bảo trì hiệu quả dữ liệu. Để thực hiện việc tiền xử lý tóm tắt dữ liệu chúng ta sẽ thực hiện các bước như sau: Hình 2. sơ đồ các bước tiền xử lý tóm tắt dữ liệu từ nhiều bảng. Thông tin khoa học công nghệ Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 213 Bước 1: Phân tích về tần suất các truy vấn và nội dung dữ liệu tổng hợp của các truy vấn, nghiên cứu về các định dạng dữ liệu đầu ra và xác định nguyên tố của các truy vấn đầu ra ví dụ chúng ta cần truy vấn tổng hợp của các cá nhân, phòng ban của một công ty trong một ngày, tháng, năm thì bản ghi nguyên tố chính là tổng hợp trong ngày của một cá nhân. Như vậy các thông tin tổng hợp của cá nhân,phòng ban trong một khoảng thời gian ngày, tháng có thể được lấy từ các thông tin tổng hợp của các cá nhân trong một số ngày nào đó. Bước 2: thiết kế các bảng dữ liệu tóm tắt chứa các bản ghi là các thông tin tóm tắt về dữ liệu phục vụ cho mục đích truy vấn mỗi hàng là một nguyên tố (atomic) của các dữ liệu báo cáo đầu ra, Xây dựng các chỉ mục tìm kiếm liên quan đến các điều kiện lọc của dữ liệu, phân mảnh dữ liệu nếu cần. Kích thước bảng này bé hơn rất nhiều lần so với dữ liệu gốc Bước 3: xây dựng các tiến trình nền Background process để tiền xử lý dữ liệu nhằm ghi nhận dữ liệu vào các bảng tóm tắt mà chúng ta xây dựng ở bước 3. Bước 4: Sửa đổi các câu lệnh truy vấn để truy cập dữ liệu trực tiếp vào các bảng tóm tắt thay vì tổng hợp từ nhiều bảng. lưu ý về sử dụng chỉ mục trong các câu lệnh tóm tắt này để nâng cao hiệu năng truy vấn. 3. THỬ NGHIỆM VÀ ĐÁNH GIÁ Chúng ta sẽ thử nghiệm trên bài toán truy vấn thông tin địa lý mà cụ thể là địa chỉ trên nền bản đồ reverse geocoding trên dữ liệu không gian địa lý trong SQL Server 2014. Đây là một bài toán rất quan trọng và có ý nghĩa ứng dụng rất lớn và là một tính năng cơ bản của các công cụ bản đồ nổi tiếng Google map, Bing map hay việt bản đồvv. Bài toán này được ứng dụng nhiều trên các sản phẩm thương mại như Uber, Grabvv. Một số đặc điểm đáng chú ý trong bài toán này là chúng có số lượng truy vấn đồng thời rất lớn có thể đạt đến hàng triệu, hàng chục triệu từ những nguồn dữ liệu có cấu trúc phức tạp như dữ liệu không gian vốn là khá khó khăn trong việc đánh chỉ mục để tìm kiếm. 3.1. Bài toán gốc Cơ sở dữ liệu mẫu chúng tôi dùng để thử nghiệm là cơ sở dữ liệu không gian có 2 lớp địa lý là lớp Địa danh hành chính (Tỉnh, huyện, xã) và lớp đường giao thông của Việt Nam và được tổ chức vào 2 bảng như sau: Bảng 1. Cấu trúc bảng dữ liệu gốc tblVillage. Tên cột Loại dữ liệu Loại cột Mô tả VillageID smallint Khóa chính Mã địa danh VillageName Nvarchar(30) Tên xã phường DistrictName Nvarchar(30) Tên quận, huyện ProvinceName Nvarchar(30) Tên tỉnh, thành phố Công nghệ thông tin C. Đ. Huy, N. N. An, “Nghiên cứu kỹ thuật tiền xử lý dữ liệu có kích thước lớn.” 214 Geom Geometry Dữ liệu không gian Dữ liệu này bao gồm lớp hành chính của gần 12.000 xã phường ở Việt Nam bao gồm cả dữ liệu không gian chứa đựng trong trường Geom Bảng 2. Cấu trúc bảng dữ liệu gốc tblRoad. Tên cột Loại dữ liệu Loại cột RoadID int Khóa chính Mã đường RoadName Nvarchar(80) Tên đường RoadType tinyint Loại đường:cao tốc, quốc lô, tỉnh lộ Geom geometry Dữ liệu không gian Dữ liệu đường giao thông mà chung tôi thử nghiệm gồm khoảng hơn 200.000 đoạn đường giao thông ở Việt Nam. Nó bao gồm Gần như tất cả các đường giao thông có tên trên bản đồ google map đến quý 2 năm 2017 Truy vấn mà chúng tôi minh họa ở đây là truy vấn truy vấn địa chỉ dựa trên tọa độ đầu vào reverse geocoding, tham số đầu vào là tọa độ GPS tại một điểm trên bản đồ số và đầu ra là địa chỉ của điểm đó (tên đường, xã phường, quận huyện, tỉnh thành phố). Đây là một truy vấn có tần suất rất lớn trên các dịch vụ bản đồ của goole map, bing map và việt bản đồ. Để lấy kết quả chúng ta cần thực hiện 2 truy vấn trên 2 bảng khác nhau là tblVilage và tblRoad Để lấy thông tin địa chỉ xã phường, quận huyện, tỉnh thành phố chúng ta sẽ thực hiện query sau: declare @Point geometry,@str nvarchar(60), @str nvarchar(60)@Lng decimal(9,6)=105.7993966,@Lat decimal(8,6)=21.0435112 set @Point=geometry::Point(@Lng,@Lat,4326) select @str=VilageName+', '+DistrictName+', '+ProvinceName from tblVilage where Geom.STIntersects(@Point)=1 select @str=RoadName+’, ’+@str from tblRoad where Geom.STDistance(@Point)<0.0009 order by Geom.STDistance(@Point) desc print @str Kết quả trả ra là: Phố Hoàng Sâm, Phường Nghĩa Đô, Quận Cầu Giấy, Hà Nội. 3.2. Áp dụng kỹ thuật tiền xử lý cho bài toán Dữ liệu gốc trên bài toán này chúng ta sẽ rất khó khăn trong việc đánh chỉ mục và phân mảnh dữ liệu do nó là dữ liệu không gian với cấu trúc phức tạp. Khi phân tích kịch bản thực thi của truy vấn thì truy vấn trong bài toán gốc phải quét dữ liệu cuả toàn bộ bảng do đó nếu tần suất truy vấn lớn thì thời gian, tài nguyên hệ thống như I/O, CPU, Ram là khá lớn Thông tin khoa học công nghệ Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 215 Bảng 3. các phép xấp xỉ các đối tượng không gian. Bây giờ chúng ta sẽ cải tiến hiệu năng truy vấn bằng cách xấp xỉ các đối tượng không gian ở đây là các đối tượng đa giác tượng trưng cho các đối tượng hành chính tỉnh, huyện xã và đối tượng đường gấp khúc tượng trưng cho các đoạn đường giao thông [9]. Đối với bài toán này chúng ta chọn xấp xỉ các đối tượng không gian theo đường bao hình chữ nhật của đối tượng không gian. Như vậy mỗi đối tượng hành chính hay đường giao thông được xấp xỉ với một hình chữ nhật (x1,y1/x2,y2) là hình bao của đối tượng Bước 1, Chúng ta chia bản đồ ra làm nhiều mảnh theo lưới ô vuông theo chiều vĩ độ thành m hàng và theo chiều kinh độ thành n cột và xác định các đối tượng này thuộc vị tri ô (x,y) nào trong lưới ô vuông này. Có thể có một số đối tượng sẽ nằm trong một số ô và vì vậy ta dùng các phép toán giao (intersec) để phân chia các đối tượng không gian nằm ở nhiều ô thành nhiều đối tượng riêng biệt nhau mà mỗi đối tượng chỉ nằm trọn ở một ô duy nhất. Như vậy mỗi đối tượng bây giờ được định vị ở một ô có ví trị (x,y) trong lưới ô vuông. Trong thử nghiệm này chúng ta sẽ chia bản đồ việt nam thành 75 hàng và 25 cột Bước 2, chúng ta sẽ thêm vào bảng tblVilage 6 cột x1,y1,x2,y2 là xấp xỉ của đối tượng không gian và X và Y để xác định phường thuộc ô nào của lưới ô Công nghệ thông tin C. Đ. Huy, N. N. An, “Nghiên cứu kỹ thuật tiền xử lý dữ liệu có kích thước lớn.” 216 vuông, cột HaveStreet để chỉ thị đối tượng hành chính có đường giao thông hay không. Bảng 4. cấu trúc bảng dữ liệu tblVillage mới. Tên cột Loại dữ liệu Loại cột Mô tả VillageID smallint Khóa chính Mã địa danh VillageName Nvarchar(30) Tên xã phường DistrictName Nvarchar(30) Tên quận, huyện ProvinceName Nvarchar(30) Tên tỉnh, thành phố Geom Geometry Dữ liệu không gian X1 Decimal(9,6) Chỉ mục tìm kiếm Y1 Decimal(8,6) Chỉ mục tìm kiếm X2 Decimal(9,6) Chỉ mục tìm kiếm Y2 Decimal(8,6) Chỉ mục tìm kiếm X tinyint Chỉ mục phân đoạn Xác định phường thuộc dòng nào Y tinyint Chỉ mục Xác định phường thuộc cột nào HaveStreet bit Điều kiện lọc Xã phường có đường giao thông hay không Đối với bảng tblRoad cũng thêm tương tự Bảng 5. cấu trúc bảng dữ liệu tblRoad mới. Tên cột Loại dữ liệu Loại cột RoadID int Khóa chính Mã đường RoadName Nvarchar(80) Tên đường RoadType tinyint Loại đường:cao tốc, quốc lô, tỉnh lộ X1 Decimal(9,6) Chỉ mục tìm kiếm Y1 Decimal(8,6) Chỉ mục tìm kiếm X2 Decimal(9,6) Chỉ mục tìm kiếm Y2 Decimal(8,6) Chỉ mục tìm kiếm X tinyint Chỉ mục phân đoạn Xác định đường thuộc dòng nào Y tinyint Chỉ mục Xác định đường thuộc cột nào Thông tin khoa học công nghệ Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 217 Tạo các chỉ mục trên các cột X1,Y1,X2,Y2 và đặc biệt là X,Y trên 2 bảng trên. Thực hiện việc phân đoạn bảng trên cột X ở cả 2 bảng trên. Bước 3, chúng ta sẽ cập nhật các giá trị vào các cột X1,Y1,X2,Y2,X ,Y và HaveStreet vào hai bảng trên Bước 4, Chúng ta tiến hành sửa đổi các truy vấn cho phù hợp với các chỉ mục tương tứng đã thêm vào, cột X ở đây dùng để phân đoạn dữ liệu nên điều kiên kiện lọc liên quan đến X sẽ được thêm vào và đứng đầu tiên sau lệnh where sau đó đến các điều kiện lọc liên quan đến Y và X1,Y1,X2,Y2. Nội dung truy vấn sẽ được sửa đổi như sau: decimal(9,6)=105.79939663410187,@Lat decimal(8,6)=21.043511243422103 declare @Point geometry,@X tinyint,@Y tinyint,@str nvarchar(60) if @Lat<8.6 set @X=0 else set @X=5*@Lat-42 if @Lng<102.4 set @Y=0 else set @Y=5*@Lng-511 set @Point=geometry::Point(@Lng,@Lat,4326) select @str= VilageName+', '+DistrictName+', '+ProvinceName,@HaveStreet=HaveStreet from tblVilageGis where X=@X and Y=@Y and @X between X1 and X2 and @Y between Y1 and Y2 and Geom.STIntersects(@Point)=1 if @HaveStreet=1 select @str=RoadName+’, ’+@str from tblRoad where X=@X and Y=@Y and @X between X1 and X2 and @Y between Y1 and Y2 and Geom.STDistance(@Point)<0.0009 order by Geom.STDistance(@Point) desc print @str Kết quả trả ra là: Phố Hoàng Sâm, Phường Nghĩa Đô, Quận Cầu Giấy, Hà Nội. Bảng 6. so sánh chi phí (cost) của query cũ và query mới và thời gian chạy truy vấn sau khi sử dụng kỹ thuật tiền xử lý. Chi phí Bài toán gốc Sử dụng kỹ thuật tiền xử lý So sánh Operator cost 15.79 0.0059 Giảm 2676 lần I/O cost 7.11 0.0047 Giảm 1512 lần CPU Cost 8.673 0.56 Giảm 53 lần Thời gian chạy 247.95 4.59 ms Giảm 54 lần Công nghệ thông tin C. Đ. Huy, N. N. An, “Nghiên cứu kỹ thuật tiền xử lý dữ liệu có kích thước lớn.” 218 Như vậy việc sử dụng kỹ thuật tiền xử lý đã mang lại kết quả cải thiện rất lớn về hiệu năng trong , và trong trường hợp số lượng truy vấn càng nhiều thì chỉ số chênh lệch về hiệu năng lại càng lớn bởi thao tác I/O có độ chênh lệch lớn về chi phí, các chi phí CPU, bộ nhớ và sự tranh chấp dữ liệu giảm xuống do các điều kiện lọc chỉ tìm kiếm trong một miền rất nhỏ của dữ liệu thay vì toàn bộ bảng. Và trong trường hợp độ lớn của dữ liệu tăng lên chúng ta có thể phân đoạn dữ liệu chi tiết hơn nhằm tối ưu việc quét cũng như lọc dữ liệu 4. KẾT LUẬN Như vậy với dữ liệu kích thước lớn, tần suất truy vấn đồng thời cao và điều kiện tìm kiếm trong truy vấn phức tạp thì việc sử dụng kỹ thuật tiền xử lý sẽ mang lại hiệu quả rất lớn về hiệu năng. Bài báo đã nêu và phân tích về sự cần thiết phải sử dụng kỹ thuật tiền xử lý. Đề xuất mô hình các bước để thực hiện kỹ thuật tiền xử lý trên những dữ liệu có tần suất truy vấn lớn, cấu trúc phức tạp và có điều kiện lọc không sử dụng được chỉ mục dựa trên những dữ liệu sẵn có. Đồng thời cũng đề xuất mô hình tiền xử lý dữ liệu đối với những dữ liệu có kích thước từ lớn đến đặc biệt lớn, dữ liệu cần tổng hợp từ nhiều bảng. Kết quả thử nghiệm cho bài toán reverse geocode cho thấy tính khả thi của mô hình. TÀI LIỆU THAM KHẢO [1]. The Effect of Data Pre-Processing on Optimized Training of Artificial Neural Networks Nazri Mohd Nawi, Walid Hasen Atomi, M. Z. Rehman [2]. Query Optimization in Database Systems , MATTHIAS JARKE New York University, New York, New York 10006 [3]. Preprocessing and Postprocessing in Linear Optimization, Xin Huang, McMaster University 2004 [4]. Database Optimization: Increase query performance with indexes and statistics. Microsoft [5]. Search Space Preprocessing in Solving Complex Optimization Problems, Ruoqian Liu, Ankit Agrawal, Wei-keng Liao, Alok Choudhary EECS Department Northwestern University Evanston, IL USA [6]. Preprocessing Techniques, Nael El Shawwa Olesya Peshko Alberto Olvera Jonathan Li [7]. Estimating Query Costs, Brian Moran 2003. [8]. Performance Tip: Find Your Most Expensive Queries, overachiever 2012 [9]. Spatial Partitioning and Index, Claudia Dolci, Dan Salvini, Micheal Schrattner, Robert Weibel Thông tin khoa học công nghệ Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 219 ABSTRACT DATA PRE PROCESSING TECHNIQUE FOR OPTIMIZATION QUERY ON BIG SIZE DATABASE Data optimization plays an important role to deploy every database aplication. Techniques For Improving Query Performance are Indexing, Partitioning but limited with big size data or concurency access with complex data. The article shows data pre processing technique to optimization query. This makes new data with suitable format to combine traditional technique to optimize query. The article introduces two models to pre process data. To evaluate the proposed method, we generated a test with 200.000 rows partial data set. Experiment results gave us speed of estimate 54 times compare old method. It’s very excellent. Keywords: Data optimization; Data pre processing; Data partition. Nhận bài ngày 28 tháng 6 năm 2018 Hoàn thiện ngày 07 tháng 10 năm 2018 Chấp nhận đăng ngày 05 tháng 11 năm 2018 Địa chỉ: Viện Công nghệ thông tin/Viện KH-CN quân sự. *Email: caodanghuy@gmail.com.
File đính kèm:
- nghien_cuu_ky_thuat_tien_xu_ly_du_lieu_trong_toi_uu_truy_van.pdf