阅读更多

40顶
0踩

编程语言
memcachedb是一个由新浪网的开发人员开放出来的开源项目,给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制,让memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合于需要超高性能读写速度,但是不需要严格事务约束,能够被持久化保存的应用场景,例如memcachedb被应用在新浪博客上面。

memcachedb给memcached添加了一些数据库才具备的特性,但是我们还不能说memcachedb已经是一个数据库了,这是因为memcached不支持内存对象的遍历操作,当然更加不能支持复杂的查询操作,只能支持根据已知的key去查询对应的value。因此如果想把memcachedb当成一个高性能的分布式内存数据库来使用的话,查询的问题就没有办法解决,只能在应用程序里面配合其他方案做一些折衷。

然而memcached的另外一个开源项目完美的填补了这一个缺陷,就是memcache_engine

memcache_engine是一个MySQL数据库的存储引擎,目前只支持MySQL5.1数据库,他能够把memcachedb作为MySQL数据库的一个存储引擎和MySQL集成起来,让用户通过标准的SQL查询语句访问memcachedb中存放的数据,请看如下示例:

CREATE TABLE `a` (
    `a` int(11) NOT NULL DEFAULT '0',
    `b` int(11) DEFAULT NULL,
    `c` int(11) DEFAULT NULL,
    PRIMARY KEY (`a`)
    ) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='localhost:6666\;localhost:6688';


创建表a,存放在分布式memcached server:localhost:6666和localhost:6688当中。然后我们就可以使用标准的SQL语句随意的进行CRUD操作去使用memcachedb了,这实在是太酷了!有了memcache_engine,我们就可以用SQL去访问memcached,有了memcachedb,我们就不必担心数据丢失问题,事务恢复问题了,简直是绝配,让memcached真正成为了一个高性能的分布式数据库系统了。目前memcache_engine项目还是早期试验阶段,让我们期待memcache_engine项目早日发布正式版本吧!

顺便多说几句:最近一年来,特别是最近一个月以来,围绕memcached的开源项目发展的非常非常活跃:

1、最近刚刚发布了memcached的新的高性能C客户端接口: libmemcached

2、由于有了libmemcached,该组织又发布了memcache_engine存储引擎,cool!

3、由于libmemcached的发布,不到一周时间,ruby的两个崭新的memcache client就问世了,他们是CaffeineNew memcache-client,让ruby访问memcached的速度大幅度提高,请看:libmemcached发布了,ruby访问memcached提速20倍

4、memcachedb发布了,这是中国的互联网公司贡献的开源项目

以上几个项目都是在2008年1月发布的,真的不是一般的繁荣阿。再加上之前发布的新的支持异步访问的Java Memcached API和C#接口,可以说除了Python,其他主流非主流编程语言都可以使用memcached了。其实即便是Python还没有公布出来的开源接口,我们也知道国内的web2.0网站豆瓣就是使用Python访问memcached,并且支持了极大的访问量,因此目前围绕memcached的开源项目发展的情况非常的繁荣。

memcached最近两年这么受欢迎,其实和互联网web2.0的流行有很大的关系,web2.0网站通常需要个性化页面,依赖于页面局部和数据细颗粒度的缓存来提升性能,并且web2.0网站流量都很大,因此memcached这种高性能分布式缓存服务器就大行其道了。

当然我觉得最具有革命意义的还是memcache_engine和memcachedb这两个项目的发布,他们能够让memcached的用途不仅仅限于缓存服务器而已,而是能够真正充当分布式数据库来使用了,这无异是诸多大流量web2.0网站和开发人员的福音阿。
40
0
评论 共 17 条 请登录后发表评论
17 楼 lujinke 2009-10-21 10:31
这也是memcachedb为什么选择同样是将数据存储为key/value对的Berkeley DB作为其存储引擎的原因吧
16 楼 lujinke 2009-10-21 10:28
这样做性能会好吗?本来memcached在内存中的存储的就是key/value对,存储的是对象,并不是关系的元组,现在却用MYSQL做为它的存储引擎和查询引擎,mysql是典型的RDBMS,你SQL查询的时候,要进行RO映射,你持久化存储的时候又要OR映射,这本来就与memcached,BDB这类将数据以key/value形式存储以节省关系-对象映射开销的初衷相违背了。相memcachedb,bdb这种形式的数据库,本来就是适用于特定应用的系统,它们存储的数据都相对简单,根本不需要复杂的SQL来进行查询。
15 楼 hellas 2008-01-25 11:31
跟这个有什么区别吗?还是就是一个项目?
http://www.ibm.com/developerworks/opensource/library/os-php-fastapps3/
14 楼 carlosbdw 2008-01-25 10:19
javaeye啥时候能为开源社区做出贡献呢?
13 楼 stworthy 2008-01-24 20:12
分布式实时内存数据库,当属MNESIA
12 楼 JoeDanny 2008-01-23 13:17
引用
引用

个人感觉这样的结合很无谓,还要通过mysql的连接连接到memcached,那还不如直接弄内存数据库呢



请你推荐我一个高性能的,支持分布式的,高可靠性,持久化的,免费的内存数据库,我会非常感谢你

再加一条, 开源. free!
11 楼 robbin 2008-01-23 11:38
引用
个人感觉这样的结合很无谓,还要通过mysql的连接连接到memcached,那还不如直接弄内存数据库呢


请你推荐我一个高性能的,支持分布式的,高可靠性,持久化的,免费的内存数据库,我会非常感谢你
10 楼 dingyuan 2008-01-23 11:32
个人感觉这样的结合很无谓,还要通过mysql的连接连接到memcached,那还不如直接弄内存数据库呢
9 楼 johnnyhg 2008-01-23 10:45
很好,很有用,我搜藏了!
8 楼 pi1ot 2008-01-22 23:39
细碎value集造成的空间浪费也是很明显的,以前同样是新浪的某个部门专门因为这个原因做过一个memcached的patch,不过细节和效果我不太清楚,耳闻 :)
7 楼 pi1ot 2008-01-22 23:35
毕竟单个对象不能垮节点存放吧?而且如果有大量小数据,到一定数量以后key的定位速度也会慢下来
6 楼 ITeye管理员 2008-01-22 18:38
放什么对象进去都可以,这个没有什么限制的。不要说4G以下,就是20G,100G也可以全部放入内存。因为memcached是分布式的,你可以把memcached分布到n台服务器上面,一台服务器4G内存,30台服务器共同组建一个memcached Server,放100G一点问题都没有。
5 楼 airport 2008-01-22 16:13
memcacheddb难道是把所有的数据库数据搞到内存中放着吗?

那4G以下的数据库岂不是根本不用去访问数据库了

不知道那种复杂对象的持久化是否也可以搞定?
4 楼 galaxystar 2008-01-22 16:01
下下来,慢慢看!
3 楼 caibaohua 2008-01-22 15:26
很号 很强大
2 楼 hustzxq524 2008-01-22 14:34
python也有阿,memcached的主页就有介绍:
http://www.danga.com/memcached/apis.bml
1 楼 suxy 2008-01-22 13:42
非常好,振奋人心

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • IText html转pdf 解决中文自动换行问题

    1、解决HTML转pdf 中文、数字、英文不能换行的问题,修改的源码包 重新计算了右边距。 2、html转pdf 参考我的另外一篇博文https://blog.csdn.net/qq_38616723/article/details/125188407?spm=1001.2014.3001.5502

  • itext7 html转pdf 英文或数字不自动换行的问题

    【代码】itext7 html转pdf 英文或数字不自动换行的问题。

  • ITextRenderer 使用html生成pdf文档中文不换行的问题

    做笔记,记录问题 问题:生成的pdf文档中的文字会根据标点符号换行,导致右侧总会有间距,下图是我遇到的问题:解决方案:修改对应jar包下的Breaker代码,整体思路就是修改右边间距计算方法。下面贴有参考大佬修改后的源码。 我的解决步骤:1.找到ITextRenderer对应的jar包;2. 使用上述的修改后的Breaker源码替换jar包中的Breaker.class文件。(ps:需要把修改后的Breaker代码编译成class文件后再进行替换。) 解决后: 参考大佬修改后Breaker的文章: ht

  • Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克

    在做项目时有这么一个需求,需要将当前页面指定区域的内容导出pdf到本地。使用过程中遇到的问题及解决方法。需要一个支持中文的字体ttf文件,可以在网上下载,也可以使用本地window/font/路径下的文件。选择你本地的ttf文件,点击“Create”按钮,会生成一个js文件。上面乱码解决了,但是发现中文字不会自动换行。这个还需要进一步解决。如果是直接使用jsPDF生成pdf文件,中文是乱码。在导出多页的时候,希望在页面尾部添加页码。里面有个fontconverter目录。在页面中引入js文件。

  • html转pdf问题记录,中文不显示,中文不换行,css样式无效

    代码示例: public static void htmlToPDF(String pdfPath, String htmlPath) throws Exception { try { ITextRenderer renderer = new ITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver(); OutputStre

  • jspdf.js 如何将 html 元素 转为pdf,并且跨页文字自动换行

    使用 jspdf 可以将 HTML 转换为 PDF。

  • itextpdf将html转成pdf,包含中文字体以及中文换行

    1、maven文件下载 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.9</version> </dependency> ...

  • itext 将html转pdf中文显示换行以及字体问题

    1、itext将静态html转pdf中文显示及换行问题 2、itext将静态html转pdf 字体问题 3、html转pdf 参考我的另外一篇博文https://blog.csdn.net/qq_38616723/article/details/125188407?spm=1001.2014.3001.5502

  • html p 不换行_HTML 入门笔记 1

    HTML 入门笔记 1主要内容HTML 是谁发明的HTML 起手应该写什么常用的表章节的标签有哪些,分别是什么意思(h1~h6、section、article、main、aside 等等)全局属性有哪些常用的内容标签有哪些,分别是什么意思(a、strong、em、code、pre 等等)下面一一解释说明HTML 是谁发明的首先,HTML 是由李爵士,约在 1990 年左右,发明的。 李爵士做了以下...

  • html的强制换行在itextpdf,使用itext将html生成pdf中文换行问题解决方案

    这里使用的是itext2.0.8,高版本的itext使用请看http://www.voidcn.com/article/p-ssihooui-bdu.html,如果使用高版本的就不用看这篇文章了研究了很久,翻了网上很多资料才解决这个问题,一开始也是跟着别人的解决办法走,但是我看到很多人都失败了,其实很多都是细节上的问题,在此把我成功的项目共享给大家。1. 要解决中文问题,也就是需要iTextAsi...

  • html转pdf换行无效,关于jsoup格式化html 生成pdf 文本换行问题。

    最近在做一个功能,其中有一部分涉及到word转pdf,我是word转成html 之后 再转成pdf的,在html转换pdf的时候,html里面的长文本几十个字那种,在一个span标签里面,生成的pdf 这文字他不换行,我用css强制换行也没用,貌似itext只识别换行标签或者手动回车。 请问这个怎么解决一下 文字换行问题呢?File f = new File(targetHtml);org.jso...

  • html转pdf,ITEXT转HTML为PDF解决中文不换行问题

    1、core-renderer.jar该jar包修改过中文不换行问题 public static String getConversionHtmlCode(String linkcss,String htmlCode,String title){ String css = ""; css +="<style>"; css +="table{"; css +=" border-collapse: collapse;"; css +=" font-size: 15px;"; css +=" width: 98%;"; css +="}"; css +=""; css +="td{"; css +=" border: 1px solid #ddd;"; css +=" text-align: left;"; css +=" white-space: nowrap"; css +="}"; css +="th{"; css +=" border: 1px solid #ddd;"; css +=" text-align: left;"; css +="}"; css +="</style>"; String html = "<html><head>"+css+"</head><body margin:0;margin-top: 15px;margin-bottom: 15px; text-align: center; font-family:SimSun;\" >"+ title+""+ htmlCode + "</body></html>"; System.out.println("html:"+html); return html; }

  • itext将静态html转pdf 中文显示及换行问题

    注意:此代码是利用itext将静态html转为pdf,非url转pdf 项目为maven项目,注意pom.xml文件中的jar包 解决了中文不显示及不换行的问题 https://blog.csdn.net/woweipingzui/article/details/82017089

  • Html转pdf 解决中文、数字、英文换行问题

    解决HTML转pdf 中文、数字、英文不能换行的问题,修改的源码包 重新计算了右边距

  • html文件转pdf文件的jar包,非常实用,还能自动换行

    html文件转pdf文件的jar包,非常实用,还能自动换行,用这2个包就能将html文件转换为pdf文件了。

  • core-render 将html转pdf中文不能换行的问题

    原文地址http://blog.csdn.net/jys1109/article/details/9130329

Global site tag (gtag.js) - Google Analytics