2010-03-22 6 views

Trả lời

5

Ý tưởng về "giao dịch" trong bộ nhớ giao dịch phần mềm được vay mượn một cách rõ ràng từ cơ sở dữ liệu. Sự khác biệt là nơi các giao dịch được thực hiện và cách chúng được sử dụng.

STM là khái niệm cấp độ ngôn ngữ: một chuỗi các thao tác không có hiệu lực cho đến khi giao dịch được thực hiện. Thông thường, điều này có nghĩa là các giá trị của một số biến toàn cầu/chia sẻ chỉ thay đổi khi giao dịch thành công. Thuộc tính được thực thi bởi thời gian chạy ngôn ngữ. Không có khái niệm cố hữu vốn có của sự kiên trì: các biến liên quan đến giao dịch có thể hoàn toàn là động trong tự nhiên (ví dụ: kích thước của hàng đợi công việc).

Giao dịch cơ sở dữ liệu là khái niệm cấp ứng dụng: một chuỗi các hoạt động dữ liệu không có hiệu lực cho đến khi giao dịch được thực hiện. Vì đây là một cơ sở dữ liệu, kiên trì là nền tảng: ý nghĩa của việc "có hiệu lực" bên trong cơ sở dữ liệu là dữ liệu được lưu trong một số kho lưu trữ liên tục.

Bạn có thể sử dụng cơ sở dữ liệu và giao dịch cơ sở dữ liệu để thực hiện thuật toán kiểu STM, nhưng bạn sẽ mất sự dễ dàng và thuận tiện (và có thể trong hầu hết các trường hợp hiệu suất) của việc thực hiện cấp ngôn ngữ.

+0

Bạn có ý nghĩa gì với "hoạt động"? Bạn có nghĩa là mã đang chạy? – Zubair

+0

Vâng, chính xác. Trong STM, tác động của mã trong giao dịch (ví dụ: các chuyển nhượng cho các biến, I/O) không hiển thị cho đến khi giao dịch được "cam kết". –

1

STM chủ yếu được sử dụng để đồng thời, trong khi giao dịch cơ sở dữ liệu là về tính nhất quán của dữ liệu.

+0

vì vậy các cảnh không nhất quán? – Zubair

+0

Trong cơ sở dữ liệu có những bất biến rõ ràng có thể được xác định và duy trì, chủ yếu là về bảo tồn ánh xạ giữa các trường chính trên bảng. Nếu tôi có bảng "Khách hàng" và "Địa chỉ" thì tôi có thể chỉ định rằng mỗi Địa chỉ phải có một Khách hàng phù hợp và cơ sở dữ liệu sẽ duy trì điều này. Haskell STM không làm điều này. –

+1

@Paul theo ý kiến ​​của tôi, loại nhất quán này không phải là độc quyền của cơ sở dữ liệu. Bạn luôn có thể thực thi một bất biến bên trong một giao dịch STM. –

4

Giao dịch STM có nhiều điểm chung với giao dịch cơ sở dữ liệu. Đặc biệt, các thuộc tính ACID quan trọng đối với các nhà thiết kế cơ sở dữ liệu, STM cung cấp Atomicity và Isolation. Nhất quán, tuy nhiên, là lập trình viên lập trình — bạn có thể viết các giao dịch STM vi phạm các bất biến của cấu trúc dữ liệu nội bộ, chẳng hạn. Cuối cùng, các giao dịch STM thường không bền; kết quả được lưu trữ trong RAM dễ bay hơi và nếu máy gặp sự cố sau khi giao dịch thành công, kết quả có thể bị mất. Điều đó, trong tâm trí của tôi, có lẽ là sự khác biệt nổi bật nhất giữa một giao dịch STM và một giao dịch cơ sở dữ liệu.

+0

Nếu bạn có thể mã hóa bất biến của bạn trong hệ thống kiểu, sau đó bạn không thể viết không nhất quán. –