注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风轻扬

活着就是为了追求幸福

 
 
 

日志

 
 
关于我

关注互联网应用架构、分布式与海量数据处理技术、云计算、数据库技术

网易考拉推荐

Tokyo Cabinet事务机制初探  

2009-12-31 17:00:44|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
名为初探,其实只是乱猜猜而已。之所以又去看下Tokyo Cabinet是因为发现BeansDB也是基于Tokyo Cabinet的,似乎Tokyo Cabinet相当之流行。

Tokyo Cabinet很好理解,持久化的key-value,还支持遍历,表格与索引。唯一比较费解的是它的事务支持是怎么样的。某个官方文档中说Tokyo Cabinet是基于"write ahead logging and shadow paging"来实现事务,事务支持ACID。嗯,这给不了多少信息,除了shadow paging比较奇怪,因为这个技术在支持高并发的数据库中不太用。

然后看到这个:
The database is locked by the thread while the transaction so that only one transaction can be activated with a database object at the same time。
和这个:
Tokyo Cabinet provides two modes to connect to a database: "reader" and "writer". A reader can perform retrieving but neither storing nor deleting. A writer can perform all access methods. Exclusion control between processes is performed when connecting to a database by file locking. While a writer is connected to a database, neither readers nor writers can be connected. While a reader is connected to a database, other readers can be connect, but writers can not. According to this mechanism, data consistency is guaranteed with simultaneous connections in multitasking environment.

嗯,原来事务并发控制是通过一把巨锁来实现的,事务时整个数据库被用写锁锁定,别人不能读也不能写。这样ACID中I的问题解决了。

剩下A和D,D好搞,有WAL就好做。A是怎么做的呢,嗯,看到这句话就明白了:
Because all pages are cached on memory while the transaction, the amount of referred records is limited by the memory capacity.

原来是,事务修改过的未提交页面必须在内存中不能写出去,这样事务回滚时,只要把内存中的页面扔了就行了,原来是这么个shadow paging法。

这样,A、I、D都解决了,C嘛,本来就是用来凑数的。这么实现可真是初级简单,但并发度应该不太靠谱吧。
  评论这张
 
阅读(2259)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017