資料庫面試題--Mycat
Mycat
- 1.Mycat是什麼?
- 2.什麼叫混合切分
- 3.在專案組中,切分後的庫從哪裡而來?
- 4.搭建mycat的核心配置檔案有哪些?
- 5.mycat分庫可以分成100個庫嗎?
- 6.進行庫表拆分時,拆分規則怎麼取捨?
- 7.Mycat中全域性ID方案有哪些?程式自定義全域性ID的方案有哪些?
- 8.Mycat的在分庫分表之後,它是怎麼支援聯表查詢的?
- 9.配置檔案不會變多,配置的節點主機會變多?
- 10.你們專案中分片的實現方式是什麼?
- 參考連結
1.Mycat是什麼?
Mycat是基於MySQL的資料庫中介軟體,目的是為了降低資料庫的壓力。
2.什麼叫混合切分
專案組中如果有水平切分,那專案組裡的開發方式就叫混合切分。或者專案組裡就是單純的垂直切分。
3.在專案組中,切分後的庫從哪裡而來?
在開發中是基於原有庫創建出來,並且原有庫和切分後的庫是資料表的設計是保持一致的。dm_order1,dm_order2,dm_order3這些庫是需要和dm_order的設計保持一致的!!!!
附註:所以,切分後的庫例如dm_order1,dm_order2,dm_order3這些都是有資料庫維護團隊創建出來的。
4.搭建mycat的核心配置檔案有哪些?
schem.xml 配置引數:邏輯庫,邏輯表,資料節點。節點主機
rule.xml:分片規則
server.xml:連線mycat的使用者資訊(賬號和密碼)
這裡是使用中介軟體做資料切分,感興趣的小夥伴還可以瞭解一下mysql的分庫分表高可用方案
5.mycat分庫可以分成100個庫嗎?
我們目前專案組分的是3個庫,我們說一般資料量大的話我們使用的是mycat中介軟體進行分片處理,如果更大的話,我們可以使用oracle資料庫,如果更大的話可以使用hadoop或是雲端儲存資料,不需要mycat作為工具手段。衡量的標準是專案有沒有對應的硬體裝置。 如果沒有,基本就是使用mysql 因為搭建一套雲環境或者大資料的環境基本都是超大型的公司。比如大資料中的所有的技術,例如hbase 或者是一大堆的伺服器 一大堆的網路路由裝置 或是私有云。或者是一大堆的資料庫運維實施人員都是成本
6.進行庫表拆分時,拆分規則怎麼取捨?
1.不存在熱點資料時,則使用連續分片
2.存在熱點資料時,使用離散分片或者是綜合分片
3.離散分片暫時遷移比較麻煩(但是mycat給出了資料遷移的指令碼,雖然現在還是不是很完美),綜合分片佔用總機器數量多
7.Mycat中全域性ID方案有哪些?程式自定義全域性ID的方案有哪些?
1.mycat的全域性id方案
(1)本地檔案方式
sequnceHandlerType = 0
配置sequence_conf.properties
使用next value for MYCATSEQ_XXX
(2)資料庫方式
sequnceHandlerType = 1
配置sequence_db_conf.properties
使用next value for MYCATSEQ_XXX或者指定autoIncrement
(3)本地時間戳方式
ID= 64 位二進位制 (42(毫秒)+5(機器 ID)+5(業務編碼)+12(重複累加)
sequnceHandlerType = 2
配置sequence_time_conf.properties
指定autoIncrement
\2. 程式方式
(1)Snowflake
(2)UUID
(3)Redis
8.Mycat的在分庫分表之後,它是怎麼支援聯表查詢的?
- 使用好ER表
- 善用全域性表
- 在sql上添加註解
/*!mycat:catlet=io.mycat.catlets.ShareJoin */
9.配置檔案不會變多,配置的節點主機會變多?
不會
10.你們專案中分片的實現方式是什麼?
在rule.xml中配置PartitionByMod
線上刷題小程式
參考連結
https://www.cnblogs.com/zhaozhitong/p/12450130.html
https://zhuanlan.zhihu.com/p/281636679
https://blog.csdn.net/jiongsui7605/article/details/94410680
https://blog.csdn.net/weixin_30682415/article/details/94993907