Kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 3: Phát hiện các mối quan hệ của lược đồ bằng Kiến trúc sư dữ liệu Rational
lượt xem 9
download
Tạo các ánh xạ lược đồ bán tự động Torsten Bittner, Kỹ sư phần mềm, IBM Tóm tắt: Bạn có thể sử dụng Kiến trúc sư Dữ liệu Rational® của IBM® để định nghĩa các ánh xạ dữ liệu. Khi làm việc với các lược đồ lớn, có thể rất cồng kềnh nếu tạo các ánh xạ bằng tay. Kiến trúc sư Dữ liệu Rational cung cấp một thành phần khám phá để nhận biết một cách bán tự động các ánh xạ có tiềm năng. Hướng dẫn này cung cấp một giới thiệu nhập môn về thành phần khám...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 3: Phát hiện các mối quan hệ của lược đồ bằng Kiến trúc sư dữ liệu Rational
- Kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 3: Phát hiện các mối quan hệ của lược đồ bằng Kiến trúc sư dữ liệu Rational Tạo các ánh xạ lược đồ bán tự động Torsten Bittner, Kỹ sư phần mềm, IBM Tóm tắt: Bạn có thể sử dụng Kiến trúc sư Dữ liệu Rational® của IBM® để định nghĩa các ánh xạ dữ liệu. Khi làm việc với các lược đồ lớn, có thể rất cồng kềnh nếu tạo các ánh xạ bằng tay. Kiến trúc sư Dữ liệu Rational cung cấp một thành phần khám phá để nhận biết một cách bán tự động các ánh xạ có tiềm năng. Hướng dẫn này cung cấp một giới thiệu nhập môn về thành phần khám phá quan hệ của Kiến trúc sư Dữ liệu Rational. Trước khi bạn bắt đầu Trong hướng dẫn này, hãy tìm hiểu làm thế nào để sử dụng thành phần khám phá của Kiến trúc sư Dữ liệu Rational (Rational Data Architect) để tạo ra bán tự động các ánh xạ giữa các nguồn dữ liệu quan hệ và các nguồn dữ liệu XML. Hướng dẫn này là phần thứ ba trong một loạt bài viết về Kiến trúc sư Dữ liệu Rational. Về hướng dẫn này Hướng dẫn này chỉ dẫn cho bạn thấy từng bước làm thế nào để: Gọi thực hiện thuật toán phát hiện sự giống nhau về từ vựng của Kiến trúc sư Dữ liệu Rational (RDA) để phát hiện các ánh xạ lược đồ tiềm năng dựa vào sự giống nhau của các tên cột.
- Định nghĩa một mô hình bảng chú giải thuật ngữ có chứa các từ, chữ viết tắt và từ đồng nghĩa bằng cách sử dụng trình soạn thảo Mô hình bảng chú giải thuật ngữ của RDA. Sử dụng thông tin của mô hình bảng chú giải thuật ngữ với thuật toán dựa vào nghĩa của tên để phát hiện thêm các kết quả phù hợp. Thiết lập việc khám phá quan hệ để sử dụng các mẫu dữ liệu. Tìm các ánh xạ có tiềm năng với các thuật toán, sử dụng các mẫu dữ liệu. Mục tiêu Sau khi hoàn thành hướng dẫn này, bạn sẽ có khả năng sử dụng thành phần khám phá của Kiến trúc sư Dữ liệu Rational để tìm ra các ánh xạ lược đồ. Các điều kiện cần trước Thay đổi tên sản phẩm Ngày 16 tháng Mười Hai năm 2008 IBM đã thông báo rằng, kể từ phiên bản 7.5.1, Kiến trúc sư Dữ liệu Rational được đổi tên thành Kiến trúc sư Dữ liệu InfoSphere (InfoSphere Data Architect) để đề cao vai trò của nó trong các công cụ nền InfoSphere.
- Hướng dẫn này giả thiết bạn đã quen với các cơ sở dữ liệu quan hệ, tốt nhất là DB2®. Việc quen thuộc với trình soạn thảo ánh xạ của Kiến trúc sư Dữ liệu Rational rất có lợi, nhưng không bắt buộc. Để tham khảo, hãy tra cứu các bài viết sau của developerWorks: Phần 1: Truy cập và tích hợp siêu dữ liệu doanh nghiệp với Kiến trúc sư Dữ liệu Rational. Phần 2: Tạo các truy vấn SQL/XML với Kiến trúc sư Dữ liệu Rational. Sử dụng Kiến trúc sư Dữ liệu Rational để tích hợp các nguồn dữ liệu Các yêu cầu hệ thống Để thực hiện các bước đã mô tả trong hướng dẫn này, bạn cần phải có Kiến trúc sư Dữ liệu Rational phiên bản V7 và Enterprise 9 DB2® của IBM đã cài đặt. Bạn có thể tải về phiên bản dùng thử của Kiến trúc sư Dữ liệu Rational V7 và DB2 V9.1 của IBM (xem Tài nguyên). Các bước thiết lập 1. Cài đặt DB2 V9.1. 2. Cài đặt Kiến trúc sư Dữ liệu Rational V7. 3. Giải nén gói ar-rdamapcode.zip từ tệp tin vào trong một thư mục (ví dụ, C:\RDA_Tutorials). Bước này tạo ra thư mục RDA_Discovery.
- 4. Khởi động Kiến trúc sư Dữ liệu Rational và chỉ rõ thư mục ở đó bạn đã giải nén gói làm thư mục cho vùng làm việc của bạn (ví dụ, C:\RDA_Tutorials). 5. Thư mục RDA_Discovery trong gói phần mềm là thư mục dự án dữ liệu của Kiến trúc sư Dữ liệu Rational. Trong Kiến trúc sư Dữ liệu Rational bạn phải nhập khẩu nó vào trong vùng làm việc của bạn. Từ trình đơn File, chọn Import. 6. Chọn trình thủ thuật Existing Project into Workspace. Hình 1. Chọn trình thủ thuật Import
- 7. Nhấn vào Next. Duyệt đến vị trí ở đó bạn đã giải nén tệp tin ar- rdamapcode.zip (ví dụ, C:\RDA_Tutorials). Hình 2. Trình thủ thuật Import Project
- 8. Nhấn vào Finish. Kết quả là, bạn thấy dự án RDA_Discovery với một tập hợp các mô hình dữ liệu, một mô hình bảng chú giải thuật ngữ và các tệp tin mô hình ánh xạ trong vùng làm việc của bạn như được hiển thị trong Hình 3. (Nếu bạn không nhìn thấy Database Explorer, hãy kiểm tra chắc chắn rằng bạn ở trong phối cảnh Dữ liệu, như thấy trong Hình 4.) Hình 3. Data Project Explorer sau khi nhập khẩu dự án
- Hình 4. Phối cảnh Dữ liệu 9. Một số các thuật toán phát hiện mối quan hệ yêu cầu dữ liệu mẫu. Tệp tin kịch bản lệnh rda_discovery_db.sql tạo ra một THƯ VIỆN (LIBRARY) cơ sở dữ liệu DB2 và chèn vào một bộ các mẫu dữ liệu. Để triển khai một kịch bản lệnh trong cơ sở dữ liệu DB2 của bạn, khởi động cửa sổ lệnh DB2 (trình đơn của Windows Start > IBM DB2 > Command Line Tools > Command Window). 10. Đi đến thư mục RDA_Discovery mà bạn đã giải nén từ tệp tin vi- rdamapcode.zip.
- 11. Để tạo cơ sở dữ liệu LIBRARY, định nghĩa các khóa chính và khóa ngoài và chèn thêm các dữ liệu mẫu, hãy chạy lệnh này: db2 -tvf rda_discovery_db.sql 12. Hình 5. Tạo cơ sở dữ liệu LIBRARY 12. Để tạo cơ sở dữ liệu OLD_LIB, định nghĩa khóa chính và khóa ngoài và chèn thêm các mẫu dữ liệu, hãy chạy lệnh: db2 -tvf rda_discovery_db_old.sql 13. 13. Kết nối vào cơ sở dữ liệu LIBRARY trong Kiến trúc sư Dữ liệu Rational. Trong Database Explorer, nhấn chuột phải vào Connection và chọn New Connection. (Nếu bạn không nhìn thấy Database Explorer, hãy kiểm tra chắc chắn rằng bạn ở trong phối cảnh Dữ liệu, như hiển thị trong Hình 4.)
- Hình 6. Tạo kết nối cơ sở dữ liệu mới 14. Chỉ rõ các thông tin kết nối theo môi trường của bạn tương tự như Hình 7. Hình 7. Các thông số cài đặt kết nối cơ sở dữ liệu
- 15. Nhấn vào Test Connection để kiểm tra xem tất cả các tham số đã được thiết lập đúng chưa. Nếu thử nghiệm thành công, hãy nhấn vào Finish. 16. Lặp lại các bước từ 13 đến 15 cho cơ sở dữ liệu OLD_LIB bằng cách sử dụng cùng giá trị thiết lập kết nối, trừ tên của cơ sở dữ liệu. Tổng quan kịch bản và mô tả vấn đề Kịch bản cho hướng dẫn này có liên quan chặt chẽ đến kịch bản trong các hướng dẫn đã xuất bản trước đó. Mục đích là để sử dụng trình soạn thảo ánh xạ của Kiến trúc sư Dữ liệu Rational để tích hợp dữ liệu (xem Phần 1) và tạo ra truy vấn (xem Phần 2). Trình soạn thảo ánh xạ làm giảm đáng kể lượng thời gian phải dùng để tự tay viết các truy vấn SQL hoặc SQL/XML. Trình soạn thảo cũng cho phép người sử dụng nắm bắt các mối quan hệ dữ liệu và công bố thông tin trong một báo cáo. Tuy nhiên, một vấn đề mới phát sinh khi sử dụng trình soạn thảo ánh xạ. Việc tạo bằng tay từng ánh xạ, từng cái một, rất tốn thời gian. Đặc biệt, khi làm việc với các lược đồ lớn về phía nguồn và phía đích, sẽ thật khó tìm thấy các cột được ánh xạ tới. Kiến trúc sư Dữ liệu Rational giải quyết vấn đề này bằng thành phần khám phá mối quan hệ. Ý tưởng là để tạo ra các ánh xạ một cách bán tự động. Công cụ này phát hiện các ánh xạ có tiềm năng cho người sử dụng, người chỉ phải chấp nhận hoặc từ chối kết quả so khớp được đề xuất. Thành phần khám phá hoạt động dựa trên giả thiết rằng các phần tử nguồn và đích đưa vào trong một ánh xạ có sự giống nhau nhất định. Các đặc điểm giống nhau này rơi vào hai thể loại.
- Sự giống nhau của siêu dữ liệu Thể loại này đề cập đến thông tin có chứa trong mô hình dữ liệu, như là mô hình cơ sở dữ liệu vật lý, mô hình cơ sở dữ liệu logic hoặc mô hình lược đồ XML. Phần tử được ánh xạ giữa các mô hình dữ liệu ấy là các cột, các thực thể và các phần tử XML. Trong nhiều trường hợp, phần tử nguồn và đích của ánh xạ sẽ có cùng một tên. Ngoài ra, tên của một phần tử nguồn có thể được viết tắt hoặc là một từ đồng nghĩa với phần tử đích. Các thuật toán phát hiện trong Kiến trúc sư Dữ liệu Rational dựa trên sự giống nhau của siêu dữ liệu là: Sự tương tự từ vựng. Ngữ nghĩa của tên. Sự giống nhau của dữ liệu cá thể Thể loại này đề cập đến dữ liệu chứa trong cơ sở dữ liệu, ví dụ, trong các cột của một cơ sở dữ liệu vật lý mà người sử dụng muốn ánh xạ. Thành phần khám phá sẽ thu thập một mẫu dữ liệu từ nguồn và đích dữ liệu vật lý. Nó sau đó so sánh hai mẫu dữ liệu và cố gắng phát hiện ra một mối quan hệ. Trong Kiến trúc s ư Dữ liệu Rational các thuật toán sau đây là dựa trên sự giống nhau của cá thể dữ liệu: Chữ ký. Các phân phối. Các biểu thức chính quy Hướng dẫn này giải thích một số thuật toán và cách sử dụng chúng như thế nào. Để đơn giản hơn, hướng dẫn này đi kèm với một bộ các mô hình dữ liệu được sử dụng để gọi ra các thuật toán khác nhau (xem Tải về). Việc phát hiện dựa theo siêu dữ liệu sử dụng các mô hình dữ liệu vật lý COMPANY_old.dbm và COMPANY_new.dbm. Trong một kịch bản tích hợp dữ
- liệu điển hình, một mục tiêu là để di chuyển dữ liệu từ một lược đồ cũ vào trong một lược đồ mới hơn. Các tên cột và các bảng trong ví dụ này được chọn để minh họa các khả năng của thành phần khám phá, hơn là mô phỏng một lược đồ thường được sử dụng trong một môi trường doanh nghiệp. Đối với việc phát hiện dựa theo dữ liệu, mô hình cơ sở dữ liệu "old library system.dbm" được sử dụng như một nguồn. Cơ sở dữ liệu vật lý có chứa các dữ liệu là OLD_LIB. Mô hình cơ sở dữ liệu đích "new library system.dbm" về cơ bản giống như mô hình nguồn. Sự khác nhau là dữ liệu cá thể có chứa trong cơ sở dữ liệu LIBRARY, khác với dữ liệu trong OLD_LIB. Việc phát hiện các ánh xạ bằng thuật toán tương tự từ vựng Trong phần này, bạn sẽ gọi thực hiện việc khám phá các quan hệ. Từng bước một, chúng ta sẽ mở một mô hình ánh xạ hiện có mà chưa định nghĩa ánh xạ nào, chạy khám phá Tìm cái phù hợp nhất (Find Best Fit) và Tìm cái tương tự (Find Similar) với thuật toán tương tự từ vựng và phân tích các kết quả phát hiện ra. Gọi thực hiện khám phá Find Best Fit 1. Chuyển tới Data perspective. 2. Trong Data Project Explorer, mở mô hình ánh xạ CompanyMapping.msl như được hiển thị trong Hình 8. Thao tác này sẽ mở trình soạn thảo ánh xạ của Kiến trúc sư Dữ liệu Rational. Ở phía bên trái là mô hình cơ sở dữ liệu nguồn Company_old.dbm và ở bên phải là mô hình cơ sở dữ liệu đích Company_new.dbm. Hình 8. Mở mô hình ánh xạ CompanyMapping.msl
- 3. Để gọi thực hiện khám phá, nhấn chuột phải vào cột Customer trong bảng CUSTOMER. Từ trình đơn ngữ cảnh, chọn Discover Relationships > Find Best Fit. Hình 9. Gọi thực hiện khám phá Find Best Fit 4. Trong trình thủ thuật định phạm vi Discover Relationship, hãy bảo đảm chắc chắn đã đánh dấu chọn vào cột Customer ở bên phía nguồn và đánh dấu vào tất cả các cột bên phía đích. Nhấn vào Finish. Hình 10. Trình thủ thuật định phạm vi khám phá quan hệ (Discover
- Relationship) cho Find Best Fit 5. Trong trình soạn thảo ánh xạ bây giờ bạn nhìn thấy một đường phát hiện có màu vàng trỏ từ cột nguồn Customer đến cột đích Customer. Rê chuột trên đường màu vàng và bạn nhìn thấy một giá trị điểm số phù hợp là 100%. Hình 11. Khám phá điểm số phù hợp qua thông tin khi rê chuột
- 6. Nhấn chuột phải vào đường đã phát hiện và chọn Properties. Trong khung nhìn Properties, mở phiếu Discover Relationships Trong các tính chất phát hiện bạn tìm thấy nhiều thông tin chi tiết hơn về kết quả khớp đã phát hiện ra. Hình 12. Khung nhìn Properties khám phá các mối quan hệ 7. Điểm số phù hợp (Matching score) giống như giá trị mà bạn thấy khi rê chuột trên đường ánh xạ. Giá trị này được so sánh tương đối với các kết quả phù hợp khác được phát hiện đối với cùng cột nguồn này. Khi có nhiều hơn một kết quả phù hợp được phát hiện cho một cột nguồn, tất cả các kết quả phù hợp được xếp hạng. Xếp hạng cao hơn thì có điểm số phù hợp cao hơn. Vài kết quả có thể có cùng một điểm phù hợp nếu mức giống nhau của chúng với cột nguồn là như nhau. Trong bảng Các phép đo (Measurements) trong Hình 12, tên của thuật toán phát hiện sẽ được hiển thị cùng với một giá trị tỷ số phù hợp (Match ratio). Tỷ số phù hợp này là một giá trị tuyệt đối giữa 0 và 1 để chỉ ra “khoảng cách” của cột nguồn và cột đích. Khoảng cách này có nghĩa là, nếu hai cột có quan hệ rất gần nhau thì giá trị là thấp. Khi việc phát hiện xác định hai cột là như nhau, tỷ số phù hợp bằng 0. Khi hai cột rất khác nhau, tỷ số phù
- hợp sẽ cao hơn. Một giá trị bằng 1 có nghĩa là không phù hợp. Tỷ số phù hợp được sử dụng cho việc xếp hạng để xác định điểm số phù hợp. Một bảng có chứa hai giá trị tỷ lệ phù hợp. Giá trị Mức lá (Leaf Level) đề cập đến sự giống nhau của các phần tử mức lá trong khung nhìn cây lược đồ, chẳng hạn như các tên cột khi làm việc với các mô hình cơ sở dữ liệu vật lý. Giá trị Mức cha mẹ (Parent Level) đề cập đến phần tử cha mẹ trực tiếp của phần tử mức lá, chẳng hạn như tên bảng trong kịch bản mô hình cơ sở dữ liệu vật lý. 8. Nhấn chuột phải vào đường ánh xạ mầu vàng trong trình soạn thảo ánh xạ và chọn Accept Mapping. Đường ánh xạ mầu vàng chuyển thành một đường ánh xạ màu xanh dương. Hình 13. Chấp nhận một kết quả phù hợp được phát hiện IGọi thực hiện khám phá Find Similar
- Find Best Fit so với Find Similar Find Best Fit (tìm kết quả phù hợp nhất) thường cung cấp cho bạn một bước nhảy khởi động để tìm kiếm các ánh xạ có tiềm năng tốt nhất. Khi gọi thực hiện khám phá trên một phạm vi rộng các nguồn và đích, Find Best Fit là sự lựa chọn được ưu tiên. Nếu không thì số các kết quả phù hợp trả về quá lớn và khó xử lý trong trình soạn thảo ánh xạ. Nhược điểm của Find Best Fit là bạn có thể bỏ sót một số các ánh xạ ứng viên rất tốt. Nếu bạn không muốn bỏ sót những ứng cử viên này, đồng thời muốn có thể xử lý được các kết quả, hãy gọi thực hiện khám phá Find Similar (tìm sự giống nhau) với phạm vi hẹp ở phía nguồn và phạm vi hẹp rộng ở phía đích. Gọi thực hiện khám phá các mối quan hệ bằng cách sử dụng Find Best Fit trả về một kết quả phù hợp với điểm số cao nhất đối với cột nguồn đã chọn. Các kết quả phù hợp khác, ngay cả khi chúng có cùng một điểm số phù hợp, sẽ tự động bị loại bỏ và không xuất hiện trong trình soạn thảo ánh xạ. Thông thường bạn muốn phát hiện để trả về nhiều hơn một kết quả để cho bạn có thể linh hoạt lựa chọn trong số những gợi ý. Việc gọi thực hiện khám phá bằng cách sử dụng phương pháp Find Similar sẽ cho phép bạn làm điều này. 1. Nhấn chuột phải vào cột WORK.Employee và chọn Discover Relationships > Find Similar từ trình đơn ngữ cảnh, như chỉ ra trong Hình 14. Hình 14. Gọi thực hiện khám phá Find Similar
- 2. Trong trình thủ thuật định phạm vi phát hiện, hãy chắc chắn rằng WORK.Employee trong Source được chọn và tất cả các phần tử trong phần Target cũng được chọn. Thiết lập các tham số xác định phạm vi (Scoping) bổ sung thêm để phát hiện nhiều nhất là 5 phần tử For each selected source element. Nhấn vào Finish. Việc xác định phạm vi Điều quan trọng là phải khôn khéo lựa chọn phạm vi khi gọi thực hiện khám phá. Nó có một tác động rất lớn về thời gian chạy khám phá và về số lượng các kết quả được trả về. Sự đánh đổi là giữa thời gian dùng để xác định phạm vi và thời gian dùng để sắp xếp các kết quả phù hợp không mong muốn. Một biện pháp thực tiễn thích hợp là hạn chế phạm vi ở phía sẽ điều khiển ánh xạ của bạn và có một phạm vi rộng ở phía đối diện. Giả sử rằng bạn muốn di chuyển tất cả các dữ liệu trong doanh nghiệp của bạn vào một lược đồ. Lược đồ này là sẽ là lược đồ đích của bạn. Do bạn muốn điền vào tất cả các cột trong lược này, nên ánh xạ của bạn là dựa theo đích. Một biện pháp thực tiễn thích hợp trong kịch bản này là gọi thực hiện khám phá cho một tập con của các bảng đích, loại bỏ kết quả phù hợp không mong muốn và tiếp tục với các tập hợp bảng tiếp theo.
- Hình 15. Trình thủ thuật định phạm vi khám phá Find Similar 3. Các kết quả phù hợp sau đây được trả về: 100% WORK.Employee 86% CONTACT.Employee 72% CLIENT.Employee
- 58% WORK.Employer 43% WORK.Deployment 4. Các điểm số phù hợp khác nhau của ba cột Employee là do các tên bảng khác nhau của chúng (tỷ số phù hợp mức cha mẹ). Hình 16. Các kết quả khám phá Find Similar Tạo ra một mô hình bảng chú giải thuật ngữ Trong phần này, bạn sử dụng trình soạn thảo mô hình bảng chú giải thuật ngữ (glossary model) của Kiến trúc sư Dữ liệu Rational để tạo ra một mô hình bảng chú giải thuật ngữ. Mô hình này định nghĩa các từ bằng các chữ viết tắt và các từ
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Kiến Trúc máy tính
0 p | 1730 | 569
-
Chương 2: Những kỹ năng căn bản để sử dụng Revit Architecture
29 p | 706 | 396
-
Những kỹ năng căn bản để sử dụng Revit Architecture
29 p | 1096 | 258
-
Kiến trúc máy tính Phân I - Chương 5
100 p | 124 | 28
-
Viết tư liệu kiến trúc phần mềm, Phần 4
24 p | 162 | 27
-
Kiến trúc máy tính Phân I - Chương 1
7 p | 154 | 21
-
Các kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 2
45 p | 135 | 17
-
Bài giảng Kiến trúc máy tính - Chương 1: Giới thiệu chung - Nguyễn Kim Khánh
51 p | 111 | 15
-
Bài giảng Kiến trúc máy tính - Chương 4: Giới thiệu chung - Nguyễn Kim Khánh
136 p | 116 | 14
-
Kỹ thuật vi xử lý- chương 6: Cácvi xử lý và công nghệ tiên tiến
41 p | 110 | 13
-
Các kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 2: Tạo các truy vấn SQL/XML với Kiến trúc sư dữ liệu Rational
43 p | 111 | 10
-
Loạt bài các kỹ năng của Kiến trúc sư dữ liệu Rational, Phần 3
47 p | 130 | 9
-
Bài giảng Kiến trúc máy tính: Phần 1 - ĐH Sư phạm kỹ thuật Nam Định
121 p | 48 | 7
-
Giáo trình Kiến trúc máy tính (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ Nghề Kỹ thuật Công nghệ
58 p | 37 | 6
-
Giáo trình Điện tử cơ bản và máy tính (Nghề: Công nghệ thông tin - Sơ cấp): Phần 1 - Trường CĐ nghề Kỹ thuật Công nghệ
48 p | 38 | 5
-
Giáo trình Kiến trúc máy tính (Ngành: Kỹ thuật sửa chữa lắp ráp máy tính – Trình độ Trung cấp) - Trường Cao đẳng Hòa Bình Xuân Lộc
155 p | 4 | 3
-
Nghiên cứu, đề xuất khung kiến trúc hệ thống thông tin tổng thể cho các trường đại học công lập
11 p | 44 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn