sql跨庫查詢優(yōu)化 Mybaits springboot有哪些分庫分表插件推薦?
Mybaits springboot有哪些分庫分表插件推薦?你可以通過Spring Boot·邁巴蒂斯·JDBC實(shí)現(xiàn)數(shù)據(jù)庫和表的共享。Harding-jdbcsharding-JDBC:定位為輕量級s
Mybaits springboot有哪些分庫分表插件推薦?
你可以通過Spring Boot·邁巴蒂斯·JDBC實(shí)現(xiàn)數(shù)據(jù)庫和表的共享。
Harding-jdbcsharding-JDBC:定位為輕量級spring mvc,它在Java的JDBC層提供附加服務(wù)。它使用客戶端直接連接數(shù)據(jù)庫,以jar包的形式提供服務(wù),不需要額外的部署和依賴??梢岳斫鉃樵鰪?qiáng)的JDBC驅(qū)動,完全兼容JDBC和各種ORM框架。
它適用于任何基于Java的ORM框架,如JPA、Hibernate、MyBatis、Spring JDBC模板或直接使用JDBC。它基于任何第三方數(shù)據(jù)庫連接池,如DBCP、C3P0、BoneCP、Druid、HikariCP等。支持任何實(shí)現(xiàn)JDBC規(guī)范的數(shù)據(jù)庫,如MySQL、Oracle、SQLSever和PostgreSQL,以及任何遵循SQL92標(biāo)準(zhǔn)的數(shù)據(jù)庫。Sharding-jdbc架構(gòu)ShardingSphere-JDBC采用去中心化架構(gòu),適用于Java開發(fā)的高性能輕量級OLTP應(yīng)用。
功能數(shù)據(jù)碎片化:子庫子表,讀寫分離,分布式主鍵;分布式交易;XA強(qiáng)一致事務(wù),靈活事務(wù);數(shù)據(jù)庫治理;配置動態(tài)、熔斷和禁用,以及呼叫鏈路跟蹤;子庫、子表的方法有縱向子表、縱向子庫、橫向子表、橫向子庫。
豎表拆分:將一個(gè)寬表的字段根據(jù)訪問頻率的原則和是否是大字段拆分成多個(gè)表,可以使業(yè)務(wù)清晰,提高一些性能。拆分后,從業(yè)務(wù)角度盡量避免聯(lián)查,否則性能得不償失。垂直庫分類:根據(jù)業(yè)務(wù)耦合對多個(gè)表進(jìn)行分類,分別存儲不同的庫。這些庫可以分布不同的服務(wù)器,使得訪問壓力由多臺服務(wù)器承載,大大提高了性能,提高了整體架構(gòu)的業(yè)務(wù)清晰性。不同的業(yè)務(wù)庫可以根據(jù)自身?xiàng)l件定制優(yōu)化方案。但是它需要解決跨庫帶來的所有復(fù)雜問題。橫向數(shù)據(jù)庫分離:將一個(gè)表的數(shù)據(jù)(按數(shù)據(jù)行)分成幾個(gè)不同的數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫只有這個(gè)表的部分?jǐn)?shù)據(jù),而這些數(shù)據(jù)庫可以分布在不同的服務(wù)器上,這樣就使得訪問壓力由多個(gè)服務(wù)器來承擔(dān),大大提高了性能。它不僅要解決跨數(shù)據(jù)庫帶來的所有復(fù)雜性問題,還要解決數(shù)據(jù)路由問題。水平表拆分:將一個(gè)表的數(shù)據(jù)(按數(shù)據(jù)行)拆分成同一個(gè)數(shù)據(jù)庫中的多個(gè)表,每個(gè)表只有這個(gè)表的部分?jǐn)?shù)據(jù),可以稍微提高性能,它只是作為水平數(shù)據(jù)庫的補(bǔ)充優(yōu)化。一般來說,在系統(tǒng)設(shè)計(jì)階段,要根據(jù)業(yè)務(wù)耦合的緊密程度來確定垂直數(shù)據(jù)庫和表的拆分方案。當(dāng)數(shù)據(jù)量和訪問壓力不是特別大的時(shí)候,首先要考慮緩存。、讀寫分離、索引技術(shù)等。如果數(shù)據(jù)量非常大并且持續(xù)增長,可以考慮橫向子數(shù)據(jù)庫和橫向子表方案。
介紹mav:請將$ {}更改為實(shí)際版本號。
規(guī)則配置ShardingSphere-JDBC可以通過四種配置:Java、YAML、Spring Namespace和Spring Boot啟動器。開發(fā)人員可以根據(jù)場景選擇合適的配置方法。
創(chuàng)建一個(gè)數(shù)據(jù)源,通過ShardingSharedTasource工廠和規(guī)則配置對象獲取ShardingSharedTasource。這個(gè)對象是從JDBC的標(biāo)準(zhǔn)DataSource接口實(shí)現(xiàn)的,可以用于原生JDBC開發(fā)或者使用ORM類庫,比如JPA和MyBatis。
官方中文文件:
如果解決了你的疑惑,請關(guān)注,謝謝你的支持。