Memlink 是天涯社区开发的一个高性能、持久化、分布式的Key-list/queue数据引擎。正如名称中的memlink所示,所有数据都建构在内存中,保证了系统的高性能 (大约是redis几倍),同时使用了redo-log技术保证数据的持久化。Memlink还支持主从复制、读写分离、List过滤操作等功能。
与Memcached不同的是,它的value是一个list/queue。并且提供了诸如持久化,分布式的功能。听起来有点像Redis,但它号称比Redis更好,在很多Redis做得还不好的地方进行了改进和完善。提供的客户端开发包包括 c,python,php,java 四种语言。
特点:
大概用一个礼拜的时间把memlink的源代码读了一边,也对缓存系统的做法有了一个大概的了解,如果现在去实现一个key-value的话应该用不了多长时间。但是这些东西重在设计。因为很多时候这些方法做起来都是有利有弊,比如其中的块计数:虽然省下来一些空间,但是如果写入操作变的多的时候可能会有较多的数据复制,这样性能也就下来了。具体不同结构的取舍在与具体业务的读写比例吧(在努力想一个更加牛掰的方式)
浏览memcached相关nosql文章,无意间看到memlink的文章,发现其测试数据相当彪悍。有时间自己做一个数据测试对比。 官方介绍: Memlink是一个高性能、持久化、分布式的Key=>List/Queue数据引擎。正如名称中的Memlink所示,所有数据都建构在内存中,保证了系统的高性能(读性能大约是Redis几倍到十倍),精简内存(内存消耗大约是Redis的1/4),使用了redo-
Introduction 目前,memlink支持的客户端库,有c,python,php,java这四种。python,php,java客户端实际上是利用c客户端来做成不同语言的模块。因此c以外语言的客户端同样可以达到很高的性能。 Details C/C++ MemLink* memlink_create(char *host, int readport, int writeport, int t
memlink按照天涯的人说是一个灰常牛的key-List系统,比Redis要快很多倍,下面就来一点点看它的代码。在内存中的Block也是通过一个池来管理的,用到的数据结构大致有三个DataBlock、MemItem、MemPool。MemPool的结构如下: typedef struct _mempool { MemItem *freemem; // 数组 int size;
Introduction 目前,memlink支持的客户端库,有c,python,php,java这四种。python,php,java客户端实际上是利用c客户端来做成不同语言的模块。因此c以外语言的客户端同样可以达到很高的性能。 Details C/C++ MemLink* memlink_create(char *host, int readport, int writeport, int
为什么会有Memlink? 对于大型论坛服务,比如百度贴吧、天涯论坛,日均发帖量过百万,日均PV过亿,日积月累下来的帖子数量可能几十亿。这么大的一个论坛服务,海量数据的存储、访问是一个非常有挑战性的技术难题。 中小规模的论坛通常使用mysql/sql server作为后端存储,当数据量膨胀时,比如一个版面有百万、千万级别主贴,一个主贴下有数百万回复,此时使用SQL语句select … order
Introduction Memlink用于持久化存储论坛中forum=>thread list,thread=>post list数据,下面对比了不同数据存储引擎存储上述逻辑关系的查询性能和内存开销。 Details 硬件 OS:CentOS release 4.6 (Final) 内存:4G CPU:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz (四核) 硬盘:
天涯社区最近开发了一款数据引擎——Memlink ,并将其开源。对于为什么会出现这样一款开源项目、它的能力和市面上的其他款同类型项目相比有怎样的优势,InfoQ中文站特地采访了天涯社区在北京研发中心的技术负责人冯勇先生。 1. 您好,能请您先自我介绍一下吗?您最近在做哪些有趣的事情呢? 大家好!我是天涯技术中心系统平台部负责人冯勇,系统平台部是今年刚组建的部门,旨在优化天涯线上产品的系统架构。天涯
天涯社区高性能数据引擎Memlink正式开源 http://www.lupaworld.com/article-207885-2.html
为什么会有Memlink? 对于大型论坛服务,比如百度贴吧、天涯论坛,日均发帖量过百万或千万,日均PV过亿,日积月累下来的帖子数量可能几十亿到上百亿。这种超级论坛,其海量存储、海量访问都是一个非常有挑战性的技术难题。 中小规模的论坛(Phpwind/discuz)通常使用mysql/sql server作为后端存储,当数据量膨胀时,比如一个版面有百万、千万级别主贴,一个主贴下有数百万回复,此时使用
本文向大家介绍NoSQL数据库,包括了NoSQL数据库的使用技巧和注意事项,需要的朋友参考一下 这些用于大型分布式数据集。关系数据库可以有效地处理一些大数据性能问题,而NoSQL数据库可以轻松解决此类问题。在分析可能存储在云的多个虚拟服务器上的大型非结构化数据时,非常有效。
本文向大家介绍初识NoSQL NoSql数据库入门 NoSql数据库基础知识,包括了初识NoSQL NoSql数据库入门 NoSql数据库基础知识的使用技巧和注意事项,需要的朋友参考一下 做了一年的大一年度项目了,对于关系型数据库结构还是有些了解了,有的时候还是觉得这种二维表不是很顺手。在看过一篇文章之后,对NoSQL有了初步的了解,(https://keen.io/blog/5395834921
NoSQL(Not Only SQL),指的是非关系型的数据库。随着Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoD
随着越来越多的数据变为非结构化或半结构化,通过NoSql数据库管理它们的需求也在增加。 Python也可以与与Relational数据库交互的方式类似地与NoSQL数据库交互。 在本章中,我们将使用python与MongoDB作为NoSQL数据库进行交互。 为了连接到MongoDB,python使用一个名为pymongo的库。 您可以使用Anaconda环境中的以下命令将此库添加到python环境
有时候数据以关系格式不可用,我们需要在NoSQL数据库的帮助下保持事务性。 在本章中,我们将重点介绍NoSQL的数据流。 我们还将通过敏捷和数据科学的结合来了解它的运作方式。 使用NoSQL敏捷的主要原因之一是在市场竞争中提高速度。 以下原因显示NoSQL如何最适合敏捷软件方法 - 更少的障碍 改变模型,即使在敏捷开发的情况下,目前正在经历中流也会产生一些实际成本。 使用NoSQL,用户使用聚合数
所有不遵循上节所述的关系模型的数据库统称为 NoSQL 数据库。 NoSQL 数据库一般使用集合代替表,使用文档代替记录。 NoSQL 数据库采用的设计方式使联结变得困难,所以大多数数据库根本不支持这种操作。 对于 之前的关系型数据库,若要列出各用户及其角色,就需要在程序中执行联结操作, 即先读取每个用户的 role_id,再在 roles 表中搜索对应的记录。 NoSQL 数据库更适合设计成如图
问题内容: 我有一个在Java堆栈(Struts 2 + Spring + Hibernate)上运行的Web应用程序,并在MySQL中保持不变。我查看了NoSQL数据库,它们肯定比RDBMS更容易推理和使用。这是一个音乐流应用程序,用于存储艺术家信息并允许用户保存播放列表。 我想知道切换到NoSQL DB(CouchDB,MongoDB,Cassandra)是否有任何优势(性能,硬件成本,简化代
问题内容: 我目前在一个网站上工作,该网站必须存在于内存可用性非常低的VM上(目前被告知要达到512mb)。不幸的是,至少在不久的将来,数据库和Web应用程序必须是同一台服务器。 现在,我已经在这里通读了一些问题,并尝试进行自己的研究,但是这里有很多选择。从本质上讲,什么是可以安装的轻巧的数据库服务器?SQL或NoSQL并不重要;它不会占用大量数据库资源,但我现在不想随我现在选择的内容而受到限制。