獲得資料庫操作日誌的三種方式
資料庫稽核(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框架
相關文章
- Python操作MySQL資料庫的5種方式PythonMySql資料庫
- SQLServer資料庫日誌太大處理方式SQLServer資料庫
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- Oracle實驗6--掌握Oracle資料庫的日誌操作Oracle資料庫
- 另一種列印輸出日誌資訊的方式
- Centos系統關閉Mysql資料庫查詢操作日誌的方法CentOSMySql資料庫
- 三種 Post 提交資料方式
- tensorflow載入資料的三種方式
- oracle資料庫mmnl日誌很大Oracle資料庫
- 資料庫altert日誌中的GTX提示資料庫
- TSPITR方式資料庫找回誤操作丟失的資料資料庫
- 資料誤操作,刪庫跑路?教你使用ApexSQLLog工具從 SQLServer日誌恢復資料!SQLServer
- 資料庫SQL調優的幾種方式資料庫SQL
- MySql資料庫備份的幾種方式MySql資料庫
- 獲取或操作DOM元素特性的幾種方式
- mysql資料庫基本操作(三)MySql資料庫
- 瀚高資料庫日誌挖掘方法資料庫
- openGauss資料庫日誌管理指導資料庫
- IIS 日誌匯入到資料庫的方法資料庫
- Java中獲取Class物件的三種方式Java物件
- 日誌管理系統,多種方式總結
- [重慶思莊每日技術分享]-備庫使用RMAN獲得歸檔日誌
- 前端請求後端資料的三種方式!前端後端
- js保護內部資料的三種方式JS
- Wordpress獨立站資料庫連線錯誤的三種解決方式資料庫
- 一種簡化操作日誌記錄方案
- 資料庫MySQL一般查詢日誌或者慢查詢日誌歷史資料的清理資料庫MySql
- 操作sqlserver資料庫常用的三個方法SQLServer資料庫
- Python操作三大主流資料庫Python資料庫
- Sql Server2014資料庫清理日誌SQLServer資料庫
- springboot+logback日誌非同步資料庫Spring Boot非同步資料庫
- 國產化之 .NET Core 操作達夢資料庫DM8的兩種方式資料庫
- 微信小程式三種獲取使用者資訊的方式微信小程式
- PHP 三種方式實現鏈式操作PHP
- python+資料庫(三)用python對資料庫基本操作Python資料庫
- MogDB openGauss資料庫擴縮容的幾種方式資料庫
- MySQL 資料庫定時備份的幾種方式MySql資料庫
- 資料庫訪問幾種方式對比資料庫