欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

持久层设计某次泛化讨论的几个思路

程序员文章站 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动态采样。

 

文章系本人原创,转载请注明作者和出处