當前位置:編程學習大全網 - 網站源碼 - sharding-jdbc 按月份分表

sharding-jdbc 按月份分表

更新內容:添加範圍搜索比如201901~201605五個月的數據,之前是只能查詢單月的數據

sharding-jdbc 按月份分表需要自己實現。需要實現兩個接口PreciseShardingAlgorithm,RangeShardingAlgorithm。並在配置文件裏添加實現路徑

如下:com.simianBook.conf.TimeShardingTableAlgorithm

那麽yml 裏的配置路徑如下

因為SimpleDateFormat 不是線程安全的需要修改為DateTimeFormatter

下面需要來編寫按單月分表的方法

我是使用sharding-jdbc 自帶的雪花算法 來生成主鍵的, 雪花算法的實現邏輯

因此我在得到分片鍵時對分片鍵進行逆推可以推出分片鍵的時間戳。再根據時間戳得到創建此條數據創建的年月進而定位到那個表位置(或者說表名)

DefaultKeyGenerator.EPOCH+(Long.valueOf(shardingKey+"")>>22)

DefaultKeyGenerator.EPOCH 表示起始時間。在雪花算法當中生成的時間戳需要減去起始時間在進行左移22位在進行或運算

sharding-jdbc 的雪花實現方法如下 版本3.0 該版本有bug 並發量低的時候生成的分片鍵始終為偶數

3.1.0 版本解決了 自己可以看壹下有什麽不同

user_201907

  • 上一篇:qq聊天突然彈出來的,這是什麽?
  • 下一篇:抖音入駐哪個壁紙小程序比較好
  • copyright 2024編程學習大全網