JAVA--JDBC、DAL、CP等知识点梳理

非Java科班,虽然平时也能写一点Restful Api配合手机App作一个能实现云端存储的后台程序,但是对于数据库方面除了CRUD啥也不会。经常听到像JDBC,Hiberante之类的名词,都只能漏出不明觉厉的微笑,偷偷流下不懂技术的泪水。

JAVA平台框架成熟,很多技术名词一知半解,这次为了考虑自家数据库的分库分表,狠补了相关的知识,把那些以前云里雾里的技术名词扒了一扒,记载这里,也希望能对一些拥有类似经历的朋友有所帮助。

分表逻辑

  • 读写分离 Master/Slaver模式,Master写,数据库自Master往Slaver同步,读的压力分摊到Slaver上。
  • 垂直分表 利用多个数据库,降低单点Master数据库的压力。例如: 用户系统,健康业务系统,运动业务系统,基础业务系统。
  • 水平分表 当同一张表里的数据量过大导致性能骤降,逻辑上将一张表拆到多张表。例如心率数据按时间划分,同一年数据在同一张表。

DAL需求

  • 动态分表路由 向上层程序隐藏数据库的事实,同时还要满足不能太差的响应速度要求。
  • 读写分离 N主M从,多业务数据库治理/数据同步。
  • 日志,监控 成熟框架必备基础,日志帮助开发查bug,监控是系统稳定性提高的第一步(第0步是日志)。web管理界面降低查看系统情况的门槛,帮助非程序员查看系统情况。

DAL选型

  • TDDL 淘宝开源框架,缺点维护力度不高。大神博客
  • Hibernate Shards
  • Ibatis-Sharding Ibatis是mybatis前身

数据库连接池技术

  • HikariCP
  • BoneCP
  • Druid 阿里巴巴开源,维护力度还是硬伤。
  • C3P0/DBCP
  • 大神博客

相关技术名词理解

  • JDBC 是一套标准java api接口,跨数据库兼容协议。
  • JDBC Driver 是连接Java程序与数据库的引擎,JDBC之定义协议,没有实现数据库的连接等操作。
  • JDBCTemplate, mybatis, Hiberante 封装了JDBC的第三方框架;使用上更简单,内置了JDBC Driver。
  • TDDL,Hibernate Shards,Ibatis-Sharding DAL(database access layer)是分布式数据库的访问管理层,对上层应用屏蔽多数据库的事实,内部主要实现读写分离,分库分表逻辑等功能。
  • CP(Connection pool) 实现的是数据库连接的管理。因为数据库连接是程序中比较大开销的环节(涉及io,network)等等,所以有人发明了连接池技术管理数据库连接而避免每次使用都去重新创建数据库连接。感兴趣可以看看上面的大神博客,非常清晰。

你可能感兴趣的:(JAVA--JDBC、DAL、CP等知识点梳理)