從底層資料庫遷移看CQRS的好處
CQRS的好處是,底層持久化更改,領域層無需更改任何程式碼。
CQRS是什麼,我這裡不多說了,下面把我個人的電子書系統的遷移案例,來看一下CQRS的優勢。
我們很看中CQRS,有時候就是這樣,不明也要認為好,但到底真的那裡好?
ebook系統後臺底層是 mongodb , 我想用七牛代替部分,部分也就是大資料體,mongodb只儲存用於 query的欄位,你懂的。
我採用CQRS的JSDM框架開發,這個框架不過多介紹
程式碼如下是領域層事件監聽檔案部分程式碼:
這裡要說明的是,這個檔案不在領域層,而是應用層,應用層監聽領域層事件,這個監聽的是領域Aggre物件建立的事件,不要以為系統就是簡單的CURD,這裡為了方便而引用了 create 事件而已。
我們發現 tinydb.save 是用來儲存的,只要代替這個方法就可改變底層持久化方式。
那麼,領域層如何獲得Aggre例項呢,我這裡沒有用事件回溯,只是簡單查詢資料。
如果改變了底層持久化,那麼領域層的 getID 也要改變,那隻要更改如下程式碼即可。
但這次要更改領域層的程式碼了:
只要更改 dbs.get 即可,這是個介面。這個介面形式如下:
修改這兩處即可,領域層程式碼無需改動任何程式碼。
CQRS是什麼,我這裡不多說了,下面把我個人的電子書系統的遷移案例,來看一下CQRS的優勢。
我們很看中CQRS,有時候就是這樣,不明也要認為好,但到底真的那裡好?
ebook系統後臺底層是 mongodb , 我想用七牛代替部分,部分也就是大資料體,mongodb只儲存用於 query的欄位,你懂的。
我採用CQRS的JSDM框架開發,這個框架不過多介紹
程式碼如下是領域層事件監聽檔案部分程式碼:
function e1(repos, services) { function handle(NAME, data) { tinydb.save(NAME, data, function () { }); } handle.eventName = "*.*.create" return handle; } <p class="indent"> |
這裡要說明的是,這個檔案不在領域層,而是應用層,應用層監聽領域層事件,這個監聽的是領域Aggre物件建立的事件,不要以為系統就是簡單的CURD,這裡為了方便而引用了 create 事件而已。
我們發現 tinydb.save 是用來儲存的,只要代替這個方法就可改變底層持久化方式。
那麼,領域層如何獲得Aggre例項呢,我這裡沒有用事件回溯,只是簡單查詢資料。
如果改變了底層持久化,那麼領域層的 getID 也要改變,那隻要更改如下程式碼即可。
但這次要更改領域層的程式碼了:
var domain = require("jsdm")(); // 更改 dbs.get 即可 domain.register("get",dbs.get).seal(); <p class="indent"> |
只要更改 dbs.get 即可,這是個介面。這個介面形式如下:
function(type, id, cb) { // 實現程式碼 } <p class="indent"> |
修改這兩處即可,領域層程式碼無需改動任何程式碼。
[該貼被brighthas於2013-11-29 22:10修改過]
相關文章
- 【遷移】使用rman遷移資料庫資料庫
- 資料庫遷移資料庫
- 從關聯式資料庫向NoSQL遷移資料庫SQL
- Django應用資料庫從MySQL到PostgreSql的遷移Django資料庫MySql
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- Odoo遷移資料庫Odoo資料庫
- redis資料庫遷移Redis資料庫
- Cacti 遷移資料庫資料庫
- 資料庫遷移方案資料庫
- ORACLE資料庫遷移Oracle資料庫
- 遷移資料庫成功!資料庫
- 建立資料庫遷移資料庫
- 從雲資料遷移服務看MySQL大表抽取模式MySql模式
- 資料庫-oracle-資料庫遷移資料庫Oracle
- 資料庫檔案的遷移資料庫
- 【雜談】從底層看鎖的實現2
- Oracle資料庫資料遷移流程Oracle資料庫
- 資料庫遷移神器——Flyway資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- 用rman遷移資料庫資料庫
- 資料庫遷移手記資料庫
- django資料庫遷移-15Django資料庫
- SQL Server資料庫遷移SQLServer資料庫
- mysql資料庫遷移 mysqldumpMySql資料庫
- 遷移資料庫到ASM資料庫ASM
- 【資料遷移】RMAN遷移資料庫到ASM(三)遷移onlinelog等到ASM資料庫ASM
- 資料庫的冷備份遷移資料庫
- 資料庫的升級及遷移資料庫
- 資料庫遷移的幾個方式資料庫
- 資料庫線上遷移的設想資料庫
- 從 SQL Server 到 MySQL (一):異構資料庫遷移ServerMySql資料庫
- 雲資料庫管理與資料遷移資料庫
- 【資料遷移】RMAN遷移資料庫到ASM(一)建立ASM磁碟組資料庫ASM
- 海量資料處理_資料泵分批資料遷移
- Django資料從sqlite遷移資料到MySQLDjangoSQLiteMySql
- 騰訊雲 雲資料庫遷移資料庫
- laravel 資料庫遷移時報錯Laravel資料庫