TribeDBNode.js 的 MySQL 分表分庫(kù)訪問(wèn)中間件
Node.js 的 MySQL 分表分庫(kù)數(shù)據(jù)訪問(wèn)中間件,實(shí)現(xiàn)MySQL數(shù)據(jù)的分布式集群儲(chǔ)存管理。在處理海量數(shù)據(jù)、高并發(fā)訪問(wèn)時(shí),獲得更加優(yōu)越的性能及橫向擴(kuò)展能力。它包含以下主要特性:
-
可伸縮、高擴(kuò)展的架構(gòu)
-
自動(dòng)路由分庫(kù),維護(hù)數(shù)據(jù)庫(kù)連接池
-
支持?jǐn)?shù)據(jù)表的“橫向”和“縱向”分表
-
支持“一主多從”式讀寫(xiě)分離
-
分布式并行處理,成倍提升性能
-
對(duì)應(yīng)用層隱藏?cái)?shù)據(jù)來(lái)源及技術(shù)細(xì)節(jié)
擁有以上特點(diǎn)意味著,可隨時(shí)通過(guò)增加普通級(jí)別數(shù)據(jù)庫(kù)服務(wù)器的方式,方便地?cái)U(kuò)展整體系統(tǒng)性能,而無(wú)需修改業(yè)務(wù)層架構(gòu)和代碼。理論上TribeDB的擴(kuò)展能力上線在于主庫(kù)單表插入性能和主從數(shù)據(jù)同步開(kāi)銷。通過(guò)合理設(shè)計(jì)“橫向”和“縱向”分表和數(shù)據(jù)切分粒度,可輕松應(yīng)對(duì)上億級(jí)別的數(shù)據(jù)量和訪問(wèn)請(qǐng)求。
快速上手:
var tribe = require('tribedb');
//載入配置文件,sync選項(xiàng)為true 表示同步讀取解析配置文件
tribe.configure('/path/to/tribe.conf',{sync:true});
//通過(guò)數(shù)據(jù)庫(kù)表名建立查詢請(qǐng)求
var db = tribe.createQuery('my_table');
//插入封裝
db.data({title:'標(biāo)題'}).insert(function(err, data){
console.log(err);
console.log(data);
});
//查詢封裝
db.where('title','標(biāo)題').order_by('time','DESC').limit(1).select(function(err, data){
console.log(err);
console.log(data);
});
//不使用封裝的操作,直接執(zhí)行sql
tribe.query('SELECT * FROM user_0 WHERE id=1 LIMIT 1',function(err, data){
console.log(err);
console.log(data);
});
TribeDB 通過(guò)全局唯一的表名,自動(dòng)連接對(duì)應(yīng)的數(shù)據(jù)庫(kù),并通過(guò)分表配置,將操作映射到涉及的分表,同時(shí)完成讀寫(xiě)分離。 一切都由 TribeDB 自動(dòng)完成,業(yè)務(wù)層不必關(guān)心數(shù)據(jù)的位置。當(dāng)數(shù)據(jù)庫(kù)負(fù)載過(guò)高需要添加服務(wù)器時(shí),只需簡(jiǎn)單修改配置文件而不必修改業(yè)務(wù)代碼,甚至將整個(gè)架構(gòu)推倒重來(lái)。繼續(xù)閱讀文檔詳細(xì)了解如何使用。
