Ai đó có thể cung cấp giải thích đơn giản (nhưng không đơn giản hơn) về giao dịch được áp dụng cho máy tính (ngay cả khi được sao chép từ Wikipedia)?Giao dịch cơ sở dữ liệu là gì?
Trả lời
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = Một tomicity, C onsistency, tôi solation, D urability
Khi bạn muốn cho nhiều tài nguyên giao dịch để được tham gia vào một giao dịch duy nhất, bạn sẽ cần phải sử dụng một cái gì đó giống như một giải pháp two-phase commit. XA được hỗ trợ khá rộng rãi.
"Một loạt các báo cáo thao tác dữ liệu đó phải hoặc là hoàn toàn hoàn chỉnh hoặc hoàn toàn thất bại, để lại cơ sở dữ liệu trong một nhà nước thống nhất"
Không chỉ cơ sở dữ liệu. Chúng tôi có thể mở rộng khái niệm này cho các thành phần khác - như dịch vụ xếp hàng hoặc trạng thái của các hệ thống bên ngoài. Vì vậy, "Hàng loạt các tuyên bố thao tác dữ liệu phải hoàn toàn hoặc hoàn toàn thất bại, hãy để hệ thống ở trạng thái nhất quán" –
Thật vậy. Nói hay lắm. – Rad
Dưới đây là một lời giải thích đơn giản. Bạn cần phải chuyển 100 đô la từ tài khoản A đến B. Bạn có thể tài khoản nào:
accountA -= 100;
accountB += 100;
hoặc
accountB += 100;
accountA -= 100;
Nếu họ gặp khó khăn giữa đầu tiên và hoạt động thứ hai trong cặp bạn có một vấn đề - hoặc 100 đô la đã biến mất, hoặc họ đã xuất hiện từ hư không.
Giao dịch là một cơ chế cho phép bạn đánh dấu một nhóm hoạt động và thực thi chúng theo cách mà chúng thực thi (cam kết) hoặc trạng thái hệ thống sẽ như thể chúng chưa bắt đầu thực thi (rollback).
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
sẽ chuyển 100 đô la hoặc để lại cả hai tài khoản ở trạng thái ban đầu.
Giao dịch là cách thể hiện thay đổi trạng thái. Giao dịch lý tưởng có bốn thuộc tính, thường được gọi là ACID:
- nguyên tử (nếu thay đổi được cam kết, nó sẽ xảy ra trong một ngã swoop, bạn không bao giờ có thể nhìn thấy "một nửa thay đổi")
- Phù hợp (sự thay đổi có thể chỉ xảy ra nếu trạng thái mới của hệ thống sẽ hợp lệ; bất kỳ nỗ lực nào để thực hiện thay đổi không hợp lệ sẽ không thành công, để hệ thống ở trạng thái hợp lệ trước đó của nó)
- Bị cô lập (không ai khác nhìn thấy bất kỳ phần nào của giao dịch cho đến khi nó được cam kết)
- Bền (một khi thay đổi đã xảy ra - nếu hệ thống cho biết giao dịch đã được cam kết, khách hàng không cần phải lo lắng về abou t "xả" hệ thống để thực hiện thay đổi "dính")
Xem mục nhập ACID của Wikipedia để biết thêm chi tiết.
Mặc dù điều này thường được áp dụng cho cơ sở dữ liệu, nhưng không nhất thiết phải như vậy. (Cụ thể, xem Software Transactional Memory.)
Giao dịch là đơn vị công việc mà bạn muốn coi là "toàn bộ". Nó phải xảy ra đầy đủ hoặc không hoàn toàn.
Ví dụ điển hình là chuyển tiền từ tài khoản ngân hàng này sang tài khoản ngân hàng khác. Để làm điều đó, trước tiên bạn phải rút số tiền từ tài khoản nguồn và sau đó gửi tiền vào tài khoản đích. Các hoạt động đã thành công đầy đủ. Nếu bạn dừng lại nửa chừng, tiền sẽ bị mất, và điều đó rất tệ.
Trong các giao dịch cơ sở dữ liệu hiện đại cũng làm một số việc khác - như đảm bảo rằng bạn không thể truy cập dữ liệu mà người khác đã viết nửa chừng. Nhưng ý tưởng cơ bản là giống nhau - các giao dịch ở đó để đảm bảo rằng bất kể điều gì xảy ra, dữ liệu bạn làm việc sẽ ở trạng thái hợp lý. Họ đảm bảo rằng sẽ KHÔNG có một tình huống mà tiền được rút từ một tài khoản, nhưng không được gửi vào một tài khoản khác.
+1 cho ví dụ !! –
Câu trả lời này phải được chấp nhận. – user1205577
Cảm ơn ví dụ rất đơn giản – Nomadme
Tôi cho rằng định nghĩa về 'xử lý giao dịch' sẽ hữu ích hơn, vì nó bao gồm các giao dịch như một khái niệm trong khoa học máy tính.
Từ wikipedia:
Trong khoa học máy tính, xử lý giao dịch là xử lý thông tin mà được chia thành cá nhân, hoạt động tách rời, được gọi là giao dịch. Mỗi giao dịch phải thành công hoặc thất bại dưới dạng đơn vị hoàn chỉnh; nó không thể ở trạng thái trung gian.
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
Tôi nghĩ giao dịch là một hành động nguyên tử về DBMS.
điều đó có nghĩa là không thể tách riêng. có, trong quá trình chuyển đổi, có thể có một số hướng dẫn để hệ thống thực thi. nhưng chúng được liên kết với nhau để hoàn thành một nhiệm vụ cơ bản duy nhất. Ví dụ:
. bạn cần phải đi qua một cây cầu (hãy coi đây là một sự chuyển giao), và để làm điều này, bạn cần 100 bước. tổng thể, các bước này không thể tách rời. khi bạn đã thực hiện một nửa trong số họ, chỉ có hai lựa chọn cho bạn: tiếp tục hoàn thành tất cả, và quay lại điểm bắt đầu. nó giống như kết quả của một giao dịch: thành công (cam kết) và thất bại (rollback)
Ngoài các câu trả lời ở trên, cần lưu ý rằng, ít nhất là về mặt lý thuyết, không hạn chế nào tài nguyên có liên quan đến giao dịch.
Hầu hết thời gian, nó chỉ là một cơ sở dữ liệu hoặc nhiều cơ sở dữ liệu riêng biệt, nhưng cũng có thể hiểu rằng máy in tham gia vào giao dịch và có thể khiến giao dịch bị lỗi. .
Giao dịch là một chuỗi gồm một hoặc nhiều hoạt động SQL được coi là đơn vị.
Cụ thể, mỗi giao dịch xuất hiện để chạy tách biệt, và hơn nữa, nếu hệ thống bị lỗi, mỗi giao dịch được thực hiện toàn bộ hoặc không phải tất cả.
Khái niệm giao dịch được thúc đẩy bởi hai mối quan tâm hoàn toàn độc lập. Người ta phải làm với việc truy cập đồng thời vào cơ sở dữ liệu của nhiều khách hàng, và người kia phải làm với việc có một hệ thống có khả năng phục hồi cho các lỗi hệ thống.
giao dịch hỗ trợ gì được gọi là các thuộc tính ACID:
- A: Atomicity;
- C: Tính nhất quán;
- I: Cách ly;
- D: Độ bền.
giao dịch là một đơn vị bất khả phân của xử lý dữ liệu giao dịch -Tất cả phải có các tính chất ACID:
ví dụ: Atomicity, nhất quán, Isolation và Durable giao dịch là tất cả hoặc không có gì nhưng không intermidiate (nó có nghĩa là nếu bạn chuyển tiền từ tài khoản này sang tài khoản khác, một tài khoản phải mất số tiền đó và một tài khoản khác phải nhận số tiền đó, nhưng nếu bạn chuyển tiền từ một tài khoản và tài khoản khác vẫn trống sẽ không phải là giao dịch)
Thuộc tính của giao dịch:
Giao dịch đã bốn đặc tính tiêu chuẩn sau đây, thường được gọi bởi các ACID viết tắt:
Atomicity: ensures that all operations within the work unit are completed
successfully; otherwise, the transaction is aborted at the point of
failure, and previous operations are rolled back to their former state.
Consistency: ensures that the database properly changes states upon a successfully
committed transaction.
Isolation: enables transactions to operate independently of and transparent to
each other.
Durability: ensures that the result or effect of a committed transaction persists
in case of a system failure.
giao dịch điều khiển:
Có lệnh sau dùng để điều khiển giao dịch:
COMMIT: to save the changes.
ROLLBACK: to rollback the changes.
SAVEPOINT: creates points within groups of transactions in which to ROLLBACK
SET TRANSACTION: Places a name on a transaction.
giao dịch có thể được định nghĩa là tập hợp tác vụ được coi là đơn vị xử lý tối thiểu. Mỗi đơn vị xử lý tối thiểu không thể được chia xa hơn.
Hoạt động chính của giao dịch được đọc và ghi.
Tất cả giao dịch phải chứa bốn thuộc tính thường được gọi là thuộc tính ACID nhằm đảm bảo tính chính xác, đầy đủ và toàn vẹn dữ liệu.
- 1. Phiên cơ sở dữ liệu là gì?
- 2. Giao dịch cơ sở dữ liệu Magento
- 3. Thực hiện giao dịch qua nhiều cơ sở dữ liệu
- 4. Giao dịch ứng dụng phi cơ sở dữ liệu
- 5. Giao dịch cơ sở dữ liệu CakePHP 2.3.x
- 6. Node.js + postgres quản lý cơ sở dữ liệu giao dịch
- 7. Giao dịch trong cơ sở dữ liệu wordpress
- 8. Bộ nhớ giao dịch phần mềm có giống giao dịch cơ sở dữ liệu không?
- 9. cách tính số lượng giao dịch cơ sở dữ liệu trên giây và tăng trưởng cơ sở dữ liệu
- 10. "Trình tự cơ sở dữ liệu ngầm" là gì?
- 11. Cấu trúc cơ sở dữ liệu sonar là gì?
- 12. 'Cơ sở dữ liệu phổ biến' là gì?
- 13. Điểm của nhiều Cơ sở dữ liệu Redis là gì?
- 14. Công cụ cơ sở dữ liệu MySQL là gì?
- 15. Cơ sở dữ liệu tổng hợp là gì?
- 16. Cơ sở dữ liệu "tốt nhất" để nhúng là gì?
- 17. Trạng thái của Cơ sở dữ liệu HTML5 là gì?
- 18. Cơ sở dữ liệu Xoay vòng - mục đích là gì?
- 19. Tên cơ sở dữ liệu PostgreSQL hợp lệ là gì?
- 20. Thiết kế cơ sở dữ liệu tốt (lược đồ) cho cơ sở dữ liệu tham dự là gì?
- 21. Cách tốt nhất để chuyển đổi cơ sở dữ liệu mysql thành cơ sở dữ liệu sqlite là gì?
- 22. "Giao dịch được phân phối" là gì?
- 23. Cơ sở dữ liệu Cassandra, giao diện python nào?
- 24. Sự khác nhau giữa cơ sở dữ liệu và kho dữ liệu là gì?
- 25. Sự khác biệt giữa tập dữ liệu và cơ sở dữ liệu là gì?
- 26. Sự cố đồng thời với nhiều giao dịch cơ sở dữ liệu độc lập?
- 27. Thiết kế cơ sở dữ liệu: bảng giao dịch kế toán
- 28. Lồng ghép RabbitMQ với các giao dịch cơ sở dữ liệu
- 29. Nhật ký giao dịch cho cơ sở dữ liệu đầy đủ
- 30. Cơ sở dữ liệu giao dịch và báo cáo - Làm cách nào?
tất cả ACID. – van