持久层设计某次泛化讨论的几个思路
RayChase
2011-11-27
持久层设计某次泛化讨论的几个思路
表设计基于模型和业务约束的要求: 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动态采样。 |