针对分库分表和非分库分表的映射关系保存在哪里,以下是解决方案
方案1-Es
1、给在Es中给映射关系添加字段,以及设置字段类型:id、shardingKey、nonShardingKey
{"mappings":{
"properties":{
"id":{"type":"keyword"},
"shardingKey":{"type":"keyword"},
"nonShardingKey":{"type":"keyword"}
}}
}
2、添加数据
[
{"id": "1", "shardingKey": "shard1", "nonShardingKey": "nonShard1"},
{"id": "2", "shardingKey": "shard2", "nonShardingKey": "nonShard2"},
]
keywork类型是属于进准匹配
缺点:
数据一致性问题:由于 Elasticsearch 是一个分布式系统,可能存在数据一致性问题。
需要额外部署和管理
存储空间消耗大
有一定学习成本
方案2-Hbase
Apache HBase来保存MySQL的分库分表键和非分库分表键的映射关系。HBase是一个分布式、高可用的列式数据库,适合【大规模数据】的【存储】和【快速查询】。由于映射关系很少更新且查询性能要求较高,HBase可以提供较好的性能,并且支持数据持久化到磁盘中。
方案3-RocksDB
在这种情况下,考虑使用RocksDB[rua ke si]作为存储引擎,结合一个分布式缓存中间件,如Redis或Memcached,来保存MySQL的分库分表键和非分库分表键的映射关系。
RocksDB作为一个高性能的磁盘存储引擎,可以提供较好的【持久性】和【查询性能】,而Redis或Memcached则提供了快速的内存缓存和查询加速。