Hướng dẫn dùng oracle commit trong PHP

Như các bạn đã biết SVN là một công cụ quản lý mã nguồn tài liệu trong quá trình làm dự án rất hiệu quả. Ngày nay với các công cụ lưu trữ trực tuyến khá nhiều như GitHub, Bitbugket,…tuy nhiên SVN vẫn có chỗ đứng vì đây là công cụ mà các đơn vị phát triển phần mềm cần sử dụng để quản lý mã nguồn nội bộ của mình. Qua bài viết này tôi sẽ hướng dẫn sử dụng SVN dành cho các bạn.

SVN sẽ giúp các thành viên trong đội dự án có thể kết nối và làm việc với nhau trong cùng dự án được thuận lợi, dễ dàng. Thường dự án này sẽ được lưu trữ trên máy chủ do vậy nó cũng an toàn, tránh mất thông tin cũng như bảo mật hơn vì để vào được tài nguyên bạn sẽ cần phải có tài khoản truy xuất vào dự án đó.

Trong bài viết này tôi sẽ hướng dẫn các bạn nắm được những tính năng chính hay sử dụng của SVN:

+ SVN Checkout: Sử dụng lần đầu tiên để kết nối với server chứa mã nguồn theo địa chỉ cung cấp.


+ SVN Update: Cập nhật tài nguyên mới nhất từ server về máy tính của từng thành viên trong nhóm.
+ SVN Commit: Người lập trình sử dụng để đưa tài nguyên lên server khi được yêu cầu.

Hướng dẫn dùng oracle commit trong PHP

+ Change Password: Trong trường hợp máy tính của các bạn sử dụng nhiều tài khoản khác nhau với các dự án khác nhau. Nếu đã lưu mật khẩu hiện tại thì việc chuyển sang tài nguyên khác sẽ bị báo lỗi không truy cập do nó vẫn nhận tài khoản lưu nhớ. Để thay đổi các bạn chuột phải vào thư mục sau chọn TortoiseSVN => Settings => Chọn mục Saved Data => Nhấn nút xóa Clear All trong mục Authentication data trên giao diện hiển thị.

+ Resolve: Là chức năng cho phép bạn xử lý sung đột, sai khác giữa các phiên bản code mới nhau. Khi nó bị xung đột sẽ có biểu tượng dấm chấm than (!) màu vàng. Để thực hiện chức năng các bạn nhấn chọn TortoiseSVN => Resolve.

+ Revert: Là chức năng loại bỏ sự thay đổi trong mã nguồn hiện tại so với bản mới nhất đang lưu trữ trên server.

+ Clean up: Đây là chức năng được sử dụng khá nhiều khi có sự xung đột về code, không thực hiện được các chức năng Update, Commit trong SVN. Người dùng sẽ sử dụng chức năng này để loại bỏ các xung đột (confilict) trong code của dự án. Để sử dụng chức năng này các bạn chuột phải chọn TortoiseSVN => Clean up => Sau đó tích chọn các thông tin để xử lý trên giao diện hiển thị.

Các bạn có thể xem hướng dẫn các thức sử dụng các chức năng trong SVN theo video hướng dẫn dưới đây:

Ngoài ra các bạn có thể theo dõi những thông tin về lập trình, hay thắc mắc liên hệ tại website: stanford.com.vn

1. Transaction là gì?

Là một tiến trình xử lý có xác định điểm đầu và điểm cuối, được chia nhỏ thành các operation (phép thực thi) , tiến trình được thực thi một cách tuần tự và độc lập theo nguyên tắc hoặc tất cả đều thành công hoặc một thất bại thì toàn bộ tiến trình sẽ thất bại. Nếu việc thực thi một operation nào đó bị fail đồng nghĩa với việc dữ liệu phải rollback về trạng thái ban đầu. Vì thế, một transaction sẽ không được xem là thành công khi chỉ cần một thao tác đơn nào đó trong nó không hoàn thành.

Ví dụ đơn giản nhất là tiến trình cài đặt phần mềm hoặc gỡ bỏ phần mềm. Việc cài đặt được chia thành các bước, thực hiện tuần tự từ đầu đến cuối, nếu toàn bộ các bước thực thi thành công đồng nghĩa với việc tiến trình cài đặt hoặc gỡ bỏ phần mềm thành công và ngược lại, một phép thất bại thì tiến trình phải rollback lại tức sẽ không có bất kỳ thay đổi nào trên máy tính.

2. Kiểu của transaction

2.1. Flat Transaction:

Việc chia các operation(thực thị) là ngang hàng nhau. Thực thi các operation từ trái sang phải hoặc từ trên xuống dưới.

2.2. Nested Transaction

Việc thực thi các operation dựa theo nguyên tắc từ trong ra ngoài, khi thực thi theo nguyên tắc operation trong thực thi xong thì mới đến operation ngoài.

3. Các thuộc tính của transaction:

Transaction có 4 thuộc tính chuẩn sau đây:

  • Atomicity (tính tự trị): Đảm bảo rằng tất cả các hoạt động trong phạm vi một đơn vị làm việc là thành công hoàn toàn. Ngược lại, transaction sẽ bị hủy ngay tại điểm lỗi. Và các các họat động trước sẽ được quay lại đúng trạng thái trước đó của nó.
  • Consistency (tính nhất quán): Đảm bảo cơ sở dữ liệu thay đổi đúng trạng thái khi transaction kết thúc thành công.
  • Isolation (tính độc lập): Cho phép transaction hoạt động một cách độc lập và “trong suốt” (transparent) với các transaction khác.
  • Durability (tính bền vững): Đảm bảo kết quả hoặc tác động của transaction vẫn luôn tồn tại kể cả khi hệ thống bị lỗi.

4. Rủi ro khi thực thi transaction

4.1. Việc thực thi operation bị hỏng:

Việc này sẽ dẫn tới transaction bị hỏng.

4. 2. Vấn đề về phần cứng và mạng:

Việc phần cứng hoặc mạng có vấn đề trong lúc đang thực thi transaction sẽ dẫn đến tiến trình xử lý thất bại.

4.3. Các vấn đề với dữ liệu dùng chung:

Dữ liệu là một tài nguyên dùng chung, nếu như có nhiều tiến trình xử lý đồng thời thực hiện trên dữ liệu sẽ xảy ra những rủi ro: write-write, write-read,… việc dữ liệu ghi cùng lúc dẫn tới hỏng dữ liệu hoặc dữ liệu đọc ra không đồng nhất với dữ liệu mới ghi vào.

5. Lệnh COMMIT và Lệnh ROLLBACK:

Đây là hai keyword được sử dụng chính trong các transaction MySQL.

– Khi một transaction hoàn chỉnh được hoàn thành thì lệnh COMMIT phải được đưa ra để mọi sự thay đổi đều được tác động đến tất cả các table liêu quan.

– Nếu bị lỗi, thì lệnh ROLLBACK nên được đưa ra để đưa tất cả các table liên quan với transaction về lại trạng thái trước đó.

Ta có thể điều khiển hành vi của một transaction bằng cách thiết lập một biến phiên, được gọi là Autocommit. Nếu Autocommit được thiết lập bằng 1, SET AUTOCOMMIT = 1 (default), thì mỗi lệnh SQL  được xem như một transaction hoàn chỉnh, điều này được duy trì cho đến khi nó kết thúc. Khi Autocommit được thiết lập bằng 0, SET AUTOCOMMIT = 0, thì một tập, có thứ tự, của các câu lệnh sẽ đóng vai trò như là một transaction và không có một hoạt động nào là được xuất phát cho đến có một lệnh Commit khác được đưa ra.

Một số lưu ý khi xây dựng và sử dụng:

Sự tuần tự của các lệnh là hoàn toàn độc lập với ngôn ngữ lập trình, vì thế, một tuần tự logic có thể được tạo ra trong ngôn ngữ mà ta đang sử dụng để tạo ra các ứng dụng như mong muốn.

  • Phải dùng lệnh BEGIN WORK để bắt đầu một transaction.
  • Có thể đưa ra một hoặc nhiều các câu lệnh sau: SELECT, INSERT, UPDATE hoặc DELETE.
  • Trước khi thực hiện phải kiểm tra để dảm bảo không còn lỗi nào và mọi thứ phải theo đúng yêu cầu đã đặt ra.
  • Nếu thấy có bất kỳ lỗi nào thì phải đưa ra câu lệnh ROLLBACK, ngược lại phải đưa ra câu lệnh COMMIT.

Ta có thể sử dụng các câu lệnh trên trong PHP bằng cách sử dụng hàm mysql_query():

Các loại table bảo vệ transaction (transaction-safe table) trong MySQL:

Ta không thể sử dụng nó một cách trực tiếp mà phải sử dụng trong chương trình MySQL. Trong trường hợp này, ta cần phải tạo ra các table theo cách đặc biệt. Có nhiều loại table hỗ trợ điều này, thông dụng nhất là InnoDB.

Nếu MySQL của chúng ta có cài đặt hỗ trợ các table InnoDB thì ta chỉ cần thêm định nghĩa Type = InnoDB vào câu lệnh Create table là được.

Tham khảo

http://en.wikipedia.org/wiki/Transaction_processing

http://en.wikipedia.org/wiki/Database_transaction

http://en.wikipedia.org/wiki/Atomic_transaction

https://viblo.asia/p/tim-hieu-ve-transaction-trong-mysql-RnB5pnxGZPG