PDF:

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