Di chuyển một ứng dụng PHP từ MySQL sang DB2, Phần 3: Chuyển đổi mã PHP của bạn doc

22 376 1
Di chuyển một ứng dụng PHP từ MySQL sang DB2, Phần 3: Chuyển đổi mã PHP của bạn doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Di chuyển ứng dụng PHP từ MySQL sang DB2, Phần 3: Chuyển đổi mã PHP bạn Giới thiệu loạt MySQL máy chủ sở liệu phổ biến sử dụng với ngơn ngữ lập trình PHP để xây dựng ứng dụng web động Tuy nhiên, DB2 sở liệu phổ biến khác PHP hỗ trợ đầy đủ cung cấp lợi hấp dẫn so với MySQL, làm cho trở thành lựa chọn lý tưởng cho nhiều ứng dụng Loạt mô tả việc di chuyển ứng dụng PHP sang DB2 lại có ý nghĩa, cách chuẩn bị cho việc di trú, cách thực nó, cách hỗ trợ nó, cách xử lý rủi ro tiềm dựa kinh nghiệm tác giả cho di trú Nhiều mẫu mã mẫu cấu hình cung cấp, dẫn tài nguyên để giúp cho dự án chạy trơn tru Với ví dụ học thu từ việc chuyển đổi thực tế thành cơng, bạn thấy dự án đơn giản, có đủ tài liệu cung cấp lợi ích hấp dẫn Loạt bốn phần chia sẻ học nhận từ di trú MySQL-sang-DB2 thành công cho ứng dụng mạng nội PHP trọng yếu, cấp độ sản xuất, 4.000 người dùng toàn cầu IBM sử dụng để hỗ trợ sản xuất nội dung cho ibm.com     Phần mô tả bước cần thực để chuẩn bị cho việc di trú Phần mô tả bước cần thực để di trú sở liệu Phần mô tả bước cần thực để chuyển đổi mã PHP Phần mô tả bước cần thực để triển khai hỗ trợ ứng dụng Bạn học Mục đích loạt cho bạn hiểu thường cần thiết để di trú ứng dụng PHP từ MySQL sang DB2, tài nguyên có sẵn để trợ giúp bạn nhóm dự án IBM thực nhiệm vụ vào đầu năm 2010 Nếu bạn nghiên cứu di trú từ MySQL sang DB2, bạn thấy giá trị mà DB2 cung cấp dựa tài liệu sản phẩm, đánh giá tiêu chuẩn hiệu năng, tính mà bạn đọc tài liệu DB2, so sánh Sách Đỏ IBM (IBM Redbooks ®) dành riêng cho nhiệm vụ này, bao gồm Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên ) Bạn có lẽ biết DB2 Express-C máy chủ liệu quan hệ có đủ chức năng, miễn phí dễ dàng cài đặt đánh giá cách sử dụng IBM SmartCloud (tên cũ Development and Test on the Cloud - Phát triển Thử nghiệm Đám mây IBM) Amazon EC2 Các liên kết đến tài nguyên có sẵn phần Tài nguyên Loạt cung cấp cho bạn ví dụ cụ thể di trú thực tế thực thành công năm 2010 cho ứng dụng mạng nội PHP sử dụng nhiều IBM để hỗ trợ quản lý nội dung hàng ngày công bố nhiều phần trang Web ibm.com Sau bạn đọc xong loạt này, bạn tạo trường hợp di trú tương tự, hiểu thời hạn phụ thuộc mục công việc cần thực hiện, dự kiến rủi ro tiềm năng, biết nơi để tìm kiếm hỗ trợ bước đường Tất điều cho bạn tự tin để lựa chọn DB2 sử dụng cách tốt cho ứng dụng PHP bạn phát triển MySQL Những khơng trình bày Loạt nhằm chia sẻ học thu từ di trú nội IBM từ MySQL sang DB2 cung cấp cho bạn thông tin tài ngun có sẵn để thực cơng tương tự Loạt hướng dẫn tồn diện di trú để áp dụng cho tất kịch Để xác định cách tiếp cận phù hợp với bạn, tham khảo Hướng dẫn chuyển đổi MySQL sang DB2 liên hệ với SMPO (Software Migration Project Office - Văn phòng dự án di trú phần mềm) để đánh giá di trú miễn phí Các liên kết cung cấp phần Tài nguyên Về đầu trang Giới thiệu việc di trú mã Bài trình bày năm bước làm việc nghiên cứu chi tiết để thực di trú mã ứng dụng PHP từ chỗ sử dụng trình điều khiển cú pháp MySQL tới chỗ làm việc với DB2 Nếu cần, tham khảo Phần loạt để xem lịch trình bước trình di trú tổng thể trước tiến hành chuyển đổi Bước 1: Bắt đầu bước chuyển di trú mã     Đảm bảo cập nhật cấu hình PHP để hỗ trợ DB2 Cập nhật câu lệnh SQL riêng lẻ để hỗ trợ cú pháp DB2 Mô hàm MySQL nguyên gốc cách sử dụng hàm DB2 người dùng định nghĩa, cần Di chuyển logic xử lý từ SQL vào PHP, cần Bước 2: Bắt đầu bước chuyển thứ hai di trú mã   Xem xét thay đổi cần thiết để hỗ trợ mức cách ly thích hợp Tổ chức lại truy vấn thành đơn vị cơng việc logic để đạt tính toàn vẹn liệu tốt cải thiện hiệu Bước 3: Bắt đầu thử nghiệm trường hợp sử dụng nghiệp vụ khởi đầu với bên liên quan   Phối hợp bên liên quan để thực trường hợp sử dụng quen thực hệ thống cũ Nắm bắt thất bại kiểm thử khiếm khuyết cần nhà phát triển phân tích sửa chữa Bước 4: Giải nút nghẽn cổ chai xác nhận dựa vào vạch chuẩn chức    Cải thiện hiệu hệ thống dựa vào phản hồi người dùng sau kiểm tra chức Tập trung vào DB2 sửa chữa tự động cho bạn, DB2 thay đổi lớn mà bạn đưa vào Giải nút nghẽn cổ chai PHP cách xem xét cách sử dụng tài nguyên hệ điều hành Bước 5: Đánh giá vạch chuẩn di trú mã    Sau hoàn thành theo cách lặp lại bước trên, khai báo hoàn thành việc chuyển đổi mã Sao lưu hệ thống gắn thẻ mốc quan trọng hệ thống kiểm soát mã nguồn bạn Đánh giá mức độ chuẩn bị cần thiết cho nhiệm vụ tiếp theo: triển khai ứng dụng Về đầu trang Tìm hiểu nghiên cứu chi tiết ví dụ sở mã PHP PTT có Nhắc nhở Nếu cần, tự tìm hiểu phần Tài ngun giúp ích việc di trú bạn Các tài nguyên sau đặc biệt có ích cho bước này:     Chương 10 Sách Đỏ miễn phí IBM (IBM Redbook ®) Hướng dẫn chuyển đổi MySQL sang DB2 Chương Sách Đỏ miễn phí IBM Phát triển ứng dụng PHP cho Các máy chủ liệu IBM Bài viết developerWorks "Danh sách khuyến khích đọc: Phát triển ứng dụng DB2 cho Linux, UNIX, Windows" Các mục blog Daniel Krook kinh nghiệm cá nhân ông dự án di trú cho ISV Tất nhiên tài liệu ngơn ngữ lập trình PHP phần mở rộng trình điều khiển DB2 phương tiện cần thiết Một lựa chọn khác sử dụng đám mây cho q trình di trú Bạn sử dụng Linux EC2 Amazon AMI DB2, đăng ký dùng IBM SmartCloud (tên cũ Development and Test on the Cloud - Phát triển Thử nghiệm Đám mây IBM)(xem phần Tài nguyên ) Với ứng dụng ví dụ này, mã nguồn cho Project Tracking Tool (PTT - Công cụ theo dõi dự án) bao gồm hàng trăm tệp PHP Cơ sở mã có thư viện hàm, mã hướng-đối tượng tổ chức thành đối tượng truyền liệu lớp trình quản lý, đoạn khn mẫu HTML khác trình trợ giúp để biểu giao diện người dùng Cơ sở liệu PTT sử dụng với hàm khác để hỗ trợ luồng công việc cung cấp thông tin cơng bố ibm.com Hơn 4.000 người dùng tồn giới truy cập sửa đổi sở liệu PTT thông qua mặt tiền web PHP Tại thời điểm nào, có hàng trăm người dùng hoạt động đồng thời hệ thống Mã triển khai vào máy chủ web Apache, nạp tệp mod_php mô đun chia sẻ Trong ví dụ này, mã có cập nhật cho hệ thống DB2 mới, chủ yếu cách thực sửa đổi với SQL nhúng Các sửa đổi nhỏ khác bắt buộc phải làm cập nhật cấu hình PHP để sử dụng trình điều khiển DB2 điều chỉnh mã kết nối sở liệu, sử dụng chuỗi kết nối Bài xác định tập trung vào số cải tiến cấu trúc ứng dụng để hoàn thiện khung kiến trúc mơ hình-khung nhìn-trình điều khiển (MVC) nhằm cải tiến chất lượng, tổ chức bảo trì ứng dụng Về đầu trang Cài đặt phần mềm chuyển đổi Để chuẩn bị cho việc chuyển đổi mã ví dụ, cài đặt thành phần sau máy trạm Windows sử dụng để thực bước chuyển đổi Một phiên MySQL sở liệu nguồn Để kiểm tra thay đổi mã, điều quan trọng có hệ thống cũ sẵn sàng để sử dụng làm tham chiếu chức để xác nhận hợp lệ thay đổi cho hệ thống bên cạnh hệ thống cũ Bạn sử dụng hệ thống bạn làm Phần Một phiên DB2 với trình điều khiển máy chủ liệu cài đặt cục máy chủ thử nghiệm Cài đặt DB2 để tạo sở liệu đích máy trạm Nói chung, sở liệu không thiết ấn giống sở liệu sử dụng sản xuất, để tương thích tính hồn tồn, ý tưởng tốt nên chọn ấn Để làm theo ví dụ này, cài đặt Ấn máy chủ doanh nghiệp DB2 (DB2 Enterprise Server Edition) Phiên 9.7.2 Đảm bảo trình điều khiển máy chủ liệu có sẵn để cung cấp thư viện khách PHP cần thiết Bạn sử dụng hệ thống bạn làm Phần Một phiên PHP xây dựng với phần mở rộng ibm_db2 PDO_IBM (PHP Data Objects) Tải phiên Zend Server chọn phần mở rộng DB2 tùy chọn, có u cầu cài đặt gói bổ sung Một mơi trường phát triển tích hợp (IDE), ví dụ Zend Studio Các công cụ phát triển PHP (PDT) Eclipse Sử dụng IDE nhận biết-PHP, ví dụ Zend Studio Các công cụ phát triển PHP Eclipse, để dễ dàng phát triển PHP bạn Vì bạn trì ứng dụng PHP, nên nhiều khả bạn có cơng cụ ưa thích Hãy chắn ghi lại chi tiết định cấu hình học thu bạn bạn lặp lại bước triển khai Xem xét việc ghi lưu ảnh chụp hệ điều hành Windows thành ảnh ảo cột mốc đạt đích quan trọng để dùng lưu cấu hình vạch chuẩn để so sánh cải thiện tiếp mã lệnh Nếu bạn muốn chụp ảnh cấu hình máy tính vật lý, bạn làm điều VMware vCenter Converter miễn phí Một cách thay khác xem xét dùng đám mây cho thay đổi động Bạn sử dụng AMI DB2 cho EC2 Amazon, bạn đăng ký dùng IBM SmartCloud (tên cũ Development and Test on the IBM Cloud) Với máy tính ảo, bạn tránh cố gắng ban đầu để mua phần cứng máy chủ cài đặt hệ điều hành DB2, điều tiết kiệm thời gian, tăng tốc độ di trú, mang lại cho bạn tự tin để trải nghiệm với cấu hình phù hợp cho nhu cầu bạn Có thể tìm thấy liên kết đến tất sản phẩm phần Tài nguyên Về đầu trang Bước 1: Bắt đầu bước chuyển di trú mã Bước chuyển đổi mã quan trọng cấu hình sở hạ tầng PHP DB2 chuyển đổi cách ứng dụng sử dụng PHP SQL để truy cập liệu Bước liên quan đến bước nhỏ sau:     Cập nhật cấu hình trình điều khiển PHP Chuyển đổi cú pháp SQL Tạo hàm người dùng định nghĩa để mô MySQL Di chuyển logic từ SQL vào PHP, cần Cập nhật cấu hình trình điều khiển PHP Đảm bảo cấu hình PHP có sửa đổi để hỗ trợ trình điều khiển DB2, để khớp với mã hóa ký tự sở liệu máy chủ để cung cấp thơng báo chẩn đốn quan trọng thông qua cảnh báo thông báo lỗi đầy đủ chi tiết Để cập nhật mã PHP cho DB2, bạn thường thay đổi điểm mã hàm mở rộng ibm_db2 sử dụng cập nhật chuỗi kết nối PDO_IBM để thực giao diện PDO (Các đối tượng liệu PHP) Nếu bạn sử dụng PDO thư viện trừu tượng hóa sở liệu hệ thống dựa MySQL mình, thay đổi mã bạn khơng đáng kể Đó vấn đề thay đổi chuỗi kết nối Nhưng cho dù bạn sử dụng phần mở rộng thủ tục ibm_db2, nhiệm vụ đơn giản Bạn thay bình thường hàm bắt đầu với mysql_ mysqli_ mã bạn tiền tố db2_ tương đương Xem phần 6.3 Chương Phát triển ứng dụng PHP cho máy chủ liệu IBM Sách Đỏ IBM (xem phần Tài nguyên) để biết bảng ánh xạ tương ứng hàm mã mẫu Cả hai phương thức kết nối dựa vào máy khách DB2 làm cầu nối để nối đến máy chủ DB2, bạn cần xác nhận máy khách DB2 cấu hình khớp với thiết lập máy chủ từ xa Cụ thể, bạn cần đảm bảo chắn trang mã ký tự máy khách DB2 giống trang mã ký tự máy chủ DB2, khơng, bạn gặp khó khăn với ký tự Với ví dụ này, chạy lệnh hiển thị Liệt kê để thiết lập mã hóa ký tự máy khách UTF-8, phù hợp với lệnh CREATE DATABASE Liệt kê Phần Liệt kê Thiết lập trang mã máy khách DB2 thành UTF-8 db2set db2codepage=1208 Để đảm bảo thiết lập sử dụng máy trạm máy chủ mà bạn cài đặt máy khách thời gian chạy, chạy lệnh Liệt kê Liệt kê Xem biến cấu hình DB2 db2set -all Cuối cùng, trình phát triển, có ích đảm bảo tất thông báo cảnh báo lỗi thu giữ hiển thị trình duyệt Trong tệp php.ini bạn, cập nhật tham số hiển thị Liệt kê Hãy nhớ đặt chúng trở lại thiết lập dài dịng bạn chuyển sang sản xuất Phần loạt cung cấp ví dụ chế báo cáo lỗi thích hợp để sử dụng bạn triển khai vào sản xuất Liệt kê Thiết lập tham số kiểm soát lỗi php.ini display_errors = On error_reporting = E_ALL & ~E_NOTICE Chuyển đổi cú pháp SQL Tiếp theo, cập nhật câu lệnh SQL riêng lẻ để hỗ trợ cú pháp DB2 thay đổi chúng để truy cập liệu theo cách khác chút để đạt kết tương tự Đối với hầu hết ứng dụng, bước cần nhiều lần cập nhật mã kiểm tra thử nghiệm Tham khảo Chương 8.1 điểm giống khác Ngôn ngữ thao tác liệu Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 để xem danh sách phép chuyển đổi cú pháp phổ biến Sau vài tình ứng dụng nghiên cứu chi tiết Cách xử lý ký tự đại diện mệnh đề SELECT Các câu lệnh SELECT sử dụng ký tự đại diện (ký tự dấu hoa thị) để chọn cột cụ thể bên cạnh tất cột nhiều bảng hợp pháp MySQL, chúng lại không phép DB2 Trong trường hợp này, thêm tên bảng (hoặc bí danh) đầy đủ vào trước ký tự đại diện, rõ cột bảng mà bạn quan tâm đến đơn giản liệt kê tất cột bảng với ký tự đại diện Liệt kê cho thấy cách sửa đổi truy vấn Liệt kê So sánh ký tự đại diện cột bảng hợp pháp MySQL DB2 In MySQL: SELECT R.NAME, * FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID; In DB2: SELECT R.NAME, U.* FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID; Or SELECT R.NAME, U.ID, U.NAME, U.ROLE_ID, U.DEPART_ID FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID; Mệnh đề SELECT quy định cụ thể kích thước tối đa tập kết với LIMIT LIMIT (Giới hạn) từ khóa không chuẩn, MySQL quy định cụ thể số lượng tối đa hàng trả từ truy vấn DB2 sử dụng cú pháp FETCH FIRST n ROWS ONLY cho mục đích Liệt kê cho bạn thấy cách viết lại truy vấn với DB2 Liệt kê Quy định số lượng tối đa hàng trả từ truy vấn MySQL DB2 In MySQL: SELECT * FROM ROLE LIMIT 10; In DB2: SELECT * FROM ROLE FETCH FIRST 10 ROWS ONLY; Mệnh đề GROUP BY MySQL cho phép sử dụng mệnh đề GROUP BY không rõ tên cột không sử dụng hàm tổng hợp danh sách cột Nhưng DB2, điều khơng hợp lệ, tập kết có mức mơ hồ khơng thể chấp nhận nhiều người sử dụng Liệt kê cho thấy cách quy định rõ cột truy vấn với DB2 Liệt kê So sánh phép gộp GROUP BY hợp pháp MySQL DB2 In MySQL: SELECT R.ID, R.NAME, COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.ID; In DB2: SELECT R.ID, MIN(R.NAME), COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.ID; Or SELECT R.ID, R.NAME, COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.ID, R.NAME; Trong Liệt kê 6, bạn cập nhật GROUP BY, hai R.ID R.NAME khóa bảng Liệt kê cho thấy loại truy vấn GROUP BY khác xử lý đơn giản truy vấn Liệt kê Liệt kê GROUP BY không rõ ràng MySQL cần sửa đổi cho DB2 In MySQL: SELECT R.ID, R.NAME, COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.NAME; Trong trường hợp này, R.ID bảng, R.NAME khơng Nếu có giá trị R.NAME bảng ROLE, bạn thay R.ID MIN(R.ID) bạn thêm R.ID vào mệnh đề GROUP BY Cách bạn chuyển đổi SQL phụ thuộc vào bạn mong đợi kết dạng Liệt kê cho thấy vài tùy chọn cho tình Liệt kê Truy vấn GROUP BY dịch DB2 In DB2: Option 1, if you want to get same result as what you get in MySQL, the SQL is: SELECT (SELECT RL.ID FROM ROLE RL WHERE RL.NAME = R.NAME FETCH FIRST ROW ONLY) AS ID, R.NAME, COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.NAME; Option 2, if role name is same, treat it as same role In this case, the result is a little different from MySQL version in that there is no R.ID: SELECT R.NAME, COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.NAME; Option 3, if role ID is different, treat them as different role In this case, the result is totally different than the MySQL version: SELECT R.ID, R.NAME, COUNT(U.ID) AS NUM FROM USER U, ROLE R WHERE U.ROLE_ID = R.ID GROUP BY R.ID, R.NAME; REPLACE INTO MySQL so với MERGE DB2 MySQL cung cấp mệnh đề REPLACE INTO DB2 cung cấp mệnh đề MERGE cho mục đích tương tự, khơng tương đương Để đạt kết tương đương, tạo ghi thay ghi có có khóa giống giá trị Liệt kê cho thấy cách kiểm tra giá trị bảng cập nhật chèn giá trị Liệt kê Dịch cú pháp REPLACE INTO MySQL sang DB2 In MySQL: REPLACE INTO ROLE (ID, NAME, DESCRIPTION) SELECT ID, NAME, DESCRIPTION FROM ROLE_TMP; In DB2: MERGE INTO ROLE R USING (SELECT ID, NAME, DESCRIPTION FROM ROLE_TMP) RT ON (R.ID = RT.ID) WHEN MATCHED THEN UPDATE SET (ID, NAME, DESCRIPTION) = (RT.ID, RT.NAME, RT.DESCRIPTION) WHEN NOT MATCHED THEN INSERT (ID, NAME, DESCRIPTION) VALUES (RT.ID, RT.NAME, RT.DESCRIPTION); Mệnh đề JOIN Khi thực phép nối (join) với cặp bảng đồng thời lấy liệu từ bảng thứ ba, rõ bảng sử dụng cho phép nối kề bên cạnh từ khóa JOIN DB2 MySQL cho phép chúng liệt kê theo thứ tự Liệt kê 10 cho thấy thay đổi cần thiết Liệt kê 10 So sánh cú pháp JOIN MySQL DB2 Both of the following work in MySQL: SELECT * FROM USER U, ROLE R LEFT JOIN DEPARTMENT D ON U.DEPT_ID = D.ID; Or SELECT * FROM ROLE R, USER U LEFT JOIN DEPARTMENT D ON U.DEPT_ID = D.ID; Only this one works in DB2: SELECT * FROM ROLE R, USER U LEFT JOIN DEPARTMENT D ON U.DEPT_ID = D.ID; Các ký tự thoát Ký tự \ biểu diễn dấu gạch chéo ngược mã thoát áp dụng cho dấu nháy đơn ' MySQL, DB2, dấu nháy đơn phải áp mã thoát cách thêm dấu nháy đơn khác " (hai dấu nháy đơn) Liệt kê 11 cho thấy ví dụ dãy mã thoát cho chuỗi ký tự sử dụng dấu nháy đơn dấu móc lửng Liệt kê 11 MySQL sử dụng dấu gạch chéo ngược để áp mã thoát cho dấu nháy đơn, DB2 sử dụng dấu nháy đơn thứ hai In MySQL: SELECT * FROM ROLE WHERE DESCRIPTION = 'It\'s a super admin role'; In DB2: SELECT * FROM ROLE WHERE DESCRIPTION = 'It''s a super admin role'; Kiểm tra phạm vi DB2 MySQL không bắt buộc phạm vi cho kiểu liệu mệnh đề SELECT, DB2 có Do SQL hiển thị Liệt kê 12 để truy vấn thông tin khoảng thời gian từ 01.02 30.02 không làm việc DB2, làm việc MySQL Liệt kê 12 MySQL không kiểm tra dải giá trị cho mệnh đề WHERE dựa vào kiểu liệu MySQL allows you to specify February 30th as part of the range SELECT * FROM USER WHERE BIRTHDAY BETWEEN '1980-02-01' AND '1980-02-30'; CHÈN vào cột NOT NULL không cần giá trị mặc định Trong MySQL, bạn cố gắng thực câu lệnh INSERT mà không cung cấp giá trị cho cột NOT NULL, lệnh thành công MySQL tự động điền vào giá trị mặc định, bạn chưa định nghĩa giá trị mặc định cho cột tạo bảng Tuy nhiên, DB2, bạn phải cung cấp giá trị cho cột NOT NULL câu lệnh INSERT chưa đinh nghĩa giá trị mặc định Các câu lệnh SQL Liệt kê 13 cho thấy hành vi xử lý khác Liệt kê 13 MySQL DB2 xử lý chèn giá trị NULL cách khác Works in both MySQL and DB2 CREATE TABLE TEST1 (ID INTEGER, NAME VARCHAR(20) NOT NULL); Works in MySQL, doesn't work in DB2 INSERT INTO TEST1 (ID) VALUES(1); Works in both MySQL and DB2 CREATE TABLE TEST2 (ID INTEGER, NAME VARCHAR(20) NOT NULL DEFAULT ''); Works in both MySQL and DB2 INSERT INTO TEST2 (ID) VALUES(1); Sử dụng chế độ tương thích DB2 Trong bạn mơ số cú pháp MySQL cách sử dụng hàm người dùng định nghĩa, có lựa chọn khác thiết lập chế độ tương thích dành cho phiên DB2 sau phiên 9.7.2 Đọc thêm kích hoạt cú pháp LIMIT OFFSET blog Antonio Cangiano Chuyển đổi hàm MySQL thành hàm tương tự DB2 Bên cạnh SQL đặc thù riêng MySQL, bạn sử dụng hàm MySQL dựng sẵn Bạn thay hàm hàm SQL tiêu chuẩn hàm tương đương có sẵn DB2 Tham khảo Phụ lục A: Ánh xạ hàm dựng sẵn toán tử MySQL Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) Như vừa mô tả, bạn khơng thể tìm thấy hàm tương đương DB2, bạn viết lại SQL để truy cập liệu theo cách khác Ngoài ra, bạn chọn mơ hàm DB2 di chuyển logic vào mã PHP mình, mô tả phần sau Tạo hàm người dùng định nghĩa để mô tính MySQL Nếu bạn khơng thể cập nhật câu lệnh SQL theo cú pháp DB2 để đạt kết truy vấn MySQL bạn, bạn khắc phục cách khác dạng hàm người dùng định nghĩa (UDF) SQL DB2 để mô hàm MySQL dựng sẵn Đã có số chỗ sử dụng MySQL PHP kịch ví dụ cần tiếp cận theo cách khác cập nhật ứng dụng để sử dụng DB2 Cụ thể, bạn di chuyển số chức khỏi MySQL đưa vào PHP, ví dụ thực chuyển dịch ngày Hoặc bạn mơ hàm DB2, ví dụ để tạo hàm người dùng định nghĩa DB2 cho gần giống số hàm xây dựng MySQL, bao gồm UNIX_TIMESTAMP() NOW() Phụ lục B Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) giải thích khác biệt đưa cách tiếp cận để giải thay đổi Những mẹo nhỏ Daniel Krook thu thập từ kinh nghiệm di trú khách hàng ơng có ích (xem phần Tài nguyên) DML DB2 khác với MySQL Bài mô tả cách chuyển đổi SQL nhúng từ MySQL sang DB2 Tuy nhiên, không cần thiết chuyển đổi tất cú pháp từ MySQL sang DB2, đặc biệt hàm dựng sẵn MySQL Phụ lục A Ánh xạ hàm dựng sẵn toán tử MySQL Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) liệt kê nhiều hàm dựng sẵn MySQL Nói chung, nhiều hàm chuyển đổi thành UDF DB2 Bạn định chuyển đổi hàm dựng sẵn thường sử dụng Đối với kịch ví dụ, đáng bỏ cơng sức sử dụng UDF DB2 để chuyển đổi hàm ghi MySQL bạn sử dụng chúng thường xuyên Sau danh sách hàm ghi MySQL mà bạn chuyển đổi           CURRENT_DATE() / CURDATE() DATE_FORMAT() DATEDIFF() FROM_UNIXTIME() NOW() PERIOD_DIFF() TO_DAYS() UNIX_TIMESTAMP() WEEKDAY() YEARWEEK() Thật may, nhiều hàm nói triển khai thực có sẵn miễn phí để sử dụng lại, trình bày "Cơ sở DB2: Trò vui với ngày " (xem phần Tài nguyên) Nếu bạn sử dụng phiên v9.7.2 DB2, bạn chọn thiết lập vector tương thích DB2_COMPATIBILITY_VECTOR=MYS DB2 tạo dễ dàng hàm người dùng định nghĩa, chúng viết SQL thay u cầu sử dụng ngơn ngữ lập trình C, trường hợp MySQL Liệt kê 14 ví dụ UDF mà bạn tạo để mơ hàm NOW() MySQL khơng chuẩn thường sử dụng Bạn sử dụng mô nhiều nơi ứng dụng ví dụ Liệt kê 14 Định nghĩa UDF DB2 để mô hàm dựng sẵn NOW() MySQL CREATE FUNCTION NOW() RETURNS TIMESTAMP NO EXTERNAL ACTION BEGIN ATOMIC RETURN SELECT CURRENT TIMESTAMP FROM SYSIBM.DUAL; END Có số hàm khác người dùng định nghĩa để mô hàm dựng sẵn hay dùng MySQL liệt kê Phụ lục B Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) Di chuyển logic từ SQL sang PHP cần Có thể có tình bạn khơng thể chuyển hàm cú pháp MySQL sang định dạng thuận tiện DB2 Trong trường hợp này, xem xét liệu PHP có hỗ trợ tính khơng sử dụng hàm phần mở rộng để thay Ví dụ, MySQL cung cấp hàm SQL gọi INET_ATON(), khơng có hàm tương đương DB2 Viết hàm người sử dụng định nghĩa thay cho INET_ATON() tẻ nhạt dễ mắc lỗi May thay, PHP cung cấp hàm ip2long () có chức khơng phụ thuộc vào nhà cung cấp sở liệu Về đầu trang Bước 2: Bắt đầu bước chuyển thứ hai di trú mã Với mã PHP cập nhật để sửa đổi câu lệnh SQL nhúng để đọc cập nhật liệu cách tương tự MySQL, bước cấu trúc lại truy vấn bạn để đạt mục tiêu tính chức tồn vẹn liệu cải thiện hiệu tốt Bước liên quan đến bước nhỏ sau đây:   Chọn cách tiếp cận thích hợp để xử lý đồng thời Hợp truy vấn để cải thiện chất lượng hiệu liệu Chọn cách tiếp cận thích hợp để xử lý đồng thời Khi truy vấn riêng lẻ nhúng ứng dụng dựa vào MySQL chuyển đổi để làm việc DB2 theo mẫu tương đương, lúc để xem xét cách cải thiện chúng để lợi dụng tính xử lý đồng thời toàn vẹn liệu DB2 Hãy xem xét thay đổi cần thiết để hỗ trợ mức cách ly thích hợp số kết nối đồng thời tới sở liệu Có bốn mức cách ly DB2 để kiểm soát xử lý đồng thời Các mức cách ly xác định cách giao dịch ẩn giấu thay đổi liệu thực khỏi người dùng khác Các mức cách ly sau: Mức cách ly đọc lặp lại (RR) Tất hàng bị khóa kết thúc giao dịch Mức cách ly ổn định đọc (RS) Các hàng thỏa mãn điều kiện biến vị ngữ bị khóa kết thúc giao dịch Mức cách ly ổn định trỏ (CS) Chỉ có hàng trỏ trỏ vào bị khóa Đây mặc định Mức cách ly đọc khơng cam kết (UR) Khơng có hàng bị khóa trừ liệu thay đổi Hãy xem xét mức cách ly phù hợp với ứng dụng bạn từ góc độ hiệu tính tồn vẹn liệu Việc xử lý đồng thời giảm tính tồn vẹn liệu tăng lên bạn di chuyển mức cách ly từ đọc không cam kết (UR) sang đọc lặp lại (RR) Mức cách ly RR đảm bảo tính tồn vẹn liệu tối đa phải trả giá hiệu cao Ngược lại, UR đảm bảo mức hiệu cao phải trả giá khơng qn liệu Hình minh họa mối quan hệ hiệu tính tồn vẹn liệu Hình Các mức cách ly DB2 Bạn quy định mức cách ly mức khác nhau, từ truy vấn riêng lẻ lên đến toàn kết nối phiên làm việc Nếu bạn có tải cơng việc đọc nhiều, bạn muốn thiết lập mức cách ly đọc không cam kết (UR) mức kết nối bạn rõ câu lệnh Nếu bạn có kết hợp công việc đọc viết, bạn muốn tập trung vào chỉnh sửa truy vấn riêng lẻ thay đổi khỏi mức cách ly mặc định ổn định trỏ (CS) Bạn muốn xem xét kiểu trỏ mà bạn nên sử dụng để tối ưu hóa truy cập liệu Cả hai trình điều khiển ibm_db2 lẫn PDO_IBM hỗ trợ hai kiểu trỏ: trỏ tiến lên trỏ cuộn Con trỏ mặc định trỏ tiến lên Nói chung, trỏ mặc định lựa chọn tốt cho phần lớn trường hợp sử dụng, bạn duyệt qua tập kết Xét hiệu năng, trỏ tiến lên tốt so với trỏ cuộn Tuy nhiên, số trường hợp, bạn cần phải đọc trỏ tiến lên lùi lại, trường hợp bạn nên sử dụng trỏ cuộn Trong kịch ví dụ, kiểu trỏ thiết lập lệnh Liệt kê 15 cho truy vấn cần thiết Liệt kê 15 Định nghĩa kiểu cuộn DB2 từ hàm ibm_db2 trình điều khiển PDO For ibm_db2 db2_exec($connection_resource, $sql, array('cursor' => DB2_SCROLLABLE)); For PDO_IBM $DB_PDO->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL)); Xem mục 4.2 Sử dụng PHP với sở liệu DB2 Sách Đỏ Phát triển ứng dụng PHP cho máy chủ liệu IBM (xem phần Tài nguyên) để biết thêm chi tiết Hợp truy vấn để cải thiện chất lượng hiệu liệu Tiếp theo, nhóm truy vấn thành đơn vị lô-gic truy vấn độc lập Trong bước chuyển di trú mã này, bạn biết câu lệnh SQL nhận liệu kết câu lệnh sửa đổi liệu chúng làm ứng dụng cũ, xem xét việc nhóm lại truy vấn truy cập cập nhật liệu Mục đích để làm cho có mức hiệu MySQL đảm bảo mức độ toàn vẹn liệu DB2 Thu hẹp tỷ lệ kết nối sở liệu so với câu lệnh Nói chung, xây dựng kết nối đến sở liệu MySQL nhanh DB2 Do việc giảm số lượng tổng cộng kết nối cho yêu cầu HTTP cách sử dụng lại kết nối cho nhiều truy vấn cải thiện hiệu xử lý, ổ đĩa mạng Với kịch ví dụ, truy vấn hợp nhất, bao gồm việc lấy thông tin tài khoản người dùng để thực sẵn trước phép nối nối rộng (chứ khơng sử dụng số truy vấn tìm kiếm tiếp theo), Liệt kê 16 Việc dẫn đến phải trả giá việc tìm nạp trước nhiều liệu, với kịch ví dụ này, hiệu cải thiện, số lượng liệu tìm nạp giảm bớt nhà phát triển có ý tưởng tốt thực cần lấy liệu cho trang định, tiết kiệm tài nguyên Liệt kê 16 Hợp truy vấn Two individual queries that require two trips to the data server on the page SELECT FIN_PROJECT_MANAGER AS PM, PROJNAME FROM PROJECT WHERE ID = $id; SELECT EMAIL, FIRSTNAME, LASTNAME FROM USER WHERE ID = $pm; Single consolidated query that retrieves the same information in one trip SELECT U.EMAIL, U.FIRSTNAME, U.LASTNAME FROM USER U, PROJECT P WHERE U.ID = P.FIN_PROJECT_MANAGER AND PROJECT.ID = $id Tại không di trú Zend Framework? Cơ sở mã cho kịch ví dụ có trước hầu hết khung cơng tác cho PHP Các thành phần sử dụng lại từ PEAR thư viện mục đích đặc biệt tầng trừu tượng sở liệu bắt đầu có sức lơi bắt đầu viết PTT vào năm 2002 Các khung công tác đủ trọn vẹn chồng công nghệ CakePHP Zend Framework xuất nhiều năm sau Việc chấp nhận Zend Framework mục tiêu mong muốn tương lai, việc cập nhật mã ổn định để thay sở liệu bắt đầu đặt móng cho điều phạm vi bao quát việc di trú mã Cải tiến hướng đến kiến trúc MVC dễ trì Trong ứng dụng web ba tầng có thiết kế tốt xây dựng cách sử dụng mẫu kiến trúc mơ hình-khung nhìn-trình điều khiển (MVC), trình điều khiển xử lý yêu cầu web từ người dùng sau gọi lệnh mơ hình để chuẩn bị kết Đối tượng kết chuyển giao cho khung nhìn (thường biểu diễn khn mẫu HTML đơn giản) để hiển thị liệu đáp ứng trang Ứng dụng ban đầu không sử dụng mẫu MVC Thay vào đó, ứng dụng nhúng truy vấn trực tiếp vào khn mẫu, hịa trộn thực ba nhiệm vụ vào trang Bằng việc chấp nhận hướng dẫn thực hành tốt tạo nhóm truy vấn MVC, lấy tất thông tin tài khoản người dùng tất dự án cho người dùng gọi đến mơ hình, trang khung nhìn cần hiển thị thông tin, bước tìm nạp thêm nhiều liệu Cách tiếp cận chuyển ứng dụng từ liệu làm trung tâm hướng tới đối tượng nghiệp vụ làm trung tâm giúp tổ chức mã bạn tốt cách phân tách logic truy cập liệu khỏi đánh dấu thiết kế bố trí trang Phân phối tốt tải tính tốn Bởi kịch ví dụ có máy chủ web riêng máy chủ sở liệu riêng, nên máy chủ web chủ yếu xử lý khối lưu lượng HTTP lớn Máy chủ web thực lơ-gic phía máy chủ thơng qua mơ đun PHP Để cải thiện hiệu máy chủ HTTP cách giảm tiêu thụ CPU nhớ mà máy chủ web dùng mod_php, số logic nghiệp vụ chuyển cho máy chủ liệu Điều thường mang lại thêm lợi ích, làm giảm tổng lưu lượng mạng (vì làm giảm lưu thông máy chủ web máy chủ liệu) khả thơng qua tăng lên nhờ xử lý liệu mức truy cập Cải thiện tính tồn vẹn liệu cách nhóm truy vấn máy chủ Lợi ích cuối quan trọng cho tồn vẹn giao dịch nhóm lơ-gic xử lý thành đơn vị giao dịch nguyên tử máy chủ liệu sử dụng thủ tục lưu, tri-gơ hàm người dùng định nghĩa Bạn thấy việc tạo nhiệm vụ ứng dụng PTT đáng tin cậy điều sau xảy ra:    Tất liệu chuyển giao toàn tới sở liệu Nhiều câu lệnh INSERT thực đơn vị Chỉ trả cho người dùng kết thành công hay lỗi thất bại Nếu khơng có sở liệu hỗ trợ giao dịch, tất sửa đổi sở liệu thất bại kịch ví dụ, để lại hệ thống trạng thái khơng thể dự đốn được, địi hỏi có can thiệp người dùng nhà quản trị để giải không quán liệu, ví dụ nhiệm vụ tạo phần mà khơng có chủ sở hữu liên kết quan trọng khác Liệt kê 17 cho thấy ví dụ hai cập nhật có liên quan với xảy đơn vị nguyên tử Liệt kê 17 Nhóm nhật thành thủ tục lưu sẵn CREATE PROCEDURE BILLING_TYPE_UPDATE (IN p_date DATE) BEGIN Update for project's billing type FOR row AS SELECT * FROM proj_billingtype_snapshot WHERE end_date IS NULL AND start_date = p_date DO Execute two updates in one transaction t1: begin atomic Transaction begins First update UPDATE fin_attributes SET proj_type = row.billing_type WHERE project_id = row.proj_id; Second update UPDATE fin_attributes_archive SET proj_type = row.billing_type WHERE project_id = row.proj_id AND year = YEAR(NOW()); end t1; Transaction ends END FOR; END Tất phiên DB2 hỗ trợ giao dịch, hầu hết máy lưu trữ MySQL, bao gồm kiểu mặc định MyISAM, lại khơng hỗ trợ chúng Ứng dụng ví dụ xây dựng cách sử dụng kiểu bảng MyISAM mặc định nhà phát triển cố gắng thực thi tính tồn vẹn liệu mức mã Cho nên việc di chuyển sang DB2 chào đón ủy thác quản lý giao dịch cho sở liệu, việc mà DB2 làm tốt Nó làm giảm kích thước tổng thể độ phức tạp mã phần di chuyển khác cần thiết để làm việc trang PHP cụ thể ứng dụng Xem phần 5.2.8 Các giao dịch mức cách ly Sách Đỏ Các ứng dụng PHP cho máy chủ liệu IBM (xem phần Tài nguyên) để tìm hiểu thêm xử lý đồng thời DB2 Về đầu trang Bước 3: Bắt đầu kiểm tra trường hợp sử dụng nghiệp vụ lần đầu với bên liên quan Vào lúc này, bạn phải có hệ thống hoạt động kiểm tra tồn tập chức có liên quan có thành phần cụ thể Ví dụ, việc tạo nhiệm vụ gắn với dự án mẹ trường hợp sử dụng độc lập hệ thống PTT Việc gửi phần nội dung, ví dụ tiêu đề mô tả sản phẩm, đến dịch vụ dịch thuật trường hợp sử dụng khác kiểm tra độc lập Bước chuyển đổi bao gồm bước nhỏ sau:    Biên dịch tạo kiểm thử chấp nhận người dùng Bài kiểm thử đơn vị sửa lỗi Chụp ảnh để sử dụng làm vạch chuẩn Biên dịch tạo kiểm thử chấp nhận người dùng Trong bước này, bắt đầu đưa bên liên quan quan tâm vào để thực thi loạt trường hợp sử dụng thường thực hệ thống cũ Bạn muốn đảm bảo loạt kiểm thử làm việc mong đợi hệ thống Kịch ví dụ sử dụng định dạng chuẩn cho việc kiểm tra chấp nhận người dùng năm qua Vì vậy, có kho lưu trữ kiểm thử để xác nhận hợp lệ tính để tránh vấn đề hồi quy với mã có Danh mục kiểm tra mở rộng để chứa hàm trọng yếu chức PTT Các kiểm thử thường chứa tập bước có liên quan để đạt mục tiêu nghiệp vụ chúng trông giống sơ đồ trường hợp sử dụng Sự khác biệt so với mơ hình trường hợp sử dụng tĩnh kiểm thử thường lưu trữ theo định dạng bảng tính với ảnh chụp hình bảng có hàng cập nhật được, người kiểm thử nhập loạt bước cụ thể hay bước riêng lẻ cho dù có thành cơng thất bại Bảng cho thấy ví dụ định dạng trường hợp kiểm thử chấp nhận người dùng để xác minh xem việc tạo nhiệm vụ làm việc mong đợi chưa Bảng Bài kiểm thử chấp nhận người dùng mẫu Test Expected result 1.1 Đăng nhập vào hệ Trang chào đón hiển thị thống 1.2 Mở trang nhiệm vụ Tạo Tải biểu mẫu nhiệm vụ nhiệm vụ mới 1.3 Điền vào biểu mẫu Hiển thị thông báo thành công liên kết lưu trữ ID nhiệm vụ 2.1 Log into the Trang chào đón hiển thị system Phê duyệt 2.2 Đăng nhập vào hệ Danh sách tải công việc thống nhiệm vụ 2.3 Định vị danh sách Hiển thị thông báo thành công gửi email nhiệm vụ Passed? Có Có Có Có Có Khơng Hãy ghi nhớ điều quan trọng người kiểm thử bạn dành đủ thời gian để thực kiểm thử chấp nhận người dùng ghi lại vấn đề Nếu họ đọc lướt kiểm thử, họ bỏ sót lỗi Cũng với lý tương tự, điều quan trọng lập sổ ghi kiểm thử vào lúc kết họ báo cáo để thực thi trách nhiệm giải trình Bài kiểm thử đơn vị sửa lỗi Bước địi hỏi phân tích có hệ thống vấn đề người kiểm thử chấp nhận người dùng báo cáo Khi nhận kiểm thử chấp nhận người dùng từ người kiểm thử, cần giao cho cá nhân nhà phát triển vấn đề báo cáo để xác nhận sửa chữa Ví dụ, kiểm thử 2.3 Bảng quy lỗi Khi bạn di trú hệ thống theo cách lặp nhiều lần, nhà phát triển cần so sánh chức di trú vào DB2 với hệ thống nguồn MySQL ban đầu để đảm bảo đơn vị công việc cụ thể thực mong đợi Với kiểm thử chấp nhận người dùng, có giá trị tự động hóa q trình cách sử dụng khung công tác kiểm thử đơn vị, ví dụ PHPUnit Vì sở mã ví dụ khơng phân chia thành mã MVC, thích hợp với dễ kiểm thử theo chương trình, nên kiểm thử đơn vị tự động hóa hệ thống tích hợp liên tục khơng sử dụng Chụp ảnh để dùng làm vạch chuẩn Sau phần trường hợp sử dụng hoàn thành, bước cuối trước bắt đầu vòng lặp kiểm thử chụp ảnh trạng hệ thống làm lưu vạch chuẩn để tham chiếu lại kiểm tra xác nhận hoạt động hiệu Một lần nữa, vòng lặp thay đổi đạt đến mốc ổn định, điều quan trọng chụp ảnh lưu Ảnh dạng tệp truyền thống lưu SQL dạng ảnh hoàn chỉnh hệ điều hành Điều quan trọng trì điểm lưu trữ trường hợp có lỗi tương lai để sử dụng làm vạch chuẩn so sánh Về đầu trang Bước 4: Giải nút nghẽn cổ chai xác nhận dựa vào vạch chuẩn chức Một tập hoàn chỉnh kiểm thử chấp nhận người dùng bên liên quan bạn ký duyệt, lúc để cải thiện hiệu hệ thống Bước địi hỏi hồn thành bước sau đây:    Xác nhận kiểm thử chấp nhận người dùng (UAT) vạch chuẩn Sử dụng công cụ để sửa chữa vấn đề hiệu DB2 Xác định vị trí giải nút nghẽn cổ chai hệ điều hành Xác nhận kiểm thử UAT vạch chuẩn Với bước chuẩn bị này, điều quan trọng cần nhắc lại bạn cần có khung nhìn rõ ràng chức hệ thống xác nhận cho bạn biết liệu có yêu cầu cải tiến phi chức khơng, ví dụ cải tiến hiệu năng, có ảnh hưởng tốt phải đánh đổi yêu cầu chức thống Bước nên diễn sau kiểm tra xác nhận chức hai lý Đầu tiên, đảm bảo bạn có vạch chuẩn chức ký duyệt, biết rõ trước thực thay đổi phi chức Thứ hai, giúp bạn tránh cạm bẫy việc tối ưu hóa vội vàng việc di trú bạn Bạn biết truy vấn cách tiếp cận nhanh trường hợp, bạn không nên áp dụng cách mù quáng thay đổi toàn sở mã, đặc biệt khơng có dấu hiệu cho thấy có vấn đề hiệu Lấy ví dụ, lịch sử kiểm thử chấp nhận người dùng lưu giữ để xác nhận liệu có kiểm thử thành cơng trước chưa để dùng kiểm tra vấn đề hồi quy chúng xuất sau Sử dụng công cụ để sửa chữa vấn đề hiệu DB2 Những mối hiểm họa việc tối ưu hóa vội vàng Có khả bạn nghe nói nhận xét Donald Knuth vào năm 1974 "việc tối ưu hóa vội vàng gốc rễ tội lỗi" Một ví dụ cạm bẫy vấn đề xuất phát từ kinh nghiệm tác giả loạt (chúng không nêu rõ tên người phạm lỗi!) Khi ông biết chuỗi ký tự dùng dấu nháy đơn thực tốt so với chuỗi ký tự dùng dấu nháy kép (do thực tế biến nội suy không bị thay bọc dấu nháy đơn), ông định có lẽ thật tốt để thay tất dấu nháy kép dấu nháy đơn Ơng khơng có lý để nghĩ ứng dụng có vấn đề hiệu năng, nên ơng thực ông nghĩ tìm kiếm thay cẩn thận Thật khơng may, ơng bỏ sót hai chuỗi nội suy đưa vào lỗi khó phát hiện, gây vấn đề tồn vẹn liệu tương lai Tuy nhiên, tha lỗi cho ông Việc kiểm thử bạn vào thời điểm nên tập trung chủ yếu vào DB2 sửa chữa tự động cho bạn, DB2 thay đổi lớn mà bạn đưa vào Khi bạn thay đổi mã, kiểm thử đơn vị thực kiểm thử chấp nhận người dùng (UAT), bạn nên xác định nút nghẽn cổ chai thực thay đổi cần Một triết lý quan trọng cần làm theo thay đổi điều biết có vấn đề thông qua kiểm thử đơn vị việc kiểm tra UAT thực giả định nguồn tiềm vấn đề hiệu Sau thực điều này, bạn cung cấp thay đổi ghi lại để ứng dụng tương lai chống lại lỗi sau Có cân mong manh việc tối ưu hóa vội vàng áp dụng sửa lỗi diện rộng dựa vào danh sách hướng dẫn thực hành tốt Đây trình lặp lại suốt vòng đời ứng dụng Xem phần bên mối hiểm họa việc tối ưu hóa vội vàng Một kỹ thuật mà bạn thấy có ích thực hàm, giám sát kịch lệnh chạy 60 giây gửi báo cáo lỗi, thực cho ứng dụng ví dụ PTT Một ví dụ hàm mô tả phần loạt Dựa vào thơng tin có sẵn báo cáo đó, bạn phát liệu có vấn đề phát sinh từ kết việc thực PHP chậm hay truy vấn chậm không Với vấn đề PHP, trình gỡ lỗi trình gỡ lỗi có sẵn Zend Studio Eclipse PDT giúp bạn định vị vấn đề Với vấn đề truy vấn, bạn sử dụng IBM Data Studio để định vị vấn đề đề xuất sửa chữa Hình cho thấy ví dụ biểu đồ kế hoạch truy cập cho truy vấn cụ thể Hình Tinh chỉnh truy vấn IBM Data Studio Định vị giải nút nghẽn cổ chai hệ điều hành Nếu bạn DB2 PHP nguồn gốc vấn đề hiệu ứng dụng bạn, bạn nên định vị lặp lại nhiều lần nút nghẽn cổ chai khác cách sử dụng hướng dẫn thực hành tốt thử - - mô tả "Các mẫu PHP mức doanh nghiệp Zend" John Coggeshall (xem phần Tài nguyên) Tóm lại, bạn bắt đầu xem xét ba nguồn gốc phổ biến nút nghẽn cổ chai ứng dụng để xem xem bạn giải vấn đề hiệu không thông qua việc nâng cấp phần cứng đơn giản cách điều chỉnh tài nguyên phân phối cho máy ảo:    CPU Bộ nhớ Đĩa Trong nhiều công cụ sử dụng để xác định nút nghẽn cổ chai sách Zend áp dụng cho hệ điều hành Linux, nhiều kỹ thuật đạt với công cụ đặc trưng Windows bạn phát triển sau bạn triển khai ứng dụng cập nhật bạn tới máy chủ thử nghiệm hay máy chủ tạm tiếp tục lại sau triển khai Về đầu trang Bước Đánh giá vạch chuẩn di trú mã Sau vịng lặp tồn bước đến 4, mà bước lại gồm vài bước chuyển, bạn có hệ thống sở liệu hoạt động máy trạm Windows vài ghi nhớ bạn thay đổi có vấn đề Nếu bạn sử dụng máy ảo, bạn chụp hình ảnh hệ thống Windows ảnh chụp hình, vừa để lưu trữ làm điểm ghi lưu thực chức vừa để sử dụng làm vạch sở để so sánh với thay đổi hiệu tương lai Tất nhiên, có tùy chọn khác sử dụng ảnh ảo Đám mây IBM hay Amazon sử dụng đám mây theo cách Bạn muốn thử nghiệm với vài cập nhật mã khác để xem xét làm việc tốt cho mơi trường bạn Một bạn cảm thấy hài lòng với hệ thống máy trạm Windows sử dụng bước 1-4, bạn gắn thẻ cho mã chuyển đổi bạn phát hành hệ thống kiểm soát phiên bạn chuẩn bị sở hạ tầng cho bước cuối trước triển khai mô tả phần loạt ... dùng MySQL liệt kê Phụ lục B Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên) Di chuyển logic từ SQL sang PHP cần Có thể có tình bạn khơng thể chuyển hàm cú pháp MySQL sang định... bảo trì ứng dụng Về đầu trang Cài đặt phần mềm chuyển đổi Để chuẩn bị cho việc chuyển đổi mã ví dụ, cài đặt thành phần sau máy trạm Windows sử dụng để thực bước chuyển đổi Một phiên MySQL sở... không cần thiết chuyển đổi tất cú pháp từ MySQL sang DB2, đặc biệt hàm dựng sẵn MySQL Phụ lục A Ánh xạ hàm dựng sẵn toán tử MySQL Sách Đỏ Hướng dẫn chuyển đổi MySQL sang DB2 (xem phần Tài nguyên)

Ngày đăng: 24/03/2014, 06:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan