KETTLE如何實現實時的增量更新(兩種方法)

2021-06-27 07:07:25 字數 637 閱讀 5278

要實現實時的增量更新共有兩種方法:

1.通過觸發器。在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫入乙個臨時 表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。觸發器方式的優點是資料抽取的效能較高,缺點是要求業務表建立觸發器,對業務系統有 一定的影響。

2.通過時間戳。我是在兩邊資料庫的表裡插入了一列(用來取資料變動時的時間),然後做個計畫任務,設定每隔多少時間跑一次kettle,就行了。要實現「實時」,就只能把時間間隔設小一點。下面是網上找的:

它是一種基於快照比較的變化資料捕獲方式,在源表上增加乙個時間戳字段,系統中更新修改表資料的時候,同時修改時間戳字段的值。當進行 資料抽取時,通過比較系統時間與時間戳字段的值來決定抽取哪些資料。有的資料庫的時間戳支援自動更新,即表的其它欄位的資料發生改變時,自動更新時間戳字 段的值。有的資料庫不支援時間戳的自動更新,這就要求業務系統在更新業務資料時,手工更新時間戳字段。同觸發器方式一樣,時間戳方式的效能也比較好,資料 抽取相對清楚簡單,但對業務系統也有很大的傾入性(加入額外的時間戳字段),特別是對不支援時間戳的自動更新的資料庫,還要求業務系統進行額外的更新時間 戳操作。另外,無法捕獲對時間戳以前資料的delete和update操作,在資料準確性上受到了一定的限制。

sphinx 增量索引 實現實時更新

一.sphinx增量索引的設定 資料庫中的已有資料很大,又不斷有新資料加入到資料庫中,也希望能夠檢索到。全部重新建立索引很消耗資源,因為我們需要更新的資料相比較而言很少。例如。原來的資料有幾百萬條,而新增的只是幾千條。這樣就可以使用 主索引 增量索引 的模式來實現近乎實時更新的功能。這個模式實現的基...

MongoDB 如何實現實時排名

當我們將考試分數錄入系統時,會要對學生的分數進行乙個排名,這個不困難。困難的是當學生的分數變更時,如何實時更新這些排名?如果我們將排名儲存為乙個字段,那麼意味著每次修改分數都會導致重新計算排名,以及更新資料庫中的排名字段值。這個計算量可大可小,極端的情況下,如果乙個學生的分數從第一名變成 0 比如因...

JS如何實現實時獲取網路時間

首先我們列出常用的js獲取網路時間的 getfullyear 獲取年份 getmonth 獲取月份 0 11 getdate 獲取日 gethours 獲取小時 getminutes 獲取分鐘 getsconds 獲取秒 不會自動更新 注意 月份獲取 預設月份從0 11,所以我們使用時為達到正常使用...