持久层设计某次泛化讨论的几个思路
程序员文章站
2022-03-02 09:39:42
...
表设计基于模型和业务约束的要求:
1、表的设计必须从系统建模开始,提供ER图,表结构遵循范式要求。
2、考察几个数据处理异常复杂的点,包括需要使用存储过程的场景。
3、异步数据存取场景的识别。
4、旧有数据的兼容。
大数据量下可用性的要求:
1、大表的识别和设计,确定索引,避免大表JOIN操作。
2、一次用户请求事务中,至多执行两次commit操作。Oracle写回滚日志的关系,数据量不大的时候,commit经常比update还要耗时。
3、update操作对数据量有预估计,大数据量批量和异步完成,避免回滚段填塞过度。
4、根据实际场景(包括存储数据量、可用性和可扩展性,ACID要求等)选择持久层对大数据量的接纳方式:
(1)RAC
(2)读写库分离
(3)分区,水平扩展
(4)切换到某一NoSQL数据库,如Cassandra、Redis、MongoDB等
5、选择合适的持久层框架,如iBatis、Hibernate。
6、选择适当的持久层缓存机制,基于持久层对象的简单存储,LRU算法。
7、对于大表,提供可靠的表数据量估计,控制其执行计划,避免Oracle动态采样。
文章系本人原创,转载请注明作者和出处
上一篇: 同步、异步转化和任务执行
下一篇: 贫血模型和充血模型