簡體   English   中英

Java中的LDAP事務

[英]LDAP transaction in Java

我必須為我們的用戶管理工具創建一個批量插入功能。 我們使用spring LDAP構建了一個小型內部庫,一切都適用於單用戶管理(CRUD)。

我想嘗試一次插入數百條記錄並在出現問題時回滾。

有沒有辦法在LDAP中創建事務,就像它存在於數據庫中一樣?

謝謝你的想法。

這是@adrianboimvaser的后續內容。

請注意, Spring LDAP事務支持不使用XA事務,而是“邏輯”補償事務,因此LDAP的回滾將是針對LDAP的補償操作。 雖然這是一項改進,但沒有任何交易可以意識到這與典型的交易“不一樣”,就像它存在於數據庫中一樣。 即不支持事務的ACID屬性。

請注意,即使使用相同的邏輯事務,這也不是JTA XA事務; 不會執行兩階段提交,因此提交和回滾可能會產生意外結果。

例如:如果要向LDAP添加100個條目,則每個記錄將逐個添加到LDAP。 如果上次添加失敗,則回滾操作將刪除事務中先前創建的99個條目。 但是,如果由於某種原因(例如,網絡連接是由於導致第100個條目失敗的LDAP),前99個條目實際上無法被刪除,那么即使您嘗試回滾事務,也會導致之間的不一致。數據庫和LDAP。 即在LDAP中將有99條記錄(因為它們無法刪除),這些記錄在數據庫中不存在(因為這些記錄從未插入或實際回滾過)。

我不確定您的情況是什么,但如果您經常對LDAP進行大量更新,您可能需要考慮使用實際數據庫來避免事務問題以及優化性能,因為LDAP設計用於具有相對較慢寫入的快速讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM