我們又把近期的一些社區熱點問題做了一次彙總,同步給所有關註StoneDB的同學們~ 提問Qustions & 解答Answers Q:現在StoneDB單機什麼硬體規格部署能分析100TB級別的數據? A:像這麼大的存儲量,系統一般是分析類的,存儲可以是單塊盤容量是7.6TB的SSD,CPU核數和主 ...
我們又把近期的一些社區熱點問題做了一次彙總,同步給所有關註StoneDB的同學們~
提問Qustions & 解答Answers
Q:現在StoneDB單機什麼硬體規格部署能分析100TB級別的數據?
A:像這麼大的存儲量,系統一般是分析類的,存儲可以是單塊盤容量是7.6TB的SSD,CPU核數和主頻越高越好。
Q:StoneDB什麼時候支持delete功能?
A:StoneDB預計在10月20號會發佈StoneDB_5.7_V1.0.1版本,屆時會支持delete功能,目前只是暫時不支持,主要是為了優化性能,給用戶更好的使用體驗。
Q:當前StoneDB支持哪些客戶端管理軟體嗎?類似MySQL下的Navicat客戶端。
A:StoneDB支持Navicat、DBeaver、SQLyog等客戶端,同時對應標準的JDBC,ODBC等方式也是支持的。
Q:1、創建表時,可以選擇engine = innodb 或 tianmu 嗎?engine = innodb 的表會更新到 tianmu 去嗎?2、如果沒指定引擎,表預設引擎是什麼?
A:1、StoneDB 支持在創建表時顯式指定表的存儲引擎類型。另外,StoneDB支持將engine=innodb的表自動更新到 engine=tianmu 的表中,在主從架構下,將主節點預設的存儲引擎設置為innodb,從節點預設的存儲引擎設置為tianmu,則數據在主從同步過程中自動完成行列轉換。
2、如果創建表沒有指定存儲引擎,表的存儲引擎取決於參數default_storage_engine的值。建議TP端的參數設置為default_storage_engine=innodb,AP端的參數設置為default_storage_engine=tianmu。
Q:一份數據在主節點可以同時 行存&列存,以兩種形態存放嗎?如果數據同時以兩種形態存放, 則任何數據修改需要維護兩個 copy , 如果只以一種形態存放, 那如何兼顧TP/AP 兩種業務操作?
A:現階段StoneDB HTAP是通過MySQL主從架構來實現的(這隻是1.0的架構,未來在2.0的架構中會有完全不同的實現),採用binlog同步數據:主節點使用InnoDB引擎,可讀寫,提供OLTP場景的讀寫業務;從節點使用StoneDB引擎,只讀,OLAP查詢節點,實現了OLAP 的多種重要特性,滿足數據實時查詢及高併發複雜查詢場景。
Q:對於主節點是innodb,slave是stoneDB應對TP和AP的場景,,對目前你們不支持的DDL和DML,比如修改欄位長度、創建、刪除索引、delete等這些你們是如何處理的,到slave會忽略?
A:遇到不支持的DDL和DML可以通過以下辦法解決。如果主從之間沒有開啟GTID模式,主庫在變更前可以關閉當前線程的binlog(set sql_log_bin=off),這樣就不會同步到從庫;如果主從之間開啟GTID模式,主庫在變更前可以設置GTID的值,從庫可以執行這個GTID值的空事務。
Q:因為MySQl適合OLTP場景下的事務處理,那每次進行新增、修改、刪除,這部分數據是如何同步到StoneDB里的呢?因為StoneDB的限制,有些DDL不支持,比如修改欄位長度、類型、重命名欄位等,如果這部分在我們實際開發和應用中對MySQL進行了操作會影響MySQL和StoneDB之間的數據保持一致性嗎?
A:如果StoneDB為從庫,那麼主庫做的DML會通過binlog同步到從庫,delete目前不支持,TP端可以用邏輯刪除標記為這一行為刪除狀態。例如新增一個欄位,這個欄位用於標識這一行是否是刪除狀態,1表示刪除,0表示未刪除,這種方法在TP端使用update代替了delete。原生delete支持將在10月20號的StoneDB_5.7_v1.0.1版本中支持,詳細的可以看看我們的Roadmap。
Q:你們文檔中列舉的使用限制是針對存儲引擎是Tianmu的吧?
A:是的,文檔中列舉的使用限制是針對存儲引擎為Tianmu的情形,如果存儲引擎為 InnoDB ,與使用 MySQL 無任何差異。
Q:我們現在的業務數據表都是基於行式存儲引擎InnoDB創建的,如果要用StoneDB,這部分業務數據需要遷移?同步?需要用什麼工具嗎?
A:
InnoDB遷移到StoneDB,常用的mysqldump,mysqldumper、gravity都可以支持。停機遷移可以考慮使用mysqldump 或者mydumper,可以參考
mysqldump:
https://stonedb.io/zh/docs/O&M-Guide/backup-and-recovery/use-mysqldump-backup-and-restore/
mydumper:
https://stonedb.io/zh/docs/O&M-Guide/backup-and-recovery/use-mydumper-full-backup
熱遷移StoneDB基本支持當前市面上MySQL熱遷移工具,例如Mydumper+otter(mysqldump也可以,mydumper支持多線程全量備份,大數據量建議使用mydumper多線程備份),gravity等。
Mydumper+otter可以參考這個方案操作,從mydumper備份文件 metadata 中找到binlog位點填入otter位點配置,就可以做到全量數據同步後進行增量數據同步,
mydumper 可以參考上面提供的鏈接,otter可以參考otter 項目文檔:https://github.com/alibaba/otter
gravity可以參考我們的官方文檔:https://stonedb.io/zh/docs/data-migration-to-stonedb/use-gravity-to-migrate
Q:集群方案是基於什麼演算法?需要引入zk這樣的額外組件嗎?
A:目前集群採用的是HA架構,搭建和MySQL高可用架構一樣,再引入keepalive或者ProxySQL之類的流量分攤組件即可,不需要使用zk組件。
Q:我們現在業務系統通過JAVA生態體系技術開發,如果用InnoDB的話,我們現有持久層對MySQL的操作需要進行哪些改造?
A:無需改造。
Q:關於檢索的需求,目前的數據量使用MySQL不能很好的支持全文檢索,我們瞭解到其他友商的解決方案也是要配合ES。StoneDB的介紹上有寫可以取代ES集群支持檢索業務,這塊StoneDB的能力大概是怎樣的?
A:目前StoneDB在行存引擎支持了全文檢索,列存引擎尚未支持。如果有任何一位用戶提供給我們對全文檢索的具體需求和使用場景做詳細描述,我們會派相關技術人員展開深入交流,共同探討解決方案。
Q:1、將來有沒有可能支持CEP?2、支持prewhere這樣的功能麽?3、支持物化視圖麽?4、是個單機資料庫麽?
A:1、會支持CEP的。
2、不支持prewhere。
3、不支持物化視圖,MySQL也不支持物化視圖,理論上可以結合觸發器達到物化視圖的功能。
4、目前是單機,將來會實現集群。
Q:StoneDB知識節點(KN)里存儲的是什麼數據?知識節點和元數據節點有啥不同呢?
基本的元數據(如列定義,約束條件等),數據特征及更深度的數據統計信息(如記錄值範圍段的標識BitMap, 統計當前Column中各記錄的值分佈信息等)。
A:數據元信息節點和數據節點是一一對應的,記錄對應數據塊中聚合函數值(min,max, sum,avg ...),record count,null 記錄標記等信息。
Q:1、假設我在TP中創建了一個表testA,並指明engine=innodb,在進行一些業務寫入操作後,這張表是否會同步到AP中?(相當於在TP中的表在AP中也有一份)2、如果我要對testA進行分析,是不是需要等TP同步之後才能進行分析?
A:如果在TP端創建表時指定了存儲引擎engine=innodb,那麼這張表會同步到AP端,但在AP端它的存儲引擎還是innodb。
如果繼續對這張表做analyze操作,不需要等AP端同步完,在TP端的analyze也會同步到AP端。但因為這張表在AP端還是innodb引擎,所以就沒有Tianmu存儲引擎的特性。