我是靠谱客的博主 靓丽果汁,这篇文章主要介绍不用分布式方式,处理大量数据的问题前提:,现在分享给大家,希望可以做个参考。

前提:

由于数据量比较大,但是,数据库用的还是mysql,等关系型数据库,如何处理大批量数据的问题。

一句话说,分表来实现。

如何分表,这个需要看业务逻辑的。

比如,写一个医院的系统,稍微说这么一点逻辑

其中,每个检查项目,是一个对象,一个检查套餐,包括很多检查项目,一个人,可能会一次性检查几个套餐+外加几个额外的检查项目,而且,这些检查项目,和检查套餐,很多医院都适用的。所以说,如果这个项目很多医院同时使用,而且,用到的是一个数据库,就会遇到这样的问题。


要么,用分布式数据库,redis,等,,要么,就分开用不同的数据库服务器,要么,就是分表,额,我暂时,只想到这几种方式。


下面说说分表。

上面的前提已经交代的很清楚了。

现在有这么一张表,保存的是,人,医院,检查项目,一次来医院检查的记录,等等一系列信息。

如果这个数据量特别大,可以按照这几个地方来分表。

1、按照检查项目分表

2、按照医院分表

3、按照用户分表


上面说了一堆不是废话的废话,下面说怎样来分表。



稍等,我先写一篇,java CRC32 的用法


好了,文章写完了,可以先看看我写的crc32的文章,利用CRC32 的特性,生成一个唯一的值,然后来定义表的名字。

下面贴代码。先写可以创建很多数据库的代码。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; public class CreateTableScript { private JdbcTemplate ecdTemplate; private JdbcTemplate ecdUserTemplate; private JdbcTemplate ecdMRecordTemplate; private JdbcTemplate ecdReportTemplate; @Before public void setup() { ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); ecdMRecordTemplate = (JdbcTemplate) context.getBean("ecdMRecrodMasterTemplate"); } @Test public void createTreatTpl(){ String tableName = "hospital_dingdan_hid"; for(int i = 0; i <256 ; i++){ String tab = String.format(tableName+"_%02x", i); String sql = "CREATE TABLE `" + tab + "` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT," +"`tplid` bigint(20) NOT NULL," +"`treatid` bigint(20) NOT NULL," +"`docid` bigint(20) NOT NULL," +"`addtime` int(11) NOT NULL," +"`modtime` int(11) NOT NULL," +"`status` tinyint(4) NOT NULL," +" PRIMARY KEY (`id`)" +" ) ENGINE=InnoDB DEFAULT CHARSET=utf8"; ecdMRecordTemplate.execute(sql); } } }

我稍微说一下我的代码,我这里用的是,单元测试的方法,只需要执行这一个@Test方法就可以了。

项目中,用的是springMVC+JDBC

稍微有点经验的人能看出来。

所以说,在setup()方法中,我需要先加载applicationcontext.xml,然后通过,spring注解,找到对应的数据库。

然后再用JDBC链接数据库来操作数据,

然后,代码中,tableName 的后缀,是hid ,我这里用的是hid分表。

同理,其他的分表 可以用其他的后缀,方便就可以了。


根据数据大小,感觉,分出来256张表,应该就够用了。

这里,%02x 不懂的,自己百度去,这个,跟C语言用法一样。

然后,就可以创建256张表了。


下面是具体的用法:

我先去吃饭,下午回来再写。

最后

以上就是靓丽果汁最近收集整理的关于不用分布式方式,处理大量数据的问题前提:的全部内容,更多相关不用分布式方式,处理大量数据内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部