mysql可扩展性应用

目前mysql的扩展解决方案主要有基于对象的memcached,高性能嵌入式数据库编程库berkeley db,功能强大的全文搜索引擎lucene。

一、合理利用第三方cache解决方案memcached

memcached是基于内存的软件。

首先可以作为提升系统性能的工具。如果将memcached作为应用系统的cache服务,那么数据库不需要做任何改动。

其次可以将memcached与mysql整合为数据服务层。有两种方式。第一种是将memcached的内存容量作为mysql数据库的二级缓存,以此提升mysql的缓存容量。第二种是通过msyql的UDF(userdefined  function interface)来与memcached进行数据通信,维护和更新memcached中的数据。应用程序直接通过memcached读取数据。

第一种情况适用于业务比较特殊,实在难以对数据操作进行切分的场景。waffle grid就是这样的一个开源项目。目前仅用于innodb的buffer pool。在这种情况下,memcached中的数据完全由数据库来维护。

第二种情况,数据并不完全由mysql来维护,而是由应用和数据库一起来维护。先读memcached,找不到则读mysql,写入memcached之后,返回给应用。每次数据库中的数据被更新或者删除的时候,mysql通过udf来调用memcached的api通知memcached某些数据已经失效,并删除这些数据。

由于memcached是基于对象的数据存取,以及通过hash进行数据检索,所以所有存储在memcached中的数据都必须设定一个key用于检索该数据。也就是说,memcached不能像mysql一样通过某一个关键字进行读取多条数据【不能使用像where 这样的查询条件】。仅适用于通过某一个唯一键来获取单条数据的情况。

二、嵌入式数据库编程库berkekey db

berkekey db之前也是mysql的表引擎,后来被从表引擎中移除了。berkekey db自身架构分为5个模块:

数据存取:hash、btree、fixed length、dynamic length。这四种数据存取方式对应了四种数据文件存储格式。

事务管理:提供完整的acid事务属性。需要同时开启锁管理和日志管理模块。

锁管理:为了保证数据一致性而提供的共享数据控制。

共享内存:

日志系统:berkekey db也采用先写log后写数据库的方式。

从原理上看,berkekey db与memcached作为纯cache的使用差别不大,为什么不用memcached呢。因为第一、memcached是使用纯内纯来存放数据的。价格昂贵。berkekey db则可以使用磁盘。第二berkekey db所使用的数据存储方式,除了memcached使用的hash外,还有btree等方式。

第三、利用search来实现高效的数据检索

利用Lucene来索引数据库中的数据,对mysql进行全文检索的时候,通过lucene的api来查询,会提高mysql的全文检索效率【只因mysql本身like效率灰常底下。。。】书上没有讲具体要怎么使用lucene来全文检索mysql数据库,我的想法是,在建立索引的时候,使用一个结构,保存每一项具体的项目和这个项目在数据库中的主键,以便于全文检索的时候,根据主键去数据库中查找到这条数据。至于怎么更新索引,那是另一回事了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值