考察点:数据库
垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求。其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表,淘宝在架构不断演变过程,最重要的一环就是服务化改造,把用户、交易、店铺、宝贝这些核心的概念抽取成独立的服务,也非常有利于进行局部的优化和治理,保障核心模块的稳定性。
垂直拆分:单表大数据量依然存在性能瓶颈
水平拆分,上面谈到垂直切分只是把表按模块划分到不同数据库,但没有解决单表大数据量的问题,而水平切分就是要把一个表按照某种规则把数据划分到不同表或数据库里。例如像计费系统,通过按时间来划分表就比较合适,因为系统都是处理某一时间段的数据。而像SaaS应用,通过按用户维度来划分数据比较合适,因为用户与用户之间的隔离的,一般不存在处理多个用户数据的情况,简单的按user_id范围来水平切分。
通俗理解:水平拆分行,行数据拆分到不同表中, 垂直拆分列,表数据拆分到不同表中。
水平切分支架。 定义一个基本的“水平分片”系统,该系统允许会话在多个数据库中分发查询和持久性操作。 有关用法示例,请参见 水平切分 源分发中包含的示例。 API文档 Object Name Description ShardedQuery ShardedSession class sqlalchemy.ext.horizontal_shard.ShardedSession(shard_choose
本文向大家介绍Linux下文件的切分与合并的简单方法介绍,包括了Linux下文件的切分与合并的简单方法介绍的使用技巧和注意事项,需要的朋友参考一下 linux下文件分割可以通过split命令来实现,可以将一个大文件拆分成指定大小的多个文件,并且拆分速度非常的快,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。 在Linux下用split进行文件分割
本文向大家介绍请你介绍一下数据库的ACID特性相关面试题,主要包含被问及请你介绍一下数据库的ACID特性时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)原子性:事务被视为不可分割的最小单元,事物的所有操作要不成功,要不失败回滚,而回滚可以通过日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作。 2)一致性:数据库在事务执行前后都保持一致性状态,在一致性状态下,所有
本文向大家介绍请简单介绍一下spring?相关面试题,主要包含被问及请简单介绍一下spring?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring 参考回答: Spring是一个轻量级框架,可以一站式构建你的企业级应用。 Spring的模块大概分为6个。分别是: 1、Core Container(Spring的核心)【重要】 2、AOP(面向切面变成)【重要】 3、Messaging
本文向大家介绍请你介绍一下数据库的隔离级别 相关面试题,主要包含被问及请你介绍一下数据库的隔离级别 时的应答技巧和注意事项,需要的朋友参考一下 考察点:事务的隔离级别 隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read) 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed
本文向大家介绍请你介绍一下,数据库的三个范式?相关面试题,主要包含被问及请你介绍一下,数据库的三个范式?时的应答技巧和注意事项,需要的朋友参考一下 考察点:数据库 第一范式(1NF) 强调的是列的原子性,即列不能够再分成其他几列。 第二范式(2NF) 首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 在1NF基础上,