回覆列表
  • 1 # 雲渺書齋

    可以透過Spring Boot+MyBatis+Sharding-JDBC實現分庫分表。

    Sharding-JDBC

    Sharding-JDBC:定位為輕量級Java框架,在Java的JDBC層提供的額外服務。它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。

    適用於任何基於Java的ORM框架,如JPA、Hibernate、MyBatis、Spring JDBC Template或直接使用JDBC.基於任何第三方的資料庫連線池,如DBCP、C3P0、BoneCP、Druid、HikariCP等。支援任意實現JDBC規範的資料庫,如MySQL、Oracle、SQLSever和PostgreSQL以及任何遵循 SQL92 標準的資料庫。sharding-jdbc架構

    ShardingSphere-JDBC 採用無中心化架構,適用於 Java 開發的高效能的輕量級 OLTP 應用。

    功能資料分片:分庫和分表,讀寫分離,分散式主鍵;分散式事務;XA強一致事務,柔性事務;資料庫治理;配置動態化,熔斷和禁用,呼叫鏈路追蹤;分庫分表方式

    分庫分表方式分別為垂直分表、垂直分庫、水平分表和水平分庫。

    垂直分表:把一個寬表的欄位按訪問頻次、是否是大欄位的原則拆分為多個表,這樣可以使業務清晰,還能提升部分效能。拆分後,儘量從業務角度避免聯查,否則效能方面將得不償失。垂直分庫:把多個表按照業務耦合鬆緊歸類,分別存放不同的庫,這些庫可以分佈不同伺服器,從而使訪問壓力被多伺服器負載,大大提升效能,同時能提高整體架構的業務清晰度,不同的業務庫可根據自身情況定製最佳化方案。但是它需要解決跨庫帶來的所有複雜問題。水平分庫:把一個表的資料(按資料行)分到多個不同的庫,每個庫只有這個表的部分資料,這些庫可以分佈在不同伺服器,從而使訪問壓力被多個伺服器負載,大大提升效能。它不僅需要解決跨庫帶來的所有複雜度問題,還要解決資料路由的問題。水平分表:把一個表的資料(按資料行)分到多個同一個資料庫的多張表中,每個表只有這個表的部分資料,這樣能小幅提升效能,它僅僅作為水平分庫的一個補充最佳化。

    一般來說,在系統設計階段就應該根據業務耦合鬆緊來確定垂直分庫和垂直分表方案,在資料量、訪問壓力不是特別大的情況,首先考慮快取、讀寫分離、索引技術等方案。若資料量極大,且持續增長,再考慮水平分庫和水平分表方案。

    引入 maven 依賴

    注意: 請將${latest.release.version}更改為實際的版本號。

    規則配置

    ShardingSphere-JDBC 可以透過 Java,YAML,Spring 名稱空間和 Spring Boot Starter 這 4 種方式進行配置,開發者可根據場景選擇適合的配置方式。

    建立資料來源

    透過 ShardingSphereDataSourceFactory 工廠和規則配置物件獲取 ShardingSphereDataSource。 該物件實現自 JDBC 的標準 DataSource 介面,可用於原生 JDBC 開發,或使用 JPA, MyBatis 等 ORM 類庫。

    官方中文文件:https://shardingsphere.apache.org/document/current/cn/overview/

  • 中秋節和大豐收的關聯?
  • 荔枝蛀蒂蟲的危害有哪些?該如何防治?