数据库的字段扩展

业务需求与现状

  1. 大数据量的表,如几千万条记录
  2. 业务需求,在该表加字段,实际业务用不到,仅统计时需要用;而且时不时的会有不同的这种字段需求添加;实际上可以跨库去取的字段,但是统计侧存在跨库不方便的情况,只能扩展添加字段。

问题

大数据量的表,执行ddl,alert列时会有锁表的问题。

思路1:采用json存储

- 问题:varchar(255),存储的字符串长度也有限,存json字符串的话,字段也有限;如果是Text会占用数据库空间太多的问题;
- 好处:可读清晰,容易扩展
- 缺点:占用空间大,效率低

思路2: 采用二进制存储

BIT(64)最多64位,tinyblob的话应该更多(好像用于位运算很繁琐)

2.1

如第一位用来存储,是否单抽/十抽
后续如果有新的类型加入,比如五抽, 可以继续约定第x位为改类型的字段

2.2

最好还是预留一些位,方便扩展,连续的位计算更方便,但是总会存在超过预留位的场景

2.3

N+1位,固定的一位用于扩展;如果是0,用后面的N位;如果是1,表示是超过当前设计的位范围了,去一个新增的数据库查询

- 好处:位运算执行效率高,节省空间
- 坏处:可读性不强; 扩展差; 64位用完后还得继续增加新字段;

思路3: 引入列存储如MangoDb

列存储适合这种场景,具体待研究

思路4: 表垂直拆分

将不用的字段拆分出来,改动也挺大,增加字段依然存在问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • A.字段类型介绍 不同的关系型数据库在字段类型的具体化上差异较多,这里无法一一详述,但具体化的字段类型再多,无外乎...
    SnowflakeCloud阅读 11,464评论 1 12
  • 数据库预留扩展字段:就是不存放数据的空字段 场景一 项目上线了,要增加新功能原有的数据库表要增加相应的字段,由于这...
    hello_yb阅读 2,974评论 0 1
  • 转 数据库字段动态扩展设计 最近讨论数据库有关产品方案的项目自动扩展问题,即每个方案都有多个项目,而每个方案的项目...
    树蜂阅读 3,916评论 0 2
  • 字段设计规范 1. 优先选择符合存储需要的最小的数据类型1 原因:列的字段越大,建立索引时所需要的空间也就越大,这...
    happyJared阅读 1,423评论 9 33
  • 表字段扩展方案 背景 业务需要,开发了新功能,对应的,需要对原表新增一些必要字段。想当然的 相信很多朋友和我一样,...
    码哥说阅读 820评论 0 3