- 使用数据库的理由
- 不同服务之间的数据同步、共享
- 不同实例之间的数据同步、共享
- 数据持久化,避免重启丢失(和放到内存中相比)
- 同质数据的存储
- 放在不同的表中
- 在这几张表中联合查询较慢
- 在同一张表中,用type字段来区分(字符串类型,或者int引用另一张类型表的id)
- 单表数据量较大(可以考虑分表)
- 不同类型数据之间如果有不同字段,会导致字段冗余
- 一种方式是不同类型数据的字段都定义上,缺点是字段名固定,每种类型的数据就都有了用不到的字段
- 另一种方式是提前创建一些预定义的字段,如int1, int2, string1, string2等,然后对于不同的数据类型有不同的含义,缺点是从表结构上比较难看出字段数据的含义
- 放在不同的表中
- 选项表的设计
- 运算列的设计
- 如果某一列是计算所得(即使只是几个列的简单拼接)
- 空间换时间:单独的列和计算的列都存储,这样的话既可以根据单独的列进行搜索,也可以按计算列或合并列进行搜索
- 如果某一列是计算所得(即使只是几个列的简单拼接)
- 升级
- 服务端:数据迁移、代码调整
- 客户端:对于sqlite等这种用户设备上的内嵌数据库,同样需要升级数据库结构和数据,但更加复杂,因为用户库可能是不同版本的状态