我的ORM索引

对某一个查询频繁重复,应该使用缓存。

缓存应该是可以配置。

配置

Web.config:

<configuration>
<configSections>
<section name="MyOql" type="MyOql.MyOqlConfigSect,MyOql" />
</configSections>
<MyOql configSource="MyOql.config" />
</configuration>
MyOql.config:
<MyOql>
<Entitys db="dbo" CacheTime="0" CacheSqlTime="0" MaxCacheTime="43200" OraclePKG="PKG" Owner="dbo" >
<Group Name="本地缓存" CacheType="Local" CacheSqlTime="3600" CacheTime="3600" >
<Entity Name="S_Menu" UsePower="=" />
<Entity Name="P_CarInfo" />
</Group>
</Entitys>
<DbProviders>
<Provider Name="SqlServer" Type="MyOql.Provider.SqlServer,MyOql"/>
<Provider Name="MySql" Type="MyOql.Provider.MySql,MyOql.MySql"/>
<Provider Name="Oracle" Type="MyOql.Provider.Oracle,MyOql.OracleProvider"/>
</DbProviders>
</MyOql>

配置项

db:  指定数据库配置项
Owner:  指定数据库前缀
Name:  数据库表名,视图名,存储过程名。
CacheTime:  单表按主键、唯一键、自增键查询缓存时间。单位 秒
CacheSqlTime:  按除 CacheTime 之外的情况下,缓存时间。如果有多个表,按配置项最小的缓存时间。 单位 秒
ToShadow:  配置是否转存到影子库,当物理删除的时候,可以把数据转存到影子库。布尔值
MaxCacheTime:   如果最初缓存时间到现在超过最大缓存时间,则强制失效。单位 秒
CacheType:  指定缓存服务器。
UsePower:  权限类型,单字符表示一个权限,可选类型: CRUD= ~*  
       其中:
      C 表示 Create,R 表示Read,U表示Update,D表示Delete。
      = 表示是否启用行集权限.
      ~ 表示自定义过滤。
      * 是所有权限
      true 表示所有权限
      false 表示没有任何权限
Filter:  在 UsePower = "~" 时, Filter 表示传递给自定义过滤的 关键字
Type:  表示表的类型, 如: Corp 表示是公司表。可以动态对该表进行分库。 
Log:  可选值,单个字符表示一个MyOql操作类型的日志, CRUD=*
OraclePKG:  Oracle存储过程包名。

缓存部署及机制

数据库中的数据,可以分为:
  • 稳定数据
  • 易变数据

如果有多个应用,这种场景更明显。

  • 易变数据的缓存管理不应该寄宿在各自的应用程序池中。应该统一有一个缓存管理中心;
  • 稳定数据,应该在各自的应用程序池中寄存,以增强性能

稳定数据,是相对的,稳定数据也有被更新的时候,用以下办法破坏它。

  • 设置 最大缓存时间,一旦第一次缓存时间超过最大缓存时间,则强制失效。
  • 缓存中心记录每个表的最后破坏时间,稳定数据所在的程序,周期性检测。

MyOqlCache是以Windows服务形式,提供基于 TCP 协议的 WCF 服务 ,安装步骤:

1. 编译 DbEnt

2. 编译 MyOqlCache,如果出错,请检查 Dll 文件路径。

3. 运行 MyOqlCache\安装.bat

NoSql的应用

所谓术业有专攻,NoSql和RMDB不在一个层次上,无法替换。使用 NoSql 做为缓存项,或是保存中间计算结果倒是很合适。

RMDB大都是基于磁盘文件的,NoSql大都是基于内存的。能和NoSql比性能的,应该是 内存数据库!

目前缓存中心使用的是 System.Runtime.Cache 保存缓存项。如果想使用 NoSql ,需要:

1. 打开 MyOqlCache 项目,打开 MyOqlCache.cs ,找到 dbo.CacheInstance

2. 仿照 MyOqlHttpCacheDefaultInstance 重新一个类,并赋值给 dbo.CacheInstance 即可。

最新文章

  1. JavaBean的toString方法工具类
  2. 目录处理工具类 DealWithDir.java
  3. canvas-7globleCompositeOperation2.html
  4. Windows phone 8 学习笔记(1) 触控输入(转)
  5. 【转】经典SQL语句大全
  6. cocos2dX 之CCParticle
  7. vue-创建新项目
  8. promise 的学习
  9. Sublime Text3 离线安装Package Control并使用GBK编码 --转自https://blog.csdn.net/swhard/article/details/78930371
  10. ORACLE结构体系篇之表空间详解.md
  11. React文档(十七)非受控组件
  12. python报错问题解决:&#39;ascii&#39; codec can&#39;t encode character
  13. 2017第八届蓝桥杯C/C++ B组省赛-购物单
  14. org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL
  15. Html学习笔记3
  16. Atitit tomcat在linux服务器的启动与其他
  17. 【11-13】A股主要指数的市盈率(PE)估值高度
  18. node.js、git、bootstrap等安装配置
  19. ubuntu 信使(iptux) 创建桌面快捷方式
  20. MSP430 G2553 基本时钟模块+ (Basic Clock Module+)

热门文章

  1. 提交ajax验证用户名是否已存在
  2. html理解
  3. QQ屠龙转世-挖矿
  4. js继承
  5. struts2中如何使用主题theme
  6. hdoj 1596 find the safest rode
  7. 给自己立下一个巨大的flag
  8. 去重 ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段) RN
  9. swift3.0:associatedtype
  10. iOS App打包上架的流程