Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Thấu hiểu ứng dụng hơn và tăng năng suất Sonali Surange Trưởng nhóm Các công cụ pureQuery của Data Studio IBM 20 05 2009 Zeus Courtois ([email protected]) Kỹ sư phần mềm IBM Khám phá sản phẩm IBM® Data Studio Developer 2.1 sẽ giúp đỡ bạn hiểu tốt hơn các ứng dụng cơ sở dữ liệu của mình như thế nào. Thấy được cách triển khai mới của Data Studio Developer có thể cải thiện năng suất của bạn và tăng cường sự hợp tác giữa các chuyên viên phát triển và các quản trị viên cơ sở dữ liệu như thế nào. Hãy theo các kịch bản trong bài báo này và trải nghiệm cách sử dụng Data Studio Developer 2.1 để làm được nhiều hơn, dễ dàng hơn và hiểu thấu công việc hơn. . Giới thiệu Một số lợi ích chủ yếu của bản phát hành mới của Data Studio Developer gồm: Cho bạn nhiều thông tin hơn để tập trung vào các nỗ lực tinh chỉnh SQL của mình. Cải thiện chất lượng dịch vụ cho OpenJPA và cho các ứng dụng . NET. Có cái nhìn thấu hiểu hơn vào bên trong những ứng dụng Java có sử dụng SQL. Giúp bạn cải thiện năng suất và sự hợp tác giữa các chuyên viên phát triển và các quản trị viên cơ sở dữ liệu. • Bạn sẽ có khả năng để giảm bớt hay loại trừ nguy cơ “mũi tiêm SQL” (SQL injection) cho các ứng dụng cơ sở dữ liệu với Java. • • • • Một số điều kiện cần có trước để chạy các kịch bản thực hành Bạn cần phải cài đặt các sản phẩm sau để thử các kịch bản bên dưới : © Copyright IBM Corporation 2009 Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Nhẫn hiệu đăng ký Trang 1 của 29 developerWorks® ibm.com/developerWorks/vn/ • Data Studio Developer 2.1 • DB2® cho Linux®, UNIX® và Windows® -– DB2 Express-C làm việc rất tốt • Cơ sở dữ liệu mẫu của DB2 đi cùng với sản phẩm này. Cung cấp cho các chuyên viên phát triển nhiều thông tin hơn để tập trung vào các nỗ lực tinh chỉnh SQL. Nhận diện các câu lệnh SQL và tần số thực thi của chúng Các công cụ định hình hiện tại giúp cho bạn nhận diện phương thức Java™ nào trong ứng dụng cần nhiều thời gian nhất để chạy. Với Data Studio Developer 2.1 bạn có thể thâm nhập xuống sâu hơn, thậm chí thấy được các số đo hiệu năng của các phương thức Java mà có chứa lệnh gọi tới cơ sở dữ liệu. Dù bạn sử dụng pureQuery, JDBC hay khung công tác khác, bạn cũng có thể xác định được thời gian chạy của từng câu lệnh SQL trong ứng dụng của bạn, chúng chạy bao nhiêu lần và thời gian chạy tối đa, tối thiểu và trung bình là bao nhiêu. Hiểu các số đo về thực thi câu lệnh SQL trong pureQuery Cửa sổ chính pureQuery cho thấy thông tin sau về mỗi câu lệnh SQL mà ứng dụng đã chạy : • • • • • Số lần mà SQL đã chạy - Số lần chạy Tổng cộng các thời gian chạy mỗi lần của lệnh SQL - Thời gian tổng cộng Thời gian dài nhất mà lệnh SQL đã một lần từng chạy - Thời gian tối đa Trung bình các thời gian mà lệnh SQL chạy mỗi lần - Thời gian trung bình Thời gian ngắn nhất mà lệnh SQL đã một lần từng chạy - Thời gian tối thiểu Bạn có thể sử dụng thông tin này để xác định những câu lệnh SQL nào sẽ được lợi từ tối ưu hóa và xác định các vấn đề của lệnh SQL. Bạn cũng có thể sử dụng thông tin đó để xác định những câu lệnh SQL được thực hiện thường xuyên đến mức độ nào. Hãy thử các bước đơn giản sau trên Data Studio : 1. Tại cửa sổ, bạn nhấn Data Management > Data Source Explorer (trước đây là Database Explorer). Tạo một kết nối tới cơ sở dữ liệu mẫu và đặt tên kết nối là SAMPLE. 2. Tạo ra một dự án Java và đặt tên là myDSDPrj. 3. Tải và sao chép các tệp TutMod.java và Util.java vào gói db2jcc.example. Tệp tin này là ứng dụng JDBC đơn giản hiện có mà bạn sẽ sử dụng để chạy nhiều kịch bản. 4. Để thêm sự hỗ trợ pureQuery vào dự án : 1. Nhấn phím phải chuột trên dự án và chọn pureQuery -> Add pureQuery support. 2. Chọn SAMPLE và thêm lược đồ thích hợp để cấp tên đủ phân biệt cho bảng STAFF của bạn. 3. Tại hình ở dưới, lược đồ là SSURANGE. 4. Đánh dấu chọn hộp Enable SQL capturing and binding for JDBC applications Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 2 của 29 ibm.com/developerWorks/vn/ developerWorks® Hình 1. Thêm hỗ trợ pureQuery Lưu ý bây giờ bạn có khả năng mạnh hơn nhiều khi xác định một lược đồ mặc định để cấp tên đủ phân biệt cho các bảng và khung nhìn. Sử dụng widget đường dẫn mặc định mới để cấp tên đủ phân biệt cho các thủ tục thường lệ (routine) có tên chưa đủ phân biệt của bạn. 5. Để thu thập các số đo hiệu năng, hãy chạy ứng dụng bằng cách sử dụng cấu hình pureQuery : 1. Đặt lược đồ để cấp tên đủ phân biệt cho bảng STAFF trước khi chạy ứng dụng. Để làm điều này, bạn mở TutMod.Java, tìm tới dòng 66 và thay đổi giá trị SSURANGE thành tên lược đồ của bạn và lưu tệp stmt.execute("set current schema SSURANGE"); 2. . Sử dụng cấu hình pureQuery để chạy ứng dụng bằng cách mở tệp TutMod.java, rồi nhấn phím phải chuột trên tệp và chọn Run -> Run Configurations. 3. Chọn pureQuery và cung cấp các thông tin cho tên cơ sở dữ liệu, máy chủ, cổng , ID người dùng và mật khẩu (Hình 2) và nhấn Run. 4. SQL được thực hiện và thông tin hiệu năng được thu thập lại. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 3 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 2. Chạy ứng dụng để thu thập các số đo của SQL 6. Để xem các thông tin hiệu năng: 1. Nhấn chuột phải trên tệp myDSDPrj và chọn Show pureQuery outline 2. Trong cửa sổ chính pureQuery, nhấn vào nút Toggle Profile 3. Mở rộng dự án myDSDPrj và bạn có thể nhìn thấy thông tin hiệu năng của mỗi câu lệnh SQL. Ví dụ, hình ở dưới cho thấy câu lệnh SELECT được chạy 2 lần với tổng thời gian là 270 ms. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 4 của 29 ibm.com/developerWorks/vn/ developerWorks® Hình 3. Các số đo thời gian thực hiện của SQL Câu lệnh SELECT được chạy thường xuyên hơn và ứng dụng có lẽ đã được lợi bởi việc tối ưu hóa câu lệnh SQL này. Tinh chỉnh và tối ưu hóa ứng dụng của bạn mà không thay đổi mã Nếu bạn đang chạy trên DB2 cho z/OS Optimization Expert của DB2 cho z/OS có thể cung cấp lời khuyên để cải thiện hiệu năng một câu lệnh SQL như thế nào. Với phiên bản sắp tới của Optimization Expert, bạn có thể thật sự chia sẻ với Data Studio Developer, vì vậy bạn sẽ có khả năng sao chép câu lệnh SQL từ bộ biên tập XML của pureQuery đến Optimization Expert và sau đó sao chép câu lệnh tương đương đã được tối ưu hóa vào lại bộ biên tập. Một khi bạn nhận diện được lệnh SQL có vấn đề, bạn cần tối ưu hóa nó. Đối với các ứng dụng đang sử dụng thực tế hay các ứng dụng được đóng gói bạn có thể không có khả năng để thay đổi mã nguồn ứng dụng, nhưng bạn vẫn muốn có khả năng thay đổi câu lệnh SQL được sinh ra. Ví dụ, bạn muốn thay đổi các SQL để tận dụng một chỉ mục mới bổ sung, để giới hạn số hàng được trả về, hay để thêm một mệnh đề ORDER BY rất cần thiết. Data Studio Developer 2.1 cung cấp một bộ biên tập được kiểm soát để cho bạn thay thế câu lệnh SQL hiện hữu được phát sinh từ ứng dụng bằng một câu lệnh tương đương và hy vọng là tốt hơn. Bộ biên tập tự động làm cho có hiệu lực sự tương đương câu lệnh và không công nhận các câu lệnh không tương đương. Thực hiện các bước đơn giản sau tại nơi cài đặt Data Studio Developer của bạn : Soạn tệp XML pureQuery bằng cách sử dụng bộ biên tập XML pureQuery Khi bạn thay thế một câu lệnh SQL hiện hữu, thì câu lệnh thay thế đó phải tương thích với câu lệnh hiện hữu, nghĩa là phải có cùng số lượng tham số, cùng các kiểu tham số và cùng dạng tập hợp kết quả, nếu có. Nếu SQL được thay thế không tương thích hay có những lỗi không hợp thức (cú pháp hay ngữ nghĩa), bộ biên tập sẽ cho thấy các lỗi và bạn không thể ghi lưu tệp cho đến khi bạn sửa được lỗi. Nếu muốn quay lại câu lệnh ban đầu được phát sinh Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 5 của 29 developerWorks® ibm.com/developerWorks/vn/ từ ứng dụng, bạn sử dụng trình đơn Reset to capture statement. Hãy xóa câu lệnh SQL nếu bạn không muốn liên kết nó. 1. Tại myDSDPrj, mở rộng pureQueryFolder. Nhấn đúp trên tệp capture.pdqxml 2. Nhấn phím phải chuột trên câu lệnh SELECT ( SELECT id, name, dept, job, years, salary, comm FROM staff WHERE id = ?)và chọn Edit. Đây là câu lệnh SELECT mà bạn thấy ở Hình 3 phía trên. Chọn lược đồ mặc định để cấp tên đủ phân biệt cho bảng của bạn. Hình 4. Câu lệnh SQL hiện hữu để giảm bớt số lượng hàng được trả về 3. Bây giờ bạn có thể soạn thảo câu lệnh với SQL sau, nó tương đương nhưng trả về ít hàng hơn: SELECT id, name, dept, job, years, salary, comm FROM staff WHERE id = ? fetch first 2 rows only 4. Nhấn Save. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 6 của 29 ibm.com/developerWorks/vn/ developerWorks® Hình 5. Thay thế bằng câu lệnh SQL tối ưu Bây giờ khi bạn đã thay đổi SQL để trả về ít hàng hơn, chạy lại câu lệnh lần nữa và xem nó có làm nên bất kỳ sự khác biệt nào về các số đo hiệu năng chưa. 1. Chạy ứng dụng lần nữa : 1. Mở pdq.properties và tắt captureMode và thêm enableDynamicSQLReplacement as true pdq.captureMode=OFF pdq.executionMode=DYNAMIC pdq.enableDynamicSQLReplacement=TRUE . 2. Chạy ứng dụng sử dụng cấu hình pureQuery. 2. Để xem các số đo hiệu năng lần nữa, nhấn chuột phải vào myDSDPrj và chọn Show pureQuery outline 3. Hình ở dưới cho thấy câu lệnh SELECT chạy hai lần (như trước đây) nhưng với một thời gian tổng cộng là 126 ms. Bạn lưu ý rằng câu lệnh SQL mất ít thời gian hơn so với trước đây. Hình 6. Hiệu năng SQL tốt hơn sau khi thay thế bằng câu lệnh SQL tối ưu Cải thiện chất lượng dịch vụ cho OpenJPA và cho các ứng dụng .NET Xác định vấn đề và chất lượng dịch vụ trở nên dễ dàng với JPA Bây giờ bạn có thể có được kiến thức về bất kỳ SQL và JPAQL nào tạo ra bởi các ứng dụng truy nhập dữ liệu DB2 dạng JPA hiện hữu hay mới. Bạn cũng có thể sử dụng ngay SQL tĩnh mà không Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 7 của 29 developerWorks® ibm.com/developerWorks/vn/ phải thay đổi bất kỳ mã ứng dụng nào. Nếu ứng dụng của bạn sử dụng DB2, bạn hãy sử dụng bộ phát tĩnh (wsdb2gen) trong WebSphere® Application phiên bản 7 để thu thập SQL. Đa số các lợi ích đã sẵn có mà không phải chạy các ứng dụng. Đối với các trường hợp còn lại, hãy kết hợp với tối ưu hóa phía khách. Data Studio Developer 2.1 bao gồm các hỗ trợ về công cụ để làm cho quá trình sinh gói tĩnh dễ dàng hơn. Bạn cần phải có WebSphere 7 fixpack 3. Hãy theo các bước đơn giản sau tại nơi cài đặt Data Studio Developer của bạn: 1. Thêm hỗ trợ pureQuery vào dự án JPA của bạn. 2. Thêm com.ibm.ws.jpa.jar từ nơi cài đặt WebSphere của bạn vào đường dẫn xây dựng (build path). 3. Nhấn phím phải chuột trên persistence.xml và chọn pureQuery > Generate pureQueryXml file. 4. Nhấn phím phải chuột trên project và chọn pureQuery->Show pureQuery outline. 5. Xem tất cả các CRUDs có thể phát sinh từ các thực thể, các namedQueries và namedNativeQueries từ các thực thể cũng như các tệp ánh xạ. 6. Nhấn đúp trên bất kỳ SQL nào để đi sâu vào trong mã nguồn JPA đã khởi sự truy vấn SQL. 7. Như một bước tùy chọn, bạn có thể sử dụng sự tối ưu hóa phía khách để bắt giữ các lệnh SQL mà chỉ có sẵn trong chế độ chạy thực (ví dụ các câu lệnh JPAQL động). Chạy ứng dụng của bạn với pdq.Properties captureMode được bật ON và thu thập bất kỳ JPAQL và SQL nào lưu lại từ ứng dụng của bạn. Dù ứng dụng của bạn đang sử dụng DB2 hay không, hãy tối ưu hóa ứng dụng JPA không-DB2 hiện hữu mà không thay đổi một dòng mã nào. Để thay thế SQL hiện hữu bằng một SQL tối ưu, bạn tham khảo mục Tinh chỉnh và tối ưu hóa ứng dụng của bạn mà không thay đổi mã. Tham khảo thêm hướng dẫn thực hành chuyên sâu về sự hỗ trợ của Data Studio Developer 2.1 cho JPA. Cải thiện chất lượng dịch vụ cho các ứng dụng .NET đang sử dụng SQL tĩnh Data Studio pureQuery Runtime 2.1 cung cấp hỗ trợ để cải thiện tính ổn định, tính an toàn và tính dễ điều khiển của các ứng dụng .NET, bao gồm cả những ứng dụng được viết trong bất kỳ ngôn ngữ dựa trên .Net nào ví dụ như C# và VB.Net. Bạn hãy nâng cấp ứng dụng .Net hiện hữu với những điểm nối bật về SQL này. 1. Bật chế độ bắt giữ (thành ON) trong xâu kết nối .Net captureMode = on;pureQueryXML=path/filename:collection=collName;rootpackage=pkgName 2. Thực hiện tất cả các kiểm thử 3. Sử dụng tiện ích DB2cap để liên kết và tạo ra các gói tĩnh từ SQL đã thu thập được 4. Cấp các quyền thực thi 5. Tắt chế độ bắt giữ (thành OFF) và đặt chế độ thực thi (executionMode) ở trạng thái STATIC trong xâu kết nối executionMode=STATIC:captureMode=OFF 6. Thực hiện tất cả các kiểm thử để kiểm tra các kết quả là đúng. Chương trình C# hay VB.Net hiện hữu của bạn bây giờ được chạy với SQL tĩnh! Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 8 của 29 ibm.com/developerWorks/vn/ developerWorks® Thấu hiểu hơn các ứng dụng Java sử dụng SQL Hãy xem SQL nào sẽ được tạo ra mà không cần chạy ứng dụng của bạn Để sử dụng Data Studio Developer 1.2 cho các ứng dụng hiện hữu ở cửa sổ chính pureQuery, bạn đã phải chạy ứng dụng để nhìn thấy SQL đã được tạo ra và để xem nó ở chỗ nào trong mã nguồn. Với Data Studio Developer 2.1, bạn có thể tự động xem nhanh SQL trong ứng dụng của bạn mà không phải chạy ứng dụng. Bạn sẽ có khả năng nhìn thấy bất kỳ SQL được viết thành mã lệnh trong ứng dụng. Bạn có thể chạy ứng dụng để thu thập bất kỳ SQL nào còn lại. Hãy theo các bước sau tại nơi cài đặt Data Studio Developer của bạn: 1. Nhấn phím phải chuột trên myDSDPrj và chọn Show pureQuery outline. 2. Tại cửa sổ chính pureQuery, nhấn vào nút Toggle Profile 3. Chọn phiếu Database. Lưu ý rằng các câu lệnh Cập nhật và Xóa mà chưa được thực hiện, sẽ hiện ra tại cửa sổ chính. Nhấp đúp chuột vào DELETE statement để tới vị trí của nó trong tệp Java. Trong hình ở dưới, bạn có thể thấy rằng nguồn Java phát sinh lệnh DELETE là câu lệnh executeUpdate. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 9 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 7. Xem nhanh tự động vào trong câu lệnh SQL – Phiếu Cơ sở dữ liệu 4. Nhấn chuột vào phiếu Java. Mở rộng myDSDPrj và gói có tên là db2jcc.example. Lưu ý rằng các câu lệnh DELETE và UPDATE mà chưa được thực hiện, sẽ hiện ra trong cửa sổ chính. Lần này, bạn nhấn đúp lên câu lệnh Update và tới vị trí của nó trong tệp Java (trường hợp này sẽ tới câu lệnh JDBC được chuẩn bị sẵn). Bạn lưu ý rằng vị trí thực thi cho câu lệnh được chuẩn bị sẵn cũng được hiện ra tại lệnh executeUpdate của JDBC. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 10 của 29 ibm.com/developerWorks/vn/ developerWorks® Hình 8. Nhìn nhanh tự động vào trong câu lệnh SQL – Phiếu Java Nếu bạn thật sự đang chạy ứng dụng, độ chính xác của vị trí của SQL được cải thiện. Hơn nũa, nó bao gồm bất kỳ SQL nào được xây dựng động. Bạn theo các bước sau tại Data Studio Developer : 1. Mở TutMod.java và xóa dấu chú thích trước lệnh gọi basicUpdate trong phương thức main. 2. Để chạy ứng dụng : 1. Mở pdq.properties đặt captureMode thành ON và thêm enableDynamicSQLReplacement thành false Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 11 của 29 developerWorks® ibm.com/developerWorks/vn/ pdq.captureMode=ON pdq.executionMode=DYNAMIC pdq.enableDynamicSQLReplacement=false 2. Chạy ứng dụng 3. Nhấn phím phải chuột trên myDSDPrj và chọn Show pureQuery outline. 4. Nhấn vào phiếu Java. Mở rộng myDSDPrj và gói có tên db2jcc.example. Lưu ý rằng gợi ý executeUpdate, hiện ra trước đó, bây giờ được thay thế bằng câu lệnh SQL UPDATE thực tế. Hình 9. Chạy ứng dụng để có độ chính xác cao hơn – Phiếu Java Xác định SQL nào sẽ được tạo ra và được tạo ra từ đâu Trước đây, cửa sổ chính pureQuery bị hạn chế ở từng dự án riêng lẻ, vì vậy bạn có thể chỉ nhìn thấy thông tin về SQL được tạo ra từ ứng dụng của bạn ở mức từng dự án. Đối với các ứng dụng trải trên nhiều dự án bạn khó có thể có một bức tranh đầy đủ. Đóng tất cả các dự án trong không gian làm việc mà không thuộc về ứng dụng của bạn. Data Studio Developer 2.1 cung cấp cho bạn tất cả thông tin bạn cần về SQL mà ứng dụng của bạn sẽ tạo ra đối với cơ sở dữ liệu. Trước khi bạn tiếp tục, chúng ta sẽ thêm một số dự án vào ứng dụng của bạn. Data Studio Developer bây giờ cho phép bạn tạo ra mã pureQuery theo khối lớn cho nhiều bảng. Sinh mã từ dưới lên theo khối lớn Tại Data Studio Developer phiên bản 1.2, bạn chỉ có thể sinh mã cho một bảng đơn. Tại phiên bản 2.1, bạn có thể sinh mã từ dưới lên nhanh chóng hơn hơn cho nhiều bảng. 1. Tạo một dự án Java với tên là pdqBulkBottomUp. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 12 của 29 ibm.com/developerWorks/vn/ developerWorks® 2. Chọn bảng DEPARTMENT và EMPLOYEE, nhấn phím phải chuột và chọn Generate pureQuery code. 3. Đặt tên gói và chọn Generate annotated style. Nhấn Next. Hình 10. Sinh mã pureQuery từ hai bảng 4. Đối với bảng DEPARTMENT, chọn phiếu SQL Statements. Chọn Create row by parameters, và Create row by object như hình ở dưới. Nhấn Finish. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 13 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 11. Sinh mã pureQuery - Chọn câu lệnh SQL 5. Bây giờ mã truy nhập dữ liệu có thể được sinh ra cho một số lớn bảng rất nhanh chóng! Chú ý rằng các câu lệnh CRUD của SQL được tạo ra riêng rẽ cho mỗi bảng; điều đó có nghĩa là, mối quan hệ giữa các bảng không được xem xét. 6. Nhấn phím phải chuột trên dự án và chọn Show pureQuery outline để đi sâu vào trong cơ sở dữ liệu và đi sâu vào trong ứng dụng đối với mỗi lệnh SQL. Tìm câu trả lời cho các câu hỏi như: SQL nào sử dụng bảng DEPARTMENT và nó được sử dụng ở đâu trong mã Java? Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 14 của 29 ibm.com/developerWorks/vn/ developerWorks® Hình 12. SQL nào sử dụng một lược đồ hay bảng nhất định và nó được sử dụng ở đâu trong mã Java – Phiếu Cơ sở dữ liệu 7. Nhấn vào phiếu Java; và như bạn muốn, tất cả các dự án đều được nhìn thấy tại cửa sổ chính pureQuery. Bạn có thể đi sâu xuống để tìm mối tương quan từ lớp Java tới SQL trên cơ sở dữ liệu trong ứng dụng của bạn. Tìm câu trả lời các câu hỏi như: SQL nào được lớp Java DepartmentData tạo ra và ở đâu? Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 15 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 13. Câu lệnh SQL được sinh ra bởi lớp Java và ở đâu - Phiếu Java Khám phá câu lệnh SELECT nào được ứng dụng của bạn sử dụng hoặc những câu lệnh SQL nào sử dụng hàm giá trị tuyệt đối (abs) Lọc cửa sổ chính pureQuery để tập trung vào một SQL cá biệt Bạn có thể sử dụng xâu ký tự bất kỳ làm mẫu tìm kiếm để lọc câu lệnh SQL chứa đựng xâu đó. Ví dụ, bạn có thể sử dụng (.*ABS.*) để tìm ra những câu lệnh SQL nào sử dụng hàm abs. Cửa sổ chính PureQuery làm mới lại (refresh) tự động khi cần. Bạn có thể gỡ bỏ lọc cho toàn bộ ứng dụng bằng cách chọn thủ công biểu tượng Refresh with projects in workspace ở ngay sát cạnh biểu tượng Lọc. Bạn có thể tiếp tục làm mới lại thủ công bằng cách sử dụng biểu tượng Refresh project in outline. Trước đây, bạn có thể nhận được thông tin về câu lệnh SQL nào sử dụng cột hay bảng cơ sở dữ liệu khi sử dụng bộ lọc tại cửa sổ chính pureQuery. Dù bạn đang sử dụng APIs của pureQuery hay có các ứng dụng hiện tại đang sử dụng JDBC hay khung công tác, thì Data Studio Developer 2.1 cũng cho phép bạn tập trung vào SQL mà bạn quan tâm bằng cách cho phép tăng cường lọc. Sử dụng khả năng này để tìm ra câu lệnh SQL nào sử dụng một cột cụ thể và câu lệnh nào trong số chúng là câu lệnh SELECT. Bạn cũng biết được những câu lệnh SQL nào sử dụng một hàm nhất định. Bạn theo các bước đơn giản sau : 1. Nhấn vào nút Filter tại cửa sổ chính pureQuery như hình ở dưới. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 16 của 29 ibm.com/developerWorks/vn/ developerWorks® 2. Nhập thông tin lọc (.*SELECT.*) làm mẫu lọc văn bản SQL, rồi chọn OK. (.*SELECT.*) 3. Bây giờ, bạn có thể nhìn thấy tất cả các câu lệnh SELECT từ ứng dụng của bạn tại cửa sổ chính pureQuery sau khi lọc. Hình 14. Khám phá câu lệnh SELECT nào do ứng dụng của bạn tạo ra 4. Bây giờ, để thêm bộ lọc theo tên cột, bạn nhập giá trị lọc <SCHEMA>.STAFF.ID. Bạn có thể nhìn thấy tất cả các câu lệnh SELECT đang sử dụng cột ID trong bảng STAFF. Bạn có thể thấy điều này thật sự giúp đỡ bạn khi phân tích tác động. Đối với tên đối tượng cơ sở dữ liệu, bạn nhập giá trị <schema>.STAFF.ID. Bạn quan sát tất cả các câu lệnh SELECT đang sử dụng cột ID từ bảng STAFF. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 17 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 15. Khám phá câu lệnh SELECT nào sử dụng cột ID Tìm xem câu lệnh SQL nào nằm trong ứng dụng của bạn và câu lệnh nào được gửi tới cơ sở dữ liệu Bạn xem cửa sổ chính pureQuery để tìm mối tương quan giữa SQL trong ứng dụng với SQL đã được gửi tới cơ sở dữ liệu. Chúng ta hãy quan sát SQL mà bạn thay thế trước đó Bạn theo các bước đơn giản sau trong Data Studio : 1. Trong phiếu Cơ sở dữ liệu của cửa sổ chính pureQuery, mở rộng câu lệnh SELECT. Lưu ý rằng SQL được gửi tới cơ sở dữ liệu chính là SQL mà bạn đã thay thế ở bước trên. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 18 của 29 ibm.com/developerWorks/vn/ developerWorks® Hình 16. Xem SQL trong ứng dụng và SQL đã được gửi tới cơ sở dữ liệu Tìm nơi SQL được định nghĩa và được thực hiện Data Studio Developer 1.2 cho thấy những vị trí gần đúng của các câu lệnh SQL trong mã nguồn dựa vào một ngăn xếp các vết. Bây giờ Data Studio Developer 2.1 cung cấp thông tin chính xác hơn cho vị trí của SQL trong ứng dụng của bạn. Bạn đang phân vân liệu SQL được định nghĩa và được thực hiện ở đâu ? Tất cả các tuyến mã lệnh mà gọi cùng một SQL là gì ? Hãy thử các bước đơn giản sau tại nơi cài đặt Data Studio Developer của bạn. 1. Nhấn vào phiếu Java tại cửa sổ chính pureQuery và mở rộng câu lệnh SELECT. Lưu ý rằng bạn có thể nhìn thấy vị trí nơi SQL được xác định (preparedStatement) và nơi nó được thực hiện (executeQuery). 2. Bạn lưu ý rằng các câu lệnh Xóa trỏ tới chính dòng lệnh nơi SQL được chuẩn bị và được thực hiện. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 19 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 17. Xem SQL được định nghĩa ở đâu và được thực thi ở đâu Xem các giá trị của tập hợp kết quả chảy xuyên qua ứng dụng Java như thế nào. Biết thêm nhiều thông tin về việc ứng dụng Java của bạn sử dụng SQL như thế nào. Giá trị cột lấy ra được sử dụng ở đâu? Chúng được gửi quay trở lại cơ sở dữ liệu? Chúng có được in ra không ? Nếu bạn có mã nguồn, bạn có thể truy lần xem các giá trị đang chảy xuyên qua ứng dụng của bạn như thế nào, một khi chúng được trả về trong một tập hợp kết quả. 1. Mở DepartmentData.java, nhấn chuột phải trên DEPTNO và chọn Source Code Analysis, Analyze column value Dependency. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 20 của 29 ibm.com/developerWorks/vn/ developerWorks® 2. Cửa sổ phân tích pureQuery cho thấy giá trị chảy xuyên qua ứng dụng như thế nào. Lưu ý rằng các biểu tượng của cơ sở dữ liệu sáng lên ở nơi giá trị được lấy ra từ cơ sở dữ liệu và được cập nhật tới cơ sở dữ liệu. Hình 18. Xem giá trị cột DEPTNO chảy xuyên qua ứng dụng Java như thế nào Cải thiện năng suất và sự hợp tác giữa các chuyên viên phát triển và các quản trị viên cơ sở dữ liệu. Tạo ra và duyệt tính hợp lệ các tệp bindProps triển khai được Trước đây, các thuộc tính liên kết dùng cho việc triển khai bằng dòng lệnh được tạo ra thủ công. Không có cách nào để chỉ ra nếu các mục bị sai và bạn phải đợi cho đến lúc các lỗi được báo cáo khi triển khai. Các chuyên viên phát triển không có khả năng để dễ dàng kiểm thử các triển khai sử dụng các tệp jar, ear hay war. Phát triển và duyệt tính hợp lệ bindProps với năng xuất cao Bây giờ bạn có thể sử dụng trình đơn Add or Remove Entries (thêm hay loại bỏ mục) trên bất kỳ tệp BindProps hiện hữu nào để duyệt thông qua các mục được liệt kê có còn hợp lệ hay không, ví dụ như một mục được liệt kê tại bindProps đã bị xóa hay đổi tên từ dự án, vì thế mục đó không còn dùng được nữa. Hãy loại bỏ các mục không hợp lệ, chúng hiển thị các biểu tượng báo lỗi cùng các thông tin báo lỗi chi tiết. Bạn có thể dễ dàng xác định các mục nào nào từ dự án của mình bị mất và dễ dàng bổ xung chúng. Bạn sẵn sàng để triển khai chưa? Data Studio Developer 2.1 tăng tốc độ triển khai một cách đáng kể. Hãy tạo một bindProps triển khai được, bảo trì một cách tập trung nhưng có thể được chia sẻ dùng chung trong toàn tổ chức. Data Studio Developer 2.1 cho phép chuyên viên phát triển kiểm tra các bước này để bảo đảm rằng ứng dụng sẵn sàng để triển khai. 1. Nhấn chuột phải trên Default.bindProps và chọn Add remove entries. Chọn com.pdqdemo.EmployeeData và com.pdqdemo.DepartmentData. Hình ở dưới cho ví dụ để bạn biết các mục có thể được dễ dàng quản lý như thế nào. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 21 của 29 developerWorks® ibm.com/developerWorks/vn/ Hình 19. Quản lý dễ dàng các thuộc tính của SQL tĩnh 2. Tiếp theo, để kiểm thử liên kết, nhấn phím phải chuột trên Default.bindProps và chọn bind. Bây giờ bạn đã kiểm tra được rằng bindProps đã sẵn sàng, tạo tệp nén jar của ứng dụng để triển khai. Liên kết các tệp jar triển khai được Một khi ứng dụng được phát triển và được kiểm thử, chúng được nén thành tệp jar để triển khai. Sau đó tệp jar được liên kết tại dòng lệnh. Một lần nữa Data Studio Developer 2.1 lại cho phép các chuyên viên phát triển kiểm thử các bước này để bảo đảm ứng dụng có thể triển khai được. Bây giờ bạn có thể hưởng lợi từ tính năng thông minh, liên kết sẽ được thực hiện chỉ khi cần thiết. Bạn tránh được những liên kết không cần thiết khi triển khai lại một tệp jar khi mà chỉ một tập con của các ứng dụng trong đó có thay đổi. 1. Jar các tệp tại thư mục src và tệp bindprops tại thư mục pureQuery từ dự án pdqBulkBottomUp.. 2. Để liên kết các tệp Jar, nhấn phím phải chuột trên tệp Jar và chọn pureQuery->Bind. Các mục được liệt kê trong bindProps sẽ được liên kết. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 22 của 29 ibm.com/developerWorks/vn/ developerWorks® Nhiều thông tin hơn về các lỗi liên kết được cung cấp Trong Data Studio phiên bản 1.x, các thất bại khi liên kết chỉ hiển thị thông tin rất hạn chế. Bạn không có khả năng xác định gói nào gây ra thất bại liên kết. Sự thiếu thông tin này làm cho việc sửa các vấn đề liên kết trở nên khó hơn. Vấn đề thậm chí còn trở nên khó thêm bởi vì nhiều gói chứa đựng nhiều câu lệnh SQL được liên kết chủ yếu ở lúc triển khai. Bây giờ Data Studio Developer 2.1 cải thiện một cách đáng kể thông tin được cung cấp khi những lỗi liên kết xuất hiện. Phiên bản 2.1 cho phép bạn có nhiều phản hồi hơn về những gói bị thất bại khi liên kết và để xác định nguyên nhân của thất bại nhờ các công cụ của Data Studio Developer và các công cụ dòng lệnh pureQuery runtime. Bây giờ, các liên kết không cần thiết được tránh khi triển khai lại tệp jar nếu chỉ một tập con các ứng dụng trong đó có thay đổi. Tích hợp giữa các công cụ SQL và các công cụ Java nhiều hơn nữa Nếu bạn là một quản trị viên cơ sở dữ liệu sử dụng các công cụ tạo SQL để tạo ra các câu lệnh SQL hay đơn giản chỉ sử dụng bộ biên tập SQL, thì bây giờ bạn có thể dễ dàng tạo mã pureQuery. Từ bộ tạo SQL, bạn lưu SQL bằng tệp .sql. Sau đó bạn chỉ nhấn phím phải chuột trên tệp .sql hay trên bộ biên tập SQL đang mở và chọn Generate pureQuery code. Thủ thuật cho phép bạn tạo ra một cách hiệu quả tầng truy nhập dữ liệu pureQuery cho tất cả các câu lệnh SQL trong tệp của bạn. Nếu bạn là chuyên viên phát triển Java và có tệp .sql từ các quản trị viên cơ sở dữ liệu, bạn có thể dễ dàng tạo mã pureQuery cho tất cả SQL trong tệp này bên trong dự án dùng pureQuery của mình. Bạn cũng có thể sử dụng điều này để dễ dàng di trú chuyển từ các ứng dụng JDBC hiện hữu hay các ứng dụng đang sử dụng khung công tác thành ứng dụng với API của pureQuery. Bạn chỉ cần xuất SQL từ cửa sổ chính pureQuery thành một tệp .sql trong dự án của bạn hay mở tệp đó trong bộ biên tập SQL. Sau đó nhấn phím phải chuột trên tệp .sql hay mở nó ra trong bộ biên tập SQL và chọn Generate pureQuery code. Chọn vị trí của runtime pureQuery để sử dụng trong Data Studio Developer. Trước khi có Data Studio Developer 1.2, bạn không thể dễ dàng sử dụng pureQuery runtime đã được cài đặt mà không phải thao tác thủ công nhiều bước. Hãy trỏ Data Studio Developer 2.1 tới vị trí cài đặt runtime pureQuery bằng các bước sau: 1. Từ cửa sổ mức đỉnh Window->preferences bạn chọn Data Management -> SQL Development -> pureQuery. 2. Nhập vị trí nơi mà các tệp jar của pureQuery runtime được lưu trữ vào mục pureQuery Runtime Location. Chia sẻ thông tin kết nối cơ sở dữ liệu tới mọi công cụ Trước khi có Data Studio Developer 1.2, bạn phải tạo các kết nối cơ sở dữ liệu một cách riêng rẽ trong tất cả các công cụ dựa trên Eclipse của Data Studio Developer. Bây giờ, bạn có thể thực hiện các định nghĩa cơ sở dữ liệu trong một công cụ và chia sẻ chúng với những công cụ khác. Hãy nhập các kết nối được chia sẻ và hưởng lợi khi sử dụng lại! Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 23 của 29 developerWorks® ibm.com/developerWorks/vn/ Dễ dàng di chuyển các dự án pureQuery từ Data Studio Developer phiên bản 1.x tới Data Studio Developer phiên bản 2.1 Các kết nối hiện hữu của bạn từ các không gian làm việc tại các phiên bản cũ của Data Studio sẽ được di chuyển tự động khi không gian làm việc được mở tại Data Studio Developer phiên bản 2.1. Bạn chỉ cần chọn Windows->Reset perspective để đặt lại phối cảnh của Data Studio Developer 2.1. Để di chuyển runtime pureQuery từ các dự án hiện hữu của bạn, bạn sử dụng trình đơn Upgrade project trên dự án của mình. Tham khảo mục <note pointer> để có thêm chi tiết về thao tác xử lý này. Giảm bớt hay loại trừ các nguy cơ “mũi tiêm SQL” đối với các ứng dụng cơ sở dữ liệu với Java Hành động trước để giảm bớt nguy cơ mũi tiêm SQL Khi phát lệnh SQL tới cơ sở dữ liệu, hạn chế chỉ dùng các SQL quen biết đã được chấp nhận từ trong tệp pdqxml đã thu thập được. 1. Chạy ứng dụng của bạn, sử dụng các thuộc tính sau đây trong pdq.properties. Tất cả SQL đã chạy sẽ được bắt giữ lại trong tệp capture.pdqxml trong thư mục pureQuery captureMode=ON executeMode=DYNAMIC pureQueryXML=pureQueryFolder/capture.pdqxml capturedOnly=false 2. Khi bạn hoàn thành việc thu thập tất cả các SQL từ nhiều lần chạy ứng dụng của mình thì bạn đã sẵn sàng để hạn chế SQL. Mở pdq.properties và đặt các thuộc tính sau đây: captureMode=OFF capturedOnly=true 3. Bây giờ, chỉ có các lệnh SQL đã thu thập được mới thực hiện được, bất kể là động hay tĩnh. Tóm tắt Cải thiện năng suất của chuyên viên phát triển một cách đáng kể để xây dựng các ứng dụng sẵn sàng áp dụng thực tế. Tăng năng lực cho chuyên viên phát triển để tạo ra các ứng dụng tốt hơn và hợp tác với các quản trị viên cơ sở dữ liệu để giảm bớt các vấn đề hiệu năng nghiêm trọng trong áp dụng thực tế. Sử dụng SQL tĩnh để giảm bớt tỷ lệ sử dụng CPU/giao dịch trên các máy chủ của DB2 và có tăng trưởng thêm từ các đầu tư phần cứng và phần mềm hiện tại. Bảng 1 tổng kết hỗ trợ các đặc tính của phiên bản 2.1 theo các nền cơ sở dữ liệu: Bảng 1. Hỗ trợ đặc tính theo nền cơ sở dữ liệu Đặc tính Giúp cho các chuyên viên Có phát triển có thêm thông tin để tập trung vào nỗ lực tinh chỉnh SQL • Nhận diện câu lệnh SQL nào cần nhiều thời gian nhất hay câu lệnh nào được thực hiện thường xuyên nhất trong ứng dụng của bạn DB2 cho LUW IDS Có Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM DB2 cho z/OS Có DB2 cho iSeries Có Trang 24 của 29 ibm.com/developerWorks/vn/ developerWorks® • Tinh chỉnh và tối ưu hóa ứng dụng của bạn mà không thay đổi mã – câu lệnh SQL không tĩnh. Giúp cho các chuyên viên Có phát triển có thêm thông tin để tập trung vào nỗ lực tinh chỉnh SQL • Tinh chỉnh và tối ưu hóa ứng dụng của bạn mà không thay đổi mã – Sử dụng câu lệnh SQL tĩnh. Không Có Có Cải thiện chất lượng dịch vụ cho OpenJPA thông qua SQL tĩnh Không Có Có Có Thấu hiểu hơn các ứng dụng Java sử dụng SQL • Tôi có thể thấy câu lệnh SQL nào sẽ được tạo ra mà không phải chạy ứng dụng của mình? • Tôi có thể thấy câu lệnh SQL nào sẽ được tạo ra và nhận được các phân tích “dùng ở đâu” cho toàn bộ ứng dụng? • Các câu lệnh SELECT được ứng dụng của tôi sử dụng là gì? Câu lệnh SQL nào sử dụng hàm giá trị tuyệt đối (abs)? • SQL trong ứng dụng của tôi là gì? SQL nào được gửi tới cơ sở dữ liệu? • SQL được định nghĩa ở đâu? Nó được thực hiện ở đâu? • Các giá trị của tập kết quả chảy qua ứng dụng Java như thế nào? Có Có Có Có Cải thiện năng suất và sự hợp tác giữa các chuyên viên phát triển và các quản trị viên cơ sở dữ liệu – các đặc tính về SQL tĩnh • Tạo ra và duyệt tính hợp lệ của tệp bindProps triển khai được • Liên kết các tệp jar triển khai được • Nhiều thông tin hơn về các lỗi liên kết được cung cấp Không Có Có Có Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 25 của 29 developerWorks® ibm.com/developerWorks/vn/ Có Cải thiện năng suất và sự hợp tác giữa các chuyên viên phát triển và các quản trị viên cơ sở dữ liệu – Các đặc tính về SQL không tĩnh • Tích hợp hơn nữa giữa các công cụ SQL và các công cụ Java • Chọn vị trí của runtime pureQuery để sử dụng trong Data Studio Developer • Chia sẻ thông tin kết nối cơ sở dữ liệu tới mọi công cụ • Dễ dàng di chuyển các dự án pureQuery từ Data Studio Developer phiên bản 1.x tới Data Studio Developer phiên bản 2.1 Có Có Có Có Giảm bớt hay loại trừ các nguy cơ “mũi tiêm SQL” đối với các ứng dụng cơ sở dữ liệu với Java Có Có Có Không có lý do gì để không sử dụng Data Studio Developer và Data StudiopureQuery Runtime 2.1. Sau đây là các thông tin về tải tư liệu Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 26 của 29 ibm.com/developerWorks/vn/ developerWorks® Các tải về Mô tả Tên Các đoạn lệnh mẫu cho bài báo này Kích thước TutMod.java 11KB Các đoạn lệnh mẫu cho bài báo này Util.java 11KB Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 27 của 29 developerWorks® ibm.com/developerWorks/vn/ Tài nguyên Học tập • Lấy các tài liệu cần thiết để nâng cao kỹ năng của bạn trên Data Studio tại Vùng các bài viết về Data Studio trên developerWorks.. • Các đoạn video về các điểm mới của Data Studio 2.1: Lấy thêm các thông tin chi tiết về đặc tính mới nhất của Data Studio • "Những điểm mới và lý thú của Data Studio Developer phiên bản 1.2 của IBM" (developerWorks, tháng 8, 2008): Khám phá các đặc tính trong phiên bản, các đặc tính này có thể làm cho công việc của bạn được thực hiện nhanh chóng và dễ dàng hơn, bao gồm các khả năng độc nhất vô nhị về cô lập vấn đề và phân tích tác động, khả năng nâng lên SQL tĩnh cho bất kỳ ứng dụng JDBC hiện hữu nào, tăng cường sự phát triển và quản trị SQL tĩnh, dịch vụ Web và nhiều vấn đề khác nữa. Lấy sản phẩm và công nghệ • Tải IBM Data Studio Developer 2.1 để thử các kịch bản được mô tả trong bài báo này. • Bây giờ bạn có thể sử dụng miễn phí DB2. Tải DB2 Express-C, phiên bản miễn phí của DB2 Express Edition dùng cho cộng đồng, có cùng những đặc tính dữ liệu cốt lõi như DB2 Express Edition và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng. • Tải Các phiên bản đánh giá của các sản phẩm của IBM và hãy thử dùng các công cụ phát triển ứng dụng và các sản phẩm phần mềm trung gian (middleware) thuộc họ quản lý thông tin của IBM, Lotus®, Rational®, Tivoli® và WebSphere®. Thảo luận • Không gian Cộng đồng Data Studio trên developerWorks. • Blog của nhóm Data Studio trên developerWorks. • Hãy duyệt kho sách công nghệ để tìm sách về đề tài này và các đề tài kỹ thuật khác. Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 28 của 29 ibm.com/developerWorks/vn/ developerWorks® Đôi nét về các tác giả Sonali Surange Sonali Surange là người lãnh đạo nhóm công cụ pureQuery của Data Studio IBM, thuộc tổ chức Công cụ của máy chủ dữ liệu của IBM tại Phòng thí nghiệm Thung lũng Silicon của IBM, tại San Jose, California. Trước đó Sonali đã lãnh đạo công tác phát triển một vài bộ phận quan trọng của phần công cụ của Visual Studio .Net cho cơ sở dữ liệu của IBM Zeus Courtois Zeus Courtois là kỹ sư trong đội Data Studio Development, làm việc về các công cụ của pureQuery tại Phòng thí nghiệm Thung lũng Silicon của IBM. Trước khi gia nhập đội phát triển, Zeus là thực tập viên trong đội Data Studio Enablement. Zeus có bằng Thạc sĩ về Hệ thống thông tin của Trường Đại học Quốc tế A&M, bang Texas © Copyright IBM Corporation 2009 (www.ibm.com/legal/copytrade.shtml) Nhẫn hiệu đăng ký (www.ibm.com/developerworks/vn/ibm/trademarks/) Những điểm mới và lý thú trong sản phẩm Data Studio Developer 2.1 của IBM Trang 29 của 29