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