java 分表操作_java实现动态实现“分表”

首先说一下,这个功能其实也不算是很少见,但是也没那么常见。

有的时候涉及到的数据量比较大,我们会用一个很时髦的词“分表”来实现。但是其实更多时候这个表是按照时间来“分”的,所以我这里是一种不那么动态,但是也实现了分表的方式实现的。

先说一下大概的情况:我们这里是硬件设备数据的存储,每个设备开机的情况下30s推送一次数据。简单算一下,如果100个设备同时开机,一个月的记录数就是:

每分钟2条 * 60分钟 * 24小时 *100台机器 * 31天

aa25e17c2485

一个月八百九十万条数据

所以说这个按照时间分表确实是有必要的。甚至说我这里按照月分只是一个根据具体情况定下来的一个行为,如果有必要按照天分也ok啊,当然了,不管是按照月,还是天,甚至星期我这个方法都是可以的.下面说下具体的做法。

首先我这里简单说下我用的是spring boot+mybatis (plus)框架,所以很多实现也是基于这两个框架的实现。还有我这里只是提供一个思路,具体的实现不建议和我学,容易被骂。

创建表

既然要按照月分表,起码每个月的表是要有的吧,但是一口气创建几十个未来月份的表也太扯了,所以这里是用定时任务创建表实现的。

这个定时任务不难,创建表也不难,但是刚刚说的不要和我学确实真的, 真的我用了一种非常偷懒的方式,我在mybatis的注解里直接写了sql语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB支持拆库分表,可以通过sharding方式进行实现。下面是一个简单的MongoDB拆库分表脚本,以Java语言为例: 1. 首先创建一个MongoDB集群,包括3个配置服务器、3个路由服务器和至少2个数据分片服务器。 2. 在Java代码中,使用MongoClient连接到MongoDB集群: ``` MongoClient mongoClient = new MongoClient("mongodb://router1:27017,router2:27017,router3:27017"); ``` 3. 创建一个ShardingClient对象,用于管理MongoDB的sharding: ``` ShardingClient shardingClient = ShardingClientFactory.createShardingClient(mongoClient); ``` 4. 创建一个DatabaseShardingStrategy对象,用于对数据库进行sharding: ``` DatabaseShardingStrategy databaseShardingStrategy = new DatabaseShardingStrategy("db", new ModShardingAlgorithm()); ``` 其中,"db"为需要进行sharding的数据库名称,ModShardingAlgorithm是一个自定义的分片算法。 5. 创建一个TableShardingStrategy对象,用于对表进行sharding: ``` TableShardingStrategy tableShardingStrategy = new TableShardingStrategy("table", new RangeShardingAlgorithm()); ``` 其中,"table"为需要进行sharding的表名称,RangeShardingAlgorithm是另一个自定义的分片算法。 6. 将DatabaseShardingStrategy和TableShardingStrategy对象添加到ShardingClient中: ``` shardingClient.addDatabaseShardingStrategy(databaseShardingStrategy); shardingClient.addTableShardingStrategy(tableShardingStrategy); ``` 7. 完成以上步骤后,MongoDB集群就可以进行拆库分表操作了。例如,可以使用如下语句向分片集合中插入数据: ``` DB db = mongoClient.getDB("db"); DBCollection collection = db.getCollection("table"); DBObject obj = new BasicDBObject(); obj.put("key", "value"); collection.insert(obj); ``` 以上是一个简单的MongoDB拆库分表脚本,供参考。具体实现需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值