笔者目前就职的是一家创业型的互联网公司,既然算是互联网公司,那么就会设计到无论是应用系统还是数据库的分布式。下面简单介绍下有关数据库方面的一些设计。

数据库表的设计,根据自己的业务所需可以拆分成多库。有订单库、产品库、账户库、底层支付库等等,这也就是传说中的垂直分库。那么数据库架构和数据库优化有哪些解决思路:

1.垂直分表。垂直分表也就是“一张表拆分成多张表”,比如订单表里面,有不同类型的订单,拿普通订单和一元夺宝订单来说,一元夺宝订单会有抽奖码中奖吗等等,这些是一元夺宝订单独有的,就可以单独拿出来建一张表。这种库表设计大家基本都接触过

2.垂直分库。垂直分库在上面已经提过,就是根据自己公司的业务需求、业务模块,一个的业务模块建一个对应的数据库,而不是所有业务模块公用一个数据库。在高并发场景下,垂直分库一定程度上能够突破IO、连接数及单机硬件资源的瓶颈,是大型分布式系统中优化数据库架构的重要手段。

3.水平分表。水平分表感觉意义不大,就是在一个数据库中把一张表重复建多次,数据可以按主键、IP什么的进行Hash和取模后拆分分别插入多个表中,这在一定程度上提高了查询效率,但是从库级别来看,依然会有瓶颈。

4.水平分库。单纯的水平分库意义不大,一版设计水平分库,会同时跟分表结合起来,见5。

5.水平分库分表。水平分库就是相同数据库部署多台,同时把水平分表的思想加上,就是同一张表里的记录取模后分别存在不同的数据库里。在高并发和海量数据的场景下,分库分表能够有效缓解单机和单库的性能瓶颈和压力,突破IO、连接数、硬件资源的瓶颈。

还有其他各种方式的分库分表组合,可以根据自己的业务处理情况可以选择合适的。我们目前只是用到了垂直分库以及读写分离然后提高数据库访问效率。

ps:看到有关数据库分库分表的文章,然后自己结合目前项目也记录下来了。可能含金量不高,但至少为想提高数据库性能的童鞋指明一个方向。

转载于:https://www.cnblogs.com/share2perfect/p/5871009.html

数据库表设计的随笔(分库分表)相关推荐

  1. 数据库面试 - 如何设计才可以让系统从未分库分表动态切换到分库分表上?

    数据库面试 - 如何设计才可以让系统从未分库分表动态切换到分库分表上? 面试题 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上? 面试官心理分析 你看 ...

  2. 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?

    问题 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上? 分析 你看看,你现在已经明白为啥要分库分表了,你也知道常用的分库分表中间件了,你也设计好你们如 ...

  3. 【数据库与事务系列】分库分表中间件

    前面讲了利用mybatis插件进行多数据源切换和分表的方案,但是对业务侵入性较强,当然给予mybatis-plus的对业务侵入性还好,但是支持的策略有限.场景有限. 所以业界诞生了很多分库分表中间件来 ...

  4. 如何分库分表,怎样分库分表,为什么要分库分表?

    如何分库分表,怎样分库分表,为什么要分库分表? ◆ 数据库瓶颈 ◆分库分表 1. 水平分库 2. 水平分表 3. 垂直分库 4. 垂直分表 ◆ 分库分表工具 ◆ 分库分表带来的问题 ■ 事务一致性问题 ...

  5. 元数据解决分表不可 mysql_说说分库分表的一个最佳实践

    概述 分布式数据库已经流行好多年,产品非常众多,其中分布式数据库中间件使用场景最广.本文主要是总结如何基于分布式数据库中间件做数据库架构设计,以充分发挥它的分布式能力.各个中间件产品功能核心原理相同, ...

  6. sharding分表后主键_分库分表【Sharding-JDBC】入门与项目实战

    最近项目中不少表的数据量越来越大,并且导致了一些数据库的性能问题.因此想借助一些分库分表的中间件,实现自动化分库分表实现.调研下来,发现Sharding-JDBC目前成熟度最高并且应用最广的Java分 ...

  7. 什么是分库分表?为什么需要分表?什么时候分库分表

    不急于上手实战 ShardingSphere 框架,先来复习下分库分表的基础概念,技术名词大多晦涩难懂,不要死记硬背理解最重要,当你捅破那层窗户纸,发现其实它也就那么回事. 什么是分库分表 分库分表是 ...

  8. mycat 分表子查询_MyCat分库分表策略详解

    在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情.常见的分库分表方式有两种:客户端模式和服务器模式,这两种的典型代表有sharding-jdbc和MyCat.所谓的 ...

  9. mysql分库分表配置命令_mysql分库分表中间件Heisenberg

    "trans_shard"> "trans_online, trans_content, trans_tb "dataNode="transDN ...

  10. 手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

    一.背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘.IO.系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进 ...

最新文章

  1. 分享:RethinkDB 1.3 发布,分布式 JSON 数据库
  2. python核心编程:web服务器日志分析简单脚本
  3. Linux下root密码丢失和运行级别错误的解决办法
  4. SpaceEmacs Rock Day5 学习笔记
  5. SAP CRM right dimension attribute后台存储
  6. ThreadLocal线程范围内的共享变量
  7. 庖丁解牛Linux内核分析01:操作系统工作原理基础
  8. 企业平均每年遭遇9起有针对性攻击
  9. MATLAB语言初步学习(四)
  10. python中ab+c*2_day2总结-Python中的基本语法
  11. html左边图片右边文字_有了这些网站,不用PS也可以做出文字云效果
  12. PCB板载天线及PCB设计要点
  13. 论文阅读:Reducing Transformer Depth On Demand With Structured Dropout
  14. Beta版是什么意思
  15. java office 集成开发_[转载]Java集成PageOffice在线打开编辑word文件 - Spring Boot
  16. 微服务网关搭建(podman+kong+konga)
  17. windows鼠标消息
  18. 黑客水平测试 大家可以自测一下
  19. SQLServer通过sql修改表主键
  20. 2021-2027全球与中国户外建筑用大理石市场现状及未来发展趋势

热门文章

  1. Javascript中的函数是第一类对象(first-class object)
  2. 结课作业:云计算在物联网中的应用发展
  3. opencv源码解析之(6):hog源码分析
  4. [转帖]C#执行SQL脚本,读取XML文件
  5. 基于SAAS的IT运维管理方案
  6. 10 个强大的 Apache 模块
  7. 【cocos2d-x】游戏构成要素②----使用多个层
  8. c++面试题之内存分配
  9. x86的cpu处理int类型并不是处理char高效多少
  10. 通过HTML的canvas实现简单的画图功能