Những thuật toán / vấn đề đọc nào bạn muốn giới thiệu để giải quyết các giao dịch / khóa đọc-ghi?


10

Một giao dịch cơ sở dữ liệu cổ điển đơn giản hóa có thể được xem như:

  • đọc các mục M
  • thực hiện một số tính toán dựa trên những lần đọc
  • viết một số kết quả N dựa trên các tính toán này, có thể bao gồm các yếu tố được đọc ban đầu.

Khi thực hiện các giao dịch này (đồng thời) các thuộc tính ACID cần được duy trì.

Chính xác các yêu cầu tương tự (N cập nhật dựa trên M đọc giao dịch) tồn tại trong các hệ thống đồng thời không phải DBMS khác.

Tôi quan tâm đến việc tìm hiểu các thuật toán tồn tại để thực hiện / giải quyết các giao dịch này và điểm mạnh và điểm yếu tương đối của các thuật toán này là gì. Bạn có thể giới thiệu một số đọc? Đây có thể là sách hoặc tài liệu tham khảo / hướng dẫn trực tuyến.

Làm rõ:

Vì vậy, ví dụ, một thuật toán ngây thơ có thể là mỗi giao dịch thực hiện một khóa toàn cầu duy nhất, có hiệu lực buộc phân luồng đơn và loại bỏ đồng thời. Một thuật toán phức tạp hơn một chút sẽ là các khóa đọc / ghi mục riêng lẻ, với một thứ tự để tránh bế tắc). Vv, vv Có một nguồn tài liệu tốt các thuật toán khác nhau để giải quyết vấn đề này. Ngay cả một câu trả lời chỉ chỉ một thuật toán duy nhất với điểm mạnh và điểm yếu của nó cũng sẽ hữu ích.


3
Câu hỏi này chắc chắn nằm trong phạm vi của trang web này. Tôi khuyên bạn nên viết thêm một chút về bối cảnh mà bạn đang làm việc. Hiện tại nó khá chung chung và cởi mở.
Dave Clarke

Bạn có nghĩ rằng nó đáng để đọc lại vì vậy nó chính xác là câu hỏi cơ sở dữ liệu? IE đại loại như "Tôi có một cơ sở dữ liệu có thể đọc và ghi và tôi muốn có thể đọc và viết giao dịch với các thuộc tính ACID. Thuật toán nào tồn tại để đảm bảo các thuộc tính này"
Nick FortesTHER

Đọc lại câu hỏi có thể dẫn đến câu trả lời gần hơn với những gì bạn đang tìm kiếm, chẳng hạn như cung cấp thêm chi tiết về vấn đề bạn đang cố gắng giải quyết; hiện tại bạn chỉ đưa ra gợi ý. Trong mọi trường hợp, có vẻ như bạn đang yêu cầu các thuật toán giao dịch cơ sở dữ liệu cổ điển.
Dave Clarke

@Dave - cảm ơn, tôi đã chỉnh sửa. Tốt hơn?
Nick FortesTHER

1
Bạn đã quen thuộc với sách giáo khoa DBMS như Ramakrishnan và Gehrke chưa? Và nếu bạn không hỏi về nội bộ của DBMS, bạn có thể làm rõ câu hỏi để cho chúng tôi biết sự khác biệt giữa DBMS và những gì bạn quan tâm không?
Maverick Woo

Câu trả lời:


10

Cuốn sách Hệ thống thông tin giao dịch của Weikum và Vossen bao gồm khá nhiều lĩnh vực, cả về mặt lý thuyết và thực tiễn, từ các quan điểm khác nhau, không chỉ các giao dịch. Nó dài khoảng 1000 trang, vì vậy sẽ khiến bạn bận rộn vào một hoặc hai ngày cuối tuần. Mặt khác, nó đã gần 10 tuổi, vì vậy có thể có một cái gì đó cập nhật hơn. Các cuốn sách khác trong dòng bao gồm Kiểm soát và Phục hồi đồng thời trong Hệ thống cơ sở dữ liệu của Bernstein, P., Hadzilacos, V. và Goodman, N, Addison-Wesley, 1987, Xử lý giao dịch: Khái niệm và kỹ thuật của Jim Gray và Andreas Reuter, và Nguyên tắc của xử lý giao dịchcủa Philip A. Bernstein và Eric Newcomer, 2009. Tôi chưa thấy cái thứ hai, nhưng là cái gần đây nhất có thể là một nơi tốt để bắt đầu, mặc dù giải pháp của bạn có thể được tìm thấy trong các văn bản cũ hơn. Một chuyến đi đến thư viện có thể đáng giá.

Một văn bản hoành tráng trong lĩnh vực này là Giao dịch nguyên tử của Nancy Lynch et al. Nó trình bày một tài khoản chính thức và bằng chứng về một số loại thuật toán mà bạn quan tâm. Nó khá trang trọng và tẻ nhạt, vì vậy có thể không hợp với sở thích của bạn.

Rất nhiều công việc gần đây được dành cho Bộ nhớ giao dịch phần mềm , đang áp dụng các ý tưởng giao dịch cho các ứng dụng đa luồng. Có hàng chục ấn phẩm về chủ đề này mỗi năm: trang wikipedia cung cấp nhiều tài liệu tham khảo.


1
cảm ơn dave, đặc biệt là cụm từ "Bộ nhớ giao dịch phần mềm", tôi đã không bắt gặp cái tên này
Nick FortesTHER

1
STM là một chủ đề thực sự nóng trong nghiên cứu ngôn ngữ lập trình ngày nay. Có một cuộc đua để xem liệu các mô hình lập trình dựa trên STM hoặc Actor sẽ là nền tảng của các ngôn ngữ lập trình đồng thời (= tất cả) trong tương lai.
Dave Clarke

1
Ngoài STM, một từ khóa cụ thể cần tìm trong các tài liệu tham khảo này là MVCC. Nó được sử dụng trong hầu hết các DBMS hiện đại: en.wikipedia.org/wiki/Multiversion_concurrency_control
Maverick Woo

@supercooldave Tôi không chắc đó là một cuộc đua: Tôi nghĩ các ngôn ngữ trong tương lai sẽ phải hỗ trợ một chút ở cả mức độ này hay mức độ khác.
Marc Hamann

@Marc Harmann: nói một cách ẩn dụ.
Dave Clarke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.