獲得資料庫操作日誌的三種方式
資料庫稽核(Audit)日誌是對資料庫CRUD操作的記錄,是一種事件日誌,EventSourcing事件溯源類似這種架構,資料庫日誌輸出可以供大資料實現ETL分析。有的資料庫自身提供日誌的輸出介面,這裡討論的是普遍意義上的三種方法。
基於資料庫觸發器
每個RDBMS支援觸發器,儘管其語法和功能略有不同。
PostgreSQL提供了一基於觸發器的稽核日誌。非常容易實現。將舊行狀態和新行狀態儲存在JSON列中是一個很好的主意,因為即使源表結構發生更改,它也允許我們重用相同的功能。
傳統上,用於捕獲事件的最常見技術是使用資料庫或應用程式級觸發器。該技術之所以仍然非常普及,是由於其簡單性和熟悉性。
稽核日誌是一個單獨的結構,記錄了每行發生的每個插入,更新或刪除操作。
基於應用持久層級觸發器
有一些框架,例如Hibernate Envers,可以在應用程式級別模擬資料庫觸發器。優點是您不必介意觸發器的資料庫特定語法,因為無論如何,事件都是由永續性上下文捕獲的。缺點是您無法記錄不流經應用程式的資料更改事件(例如,來自資料庫控制檯或共享同一RDBMS的其他系統的更改)。Hibernate Envers是Hibernate ORM擴充套件,它使您可以立即捕獲更改事件。
基於事務日誌的CDC
儘管資料庫或應用程式級觸發器是CDC的非常常見的選擇,但是還有更好的方法。稽核日誌只是資料庫事務日誌(也稱為重做日誌或預寫日誌)的副本,該日誌已經儲存了基於行的修改。
因此,您實際上並不需要使用資料庫或應用程式級觸發器來建立新的稽核日誌結構,只需要掃描事務日誌並從中提取CDC事件。
從歷史上看,每個RDBMS都使用其自己的方式對基礎事務日誌進行解碼:
- 甲骨文提供GoldenGate
- SQL Server 為CDC提供內建支援
- MySQL已被廣泛用於Web應用程式,它允許您透過各種第三方解決方案(例如LinkedIn的DataBus)捕獲CDC事件。
一系列現有的開源產品提供CDC,包括:Maxwell,SpinalTap,Yelp的MySQL Streamer和Debezium。現有的解決方案在捕獲源自事務日誌的實時更改方面相似。例如,透過使用MySQL的binlog複製協議或PostgreSQL的複製插槽。
Debezium提供了一種聯結器庫支援當今可用的各種資料庫。這些聯結器可以監視和記錄資料庫模式中的行級更改,然後將更改釋出到諸如Kafka的流服務上。由於Debezium也需要Apache Kafka和ZooKeeper,因此設定Debezium並在生產環境中執行將更具挑戰性。
Netflix計劃於2020年開源的資料庫資料複製重器:DBLog,一個類似Oracle OGG的通用的變更資料捕獲CDC框架
相關文章
- SQL SERVER 資料庫日誌收縮整理 三種方法軼事分離資料庫而是清空日誌三是截斷日誌SQLServer資料庫
- SQLServer資料庫日誌太大處理方式SQLServer資料庫
- Python操作MySQL資料庫的5種方式PythonMySql資料庫
- Oracle資料庫減少redo日誌產生方式Oracle資料庫
- 第12章 管理資料庫日誌記錄方式資料庫
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 資料儲存的三種方式
- Oracle實驗6--掌握Oracle資料庫的日誌操作Oracle資料庫
- 資料儲存的方式(只說三種方式)
- Android 獲得View寬高的幾種方式AndroidView
- 【LINUX 學習】Ext3 的三種日誌記錄方式Linux
- 三種 Post 提交資料方式
- informix資料庫中物理日誌和邏輯日誌兩種非常重要的磁碟構件ORM資料庫
- Centos系統關閉Mysql資料庫查詢操作日誌的方法CentOSMySql資料庫
- 兩種啟動資料庫的方式資料庫
- MySql、SqlServer、Oracle 三種資料庫查詢分頁方式MySqlServerOracle資料庫
- MySQL資料庫中的日誌檔案---(1)錯誤日誌MySql資料庫
- 大資料三種處理方式大資料
- tensorflow載入資料的三種方式
- oracle資料庫mmnl日誌很大Oracle資料庫
- 分析資料庫日誌(LogMiner)資料庫
- 清除SQL Server資料庫日誌SQLServer資料庫
- 另一種列印輸出日誌資訊的方式
- 資料庫altert日誌中的GTX提示資料庫
- MySQL資料庫中的日誌檔案---(3)慢查詢日誌MySql資料庫
- MySQL資料庫中的日誌檔案---(2)普通查詢日誌MySql資料庫
- Java中獲取Class物件的三種方式Java物件
- MySql資料庫備份的幾種方式MySql資料庫
- 資料庫SQL調優的幾種方式資料庫SQL
- mybatis連線資料庫的幾種方式MyBatis資料庫
- Oracle資料庫的四種啟動方式Oracle資料庫
- 獲取或操作DOM元素特性的幾種方式
- 減少SQL日誌的三種方法(轉)SQL
- mysql資料庫基本操作(三)MySql資料庫
- 前端請求後端資料的三種方式!前端後端
- js保護內部資料的三種方式JS
- Oracle資料庫重做日誌及歸檔日誌的工作原理說明Oracle資料庫
- 日誌管理系統,多種方式總結