大数据架构商业之路:从业务需求到技术方案
上QQ阅读APP看书,第一时间看更新


3.2.2 Memcached和Berkeley DB简介

Memcached(http://memcached.org/)是一个高性能的分布式内存对象缓存系统,目前最新版本更新到了1.4,用于高性能Web应用以减轻底层存储的负载。最初Memcached是Danga Interactive为了LiveJournal所研发的,后来被许多软件所使用,成为一套开放源代码的软件,以BSD License授权协议发布。它通过在内存中缓存数据和对象来减少读取数据库的次数。Memcached基于一个存储键/值对的散列映射,使用32位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。如果表格满了,则通过LRU机制将旧的数据剔除。其守护进程是用C语言编写的,但是客户端可以用任何语言来开发,然后通过Memcached协议与守护进程通信。Memcached设计的理念就是要简单易用,保存的数据都被存储在其内置的内存空间中,并没有过多地考虑数据的持久性问题。因此在重启Memcached、重启操作系统等断电的情况下会导致数据消失。此外,尽管Memcached是“分布式”缓存服务器,但服务器端并没有完整的分布式功能,例如切片(Sharding)和副本(Replication),各个Memcached服务器之间也不会互相通信以共享信息,因此需要应用端来实现类似的逻辑。

Berkeley DBhttp://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html是历史悠久的嵌入式数据库系统,广泛应用于各种操作系统,包括大多数UNIX类操作系统和Windows操作系统及实时操作系统,目前最新的版本是12.1。最初开发Berkeley DB的目的是以新的Hash访问算法来代替旧的散列函数和大量的数据库操作实现,第一个版本于1991年发布。2006年Sleepycat公司被Oracle公司收购,Berkeley DB成为Oracle数据库家族的一员。其设计思想是简单、小巧、可靠、高性能。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。它的函数库可能只有几兆字节,但是却能管理数百TB的数据,同时支持数千的并发线程操作。尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID数据库事务处理、细粒度锁、XA接口、热备份及同步复制等。与Memcached相比,Berkeley DB更为轻量级,核心部分不支持分布式,但是它支持持久化的功能,这是Memcached所不具备的。