aa87963014的博客 -pg电子游戏网站

`
aa87963014
  • 浏览: 149208 次
  • 性别:
  • 来自: 布尼塔尼亚
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 382)
    • ( 21)
    存档分类
    最新评论
    文章列表
      可以查看我的  freyja框架 https://github.com/121077313/freyja    net,cache,jdbc 3个方面的封装.现在用于游戏服务端  
    freyja将把重心放在 1、更完善的orm 2、应用层屏蔽的底层sharding 3、应用层上的cache     jsqlparser将换成druid的sql parser, 底层的cache将替换成应用层的cache,改写spring的aop cache。 spring的aop cache典型的不支持1对多的cache 处理,只能够清除整个cache,效率很低。改善之后,cache将会覆盖整个应用层,让整个应用层处于cache状态不会出现断层。
    水平分库、分表一直都没去考虑。 如果要去实现那么大致的想法是表、库都和某个字段的值关联。 例如分库就根据userid去摸 1、2、3、4、5、6、7、8、9 个库。 并且建立1、2、3、4、5、6、7、8、9 个对应的数据源 datasource 在不请入原有的代码前提下,   select * from t_user where userid = 1;   那么根据userid = 1 得知这条sql会在db1的数据库中,那么分配datasource1 去执行查询   userid 则为关键字段,类似之前的group,sql处理都会围绕这个字段来处理   分库的字段都必 ...
    因为工作的关系好就没更新了。现在的版本越来越稳定了。   src:
    freyja作为一个orm框架,除了结果集映射之外。另外一个核心功能是对缓存进行处理,当然不是像hibernate/mybatis那种低级处理。   本次添加的功能叫做 @delay 延迟update。 一张表几十个字段大概有8成字段能够被注解为@delay    这样一来,对于这些字段的update操作将不会发送sql update数据库。而在缓冲过期或者被提出或者缓存销毁的时候同步。应该能节省4-5成的update操作。由此能够大幅度提升程序处理速度。   对于不太依赖数据库联表查询的项目freyja能轻松提高程序性能,能够成为半个内存数据库了。这个功能还是帮助很大的   * ...
    附件已经更新了最新的src,test项目和lib 还是一样前面有提供下载。 group 功能和批量save。 update之类的再补上。   group相当于一个索引。一个表只能有一个group 设为group的字段必须是唯一的。 例如 以user为核心,与user一对多的表都把uid 设置为group: @group(isgroup=true) 这样能大幅减少维护缓存的开销。 -------------------   freyja 将引入另外一项能大幅提高服务器性能功能,与group不同。group相当于针对freyja的一种处理。 下面这个功能大家一定都在想办法提升性能的时 ...
    目前的freyja在维护缓存的时候是将表分为多个字段,每个字段负责维护与字段有关的缓存。 当字段update的时候去检测是否需要缓存失效。经过我对这些数据的分析,引入分组概念能加快维护缓存的效率。例如,大部分数据都是围绕用户产生的,user、hero、building 他们都是一对多关系,在这些表当中,大部分查询都是限于当前用户的数据查询。那么按userid分组将大大的减少检索的内容,从而提高维护缓存的效率。当然其他的表也可以根据自己的情况分组/不分组。另外也许还会采用single注解减少update操作,被single注解的表明当前字段不会出现在联表查询范围内。那么这个字段的update操作 ...
    最后一个功能动态update完成,freyja还需要稳定性测试,并且检查疏漏的地方。   我对freyja的这套想法还是很满意的,cache就是几个map。不需要序列化。 执行update方法的时候维护缓存。 如何在当前方法里面知道是否开启了事物?如何知道几个方法是否在同一个事物里面? 我没有找到相关的api方法,但是根据同一个事物会共用一个连接来判断是否在同一个事物里面。 然后根据“事物缓存”来比较update了哪些字段。"list updatecolumn = methodutil.beanmapping(oldvalue, value);& ...
    在查询缓存里面,我这么处理一条查询sql:   select o from table where x   重点是 o 和 x   o是查询结果,x是查询条件   查询结果不重要,查询条件需要判断你能否处理得了查询条件。   目前,查询条件中带函数的sqlfreyja处理 ...
    freyja作为项目中取代hibernate的orm框架很符合我的心意,原本来说hibernate对开发效率基本没什么提升,而hibernate的执行效率来说本身属于比较慢的一类。   这类框架都属于jdbc的一层封装,在性能方面,能体现出价值的地方就在于如何利用好缓存。针对项目本身不需要集群、分库。freyja从设计一开始就少了许多负担。   查询缓存作为orm框架中的重要一环,在此我写一点我对查询缓存的理解和freyja里面对查询缓存的做法   一开始确实是对查询缓存这块异想天开了,仔细分析之后发现只处理得了单表的查询缓存。还不能去支持部分函数,支持的sql如:   sele ...
    freyja 的功能基本完毕。后续只会改进这些功能的性能和bug。   不太会有事物支持、hql语法支持、也不会支持分布式。   bean 和src都再下面可以下载。test项目在 http://code.google.com/p/freyja-jdbc/ 可以下载。再测试一段时间,第一个版本大概可以出来了。   freyjajdbctemplate的开发前言    freyja 的简介
    freyja发布了预览版:freyjajdbctemplate预览版     有的属于工作量问题,思路有了等待完善。如查询缓存、维护缓存一致、提供更丰富的接口与支持、主键。 麻烦些的有延迟加载之类的。     没有思路的如:原生sql执行update/delete 如何维护缓存   到现在也无法想明白的如:事物   如果按照现在的做法唯一的问题是没办法满足事物隔离性。 如果严格实现事物就需要每次取得的实体都是独立的。需要每次都需要序列化、反序列化一次。是否有必要这样。   发生事物隔离性问题的情况仅仅是在对同一个对象修改同一个属性产生冲突。很棘手,我开始好奇那些不支持 ...
    简介: freyjajdbctemplate的开发前言  freyja = jdbctemplate  naming sql cache;   freyja是在spring的jdbctemplate基础上的一层封装,核心是naming sql部分。   @entity @table(name = "t_user") public class user { @id @generatedvalue @column(n ...
    • 2011-11-17 17:06
    • 浏览 1119
    • 论坛回复 / (34 / 9160)
    • 分类:开源软件
    又测试过一段时间发现save和hibernate的性能相当。select 一如既往的快hibernate一大截。   但是心里总是毛毛的感觉哪里有纰漏。   我一直把hql当做一种join的简化写法 而不是面向对象查询。   hql转成join 查询是可行的,但是。。。我觉得现在就把hql特性加进来不是很成熟。加进来显得不伦不类,没能带来性能提升而且成了一个大的隐患。   freyjajdbctemplate的目标就是追求效率。   save和update 操作实际上不会有太大差别,因为这类系统提升效率的地方就是依靠对缓存的掌握。 也就是说差距体现在select 操作上面。 ...
    事情不能总是一帆风顺,挣扎了一阵子我宣布freyja缓存特性添加失败。   查询缓存本身就是一个很可笑的事情,缓存不是数据库。面对错中复杂的sql很难维护缓存,查询缓存还是需要根据业务来做,否则完全是浪费时间而且效� ...
     
    freyja核心:hqlparser cache   hqlparser处于完善阶段大概不会有太大变动。   cache则有2大功能等待实现。这个是freyja的最大难点之二。(第一个是hqlparser)   没有特点就没有存在的价值,cache的2大功能才是重点中的重点。hqlparser只能算是玩具。   等这个完成之后我会放出freyja的第一个版本。   hqlparser待会儿放出下载。觉得有帮助的可以看看,当然如果有更好的转换方式记得告诉我下。
    这个算不上什么特性。每个用过spring jdbctemplate的估计都会写一些封装类。   老实说在使用过程中,吃了点亏,浪费了一些时间。   1、rowmapper 2、update   rowmapper很好很强大,freyja里面使用了3个实现类   beanpropertyrowmapper - 用来处理类似于select * from user 的结果集 maprowmapper - 用来处理类似于 select name,age from user  的结果集 map结构返回 objectrowmapper - 同m ...
    在使用hibernate开发过程中,让我一直感到奇怪的是为什么缓存是如此的让人不顺心。对于update操作频繁的项目更是噩梦。这和我对缓存的理解有很大的出入。 我的想法有2点: 1、数据库是大海,缓存是池塘。如果我抓了4条鱼到 ...
    freyja2大特点:hql cache   freyja可以无缝替换掉hibernate,才怪。   freyja主要功能是为了实现对jdbc操作的封装而不是替换hibernate,但是为了替换掉项目中的hibernate,freyja实现了简单的hql语法(而且也实现不了复杂的) 举个例子来看下freyja大概支持哪些hql/sql语法(理论上支持全sql映射)     select x.n,x.id,x.name,devscore,u.uid,cityid from user u left join ( select * from ( select i.userid as ...
    一直以来只用过hibernate作为数据层,hibernate确实是很强大,如果有人说hibernate能减少90%代码量,这句话绝对不假。   但是,渐渐的发现了hibernate的不足之处,也是因为这些hibernate的不足之处让我做出开发freyjajdbctemplate的想法: 1、hql      自家创造的hql独立与sql语法,虽然有打点访问的这种类对面对象方式语法但是个人觉得没有这个必要,hql应该可以与sql融合,至少不排挤sql   2、cache      如果想快就必须加入缓存,越接近底层越容易控制缓存也能越达到更好的缓存效果。hibernate虽然支持 ...
    global site tag (gtag.js) - google analytics
    网站地图