百世汇通快递单号速查查询单号查询211432560707

MySQL下的NoSQL解决方案HandlerSocket_数据库技术_Linux公社-Linux系统门户网站
你好,游客
MySQL下的NoSQL解决方案HandlerSocket
来源:Linux社区&
作者:21aspnet
目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多成功的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源:
Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成数据不一致。这在强调即时性的Web2.0时代,不可取。
Memcache崩溃后的雪崩效应:作为缓存的Memcache一旦崩溃,MySQL很可能在短时间内承受高负载而宕机。据说前段时间新浪微博就遭遇了这样的问题。
注:关于清理过期数据的问题,可以在程序架构上想办法,如果数据操作有统一DAO封装的话,可以利用Observer模式来清理过期数据,非主题内容,资料自查。
面对这些问题,项目是个不错的解决方案,它通过插件的方式赋予MySQL完整的NoSQL功能,从原理上讲,它跳过MySQL中最耗时的语法解析,查询计划等步骤,直接读取数据,如果内存够大,能装下索引,MySQL的查询效率能提高若干倍!
性能测试实例: (GFW)
因为HandlerSocket的性能足够好,所以就没有必要使用Memcache了,能节省大量的硬件资源,相当低碳!而且HandlerSocket操作的是MySQL放在内存中的索引,没有额外的缓存,所以自然就不存在数据一致性的问题。
如果使用版本的MySQL就简单了,因为它已经内置了支持,不过考虑到其内置的版本不够新,存在一些早已修复的BUG,所以最好采用源代码编译。
官方已经有了一份简单的,但在我实际安装时,遇到了一些其他未说明的问题,所以这里就把相应的安装过程再写一遍。
首先要确保已经安装了MySQL5.1以上的版本,我用的是操作系统,事先已经用apt安装了MySQL5.1.37,同时还需要相应的mysql_config,如果是Ubuntu的话,可以:
shell& aptitude install libmysqld-dev
注:如果你用的MySQL是从源代码编译的或官方提供的二进制版本,可以略过此步。
接着下载一份和系统MySQL版本一致的MySQL源代码和HandlerSocket源代码:
shell& tar zxf mysql-5.1.37.tar.gzshell& tar zxf ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-76-gf5f7443.tar.gzshell& cd ahiguti-HandlerSocket-Plugin-for-MySQL-f5f7443shell& ./autogen.shshell& ./configure --with-mysql-source=../mysql-5.1.37 \&&&&&&&&&&&&&&&&&& --with-mysql-bindir=/usr/bin \&&&&&&&&&&&&&&&&&& --with-mysql-plugindir=/usr/lib/mysql/plugin
其中的参数含义如下:with-mysql-source表示MySQL源代码目录,with-mysql-bindir表示MySQL二进制可执行文件目录(也就是mysql_config所在目录),with-mysql-plugindir表示MySQL插件目录,如果不清楚这个目录在哪,可以按如下方法查询:
mysql& SHOW VARIABLES LIKE 'plugin%';+---------------+-----------------------+| Variable_name | Value&&&&&&&&&&&&&&&& |+---------------+-----------------------+| plugin_dir&&& | /usr/lib/mysql/plugin |+---------------+-----------------------+
运行命令后,如果你使用的是MySQL5.1.37版本的话,会遇到如下错误信息:
MySQL source version does not match MySQL binary version
明明我们的MySQL源代码版本和二进制版本都是5.1.37,为什么还会出现这个错误呢?通过查询HandlerSocket的编译脚本,发现原来它会检索MySQL源代码目录中的VERSION文件,可MySQL5.1.37的源代码目录里不知何故竟然没有这个文件,所以就报错了,既然知道了原因,那我们就照猫画虎做一个VERSION文件放到MySQL源代码目录,内容如下:
MYSQL_VERSION_MAJOR=5MYSQL_VERSION_MINOR=1MYSQL_VERSION_PATCH=37MYSQL_VERSION_EXTRA=
再次运行configure脚本,应该就OK了,把剩下的步骤进行完:
shell& makeshell& make install
接着需要配置一下HandlerSocket,编辑MySQL配置文件,加入如下内容:
[mysqld]loose_handlersocket_port = 9998# the port number to bind to (for read requests)loose_handlersocket_port_wr = 9999# the port number to bind to (for write requests)loose_handlersocket_threads = 16# the number of worker threads (for read requests)loose_handlersocket_threads_wr = 1# the number of worker threads (for write requests)open_files_limit = 65535# to allow handlersocket accept many concurrent# connections, make open_files_limit as large as# possible.
相关资讯 & & &
& (09/30/:59)
& (09/02/:03)
& (10/13/:17)
& (09/16/:39)
& (10/13/:53)
& (09/11/:31)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款小白学数据之NoSQL数据库 进阶篇--百度百家
小白学数据之NoSQL数据库 进阶篇
分享到微信朋友圈
此猫简介:姓名滴滴,性别男,国籍美国。性格温顺,死宅,喜欢陪主人上班和学数据,主人是大数据文摘非专栏主编Aileen,据主人介绍,滴滴很愿意为大数据文摘“小白学数据”系列代言.
此猫简介:姓名滴滴,性别男,国籍美国。性格温顺,死宅,喜欢陪主人上班和学数据,主人是大数据文摘非专栏主编Aileen,据主人介绍,滴滴很愿意为大数据文摘“小白学数据”系列代言
大数据文摘作品,转载需授权
作者:薛菲
审稿:张远园 &&Aileen
这篇是小白学数据系列的NoSQL数据库的第二篇:进阶篇。数据分析方向的从业人员可以从中获取数据仓库软件市场的现状和分析,以增加自己的知识储备,为可能的技术转型打基础。而工程师可以找到关于NoSQL主流产品的分析介绍以及选择数据库的一些准则。NoSQL不是万能药,采用技术最好不要跟风,选择适合自己数据和应用的才是最好的哟~没有看过NoSQL基础篇的读者可以在文末的历史文章回顾中找到。
小白问:上次问了NoSQL,SQL的区别,好像有点忘了,我们可以温故而知新一下吗?
答:。。。好吧,上次我们说了他们主要有两个区别:第一就是数据建模的方式不同,SQL是采用表格的模型,虽然比较简洁整齐但是前期建模需要的投入比较大,并且之后如果想要更改这个模型是一件非常困难的事情;第二就是系统的可扩展性不同,NoSQL可以非常简单的加入新的机器进行分布式运行,而SQL数据库则需要进行复杂的分片过程,给使用数据库的应用增加复杂度。
小白问:这几天听说了一个叫做数据仓库的东西,这个和数据库有什么关系吗?
答:从技术上讲,数据仓库是数据库的一种。从功能上讲,数据库分成两种:一种是实时系统(也叫线上交易处理OLTP),另外一种就是数据仓库了(也叫线上分析处理OLAP)。
实时系统主要的功能是日常的操作处理。假设我们有一个卖煎饼的电子商务网站,那我们的电子商店应用连接的系统就是实时的OLTP系统,这个数据库中的信息永远是最新的,每次有人从我们的网站买煎饼,这个交易都要马上记录在数据库中可以进行发货客服等服务,关心和操作这些数据的人主要是公司的一线职工比如快递小哥以及一线的管理人员比如销售经理。这个系统单个的请求一般来说都比较简单,而由于买我们煎饼的人数很多,所以要保障这个系统的吞吐量。
然而公司的CEO和高层管理人员对数据有不同的诉求,他们希望可以通过分析数据来了解公司产品销售和财务的健康状况,进行分析和决策。有可能通过分析表明,煎饼中的薄脆会很快的售罄,那产品决策者可以增加薄脆原料的采购量。这个时候如果继续使用我们前面的实时OLTP系统就出现了两个问题。第一,由于实时系统中的数据建模是根据日常操作的需求来进行的,当需要大规模的复杂查询和计算的时候就比较捉急了。而数据仓库OLAP中的建模是专门为这个数据分析的需求而产生的,可以很快的进行聚集类的计算(比如平均日销售量,年销售总量等)。第二,由于实时系统对性能的要求很高,如果CEO需要的查询结果夺取了日常运营的资源,那就得不偿失了。数据仓库的解决方案就是定期将实时系统中新增的信息移到数据仓库中,也就是同样的一份信息用不同的方式存了两遍,这两个地方的数据模型并不相同,这样CEO和外卖小哥就不会互相影响了!
小白问:你说数据仓库中的信息是定时增加的,那就是说这里面的信息不是最全面的吗?
答:你说的对,数据仓库的信息会有些滞后,但是我们煎饼公司的决策人员想得到的是销售趋势而不是精细的信息,有个那么几天的延迟一般来说也没有什么关系。数据科学家的战场也是在数据仓库中哦!
小白问:那NoSQL数据库一般是作为实时的还是数据仓库呢?
答:在目前来说NoSQL更加常见的应用是实时的OLTP实时数据库,因为我们上次说了NoSQL的强项主要在于高度可扩展性和灵活的建模,这都是实时系统非常需要的东西,而对于进行聚集的查询所需要的计算能力还有待提高。新兴的大数据技术中最适合OLAP数据仓库的就是Hadoop相关的技术了,这里我们就不展开说了。
下面这个图是来自于高德纳咨询公司(Gartner,全球最具权威的IT研究公司)在2015年2月发布的对数据仓库OLAP的市场分析。我们可以看到,在领导者(Leaders)的这个象限中仍然只有传统的大型公司,比如大家都熟悉的甲骨文(Oracle),微软(Microsoft)和IBM。而新兴的技术进入这个名单的只有寥寥不多的几家,其中包括:亚马逊云服务 (Amazon Web Services)提供的数据分析服务,提供Hadoop相关软件的Cloudera和MapR公司以及提供文档型NoSQL数据库的MarkLogic公司。等会我们会看到,在高德纳公司提供的实时数据库的分析报告中则是百花齐放和群雄争霸的一个场面。而在数据仓库这个方面,还是传统公司占据主要的市场份额,而新兴的大数据分析系统还有待进一步的成熟。
图注:高德纳2015OLAP数据仓库系统市场分析
小白问:NoSQL的数据建模方式有哪几种呢?我记得上次提到文档和图,还有别的吗?
答:记性不错!主要有下面的四种:
1.键值型(Key-Value)&
2.列存储型 (Wide-Column)
下面我就简单介绍一下这四种数据库的建模方式,你可以参照下面高德纳的实时系统OLTP报告来对号入座,我会给一些这个图中的例子,给他们分到不同的类别中:
图注:高德纳2015OLTP实时数据库系统市场分析
1.键值型数据库
这是NoSQL中数据模型中最简单的一个了,主要就是用哈希表,通过对于键(Key)的查找来找到特定的数据。键值型数据库最大的优势其实就是它非常简单,很容易部署在应用中。而缺点就是这个模型过于简单,对于数据没有任何结构化的认知,只是知道返回了一坨数据,里面是什么完全没有概念。这种NoSQL数据库最典型的应用就是作为缓存,用来增加查询的性能,其实已经不能算作一个数据库了。可以在上面图中的领导象限看到Redis Lab,这个公司提供的产品Redis已经是风靡一时的缓存产品了,各大公司都用它!
2.列存储型数据库
这个数据模型其实和SQL的数据模型很像,都是存储在一个表格形状中的,但是有几个很重要的不同点。首先,在将数据放入列存储NoSQL数据库之前是不需要知道有那些列和列的具体信息的,而SQL是必须要这些信息才可以用的。另外每一行并不是在每一列都是有数据的,这是一个非常稀疏的表格。这种产品的可扩展性都很不错,上面表中就有在领导象限中DataStax公司所提供的产品Cassandra。
3.文档型数据库
我们上一篇文章中用JSON的例子就是文档型数据库,这些产品的优势在于数据建模非常的灵活,而且可以对数据的结构有所了解进行更加精确的查询。但是目前由于没有统一的查询语法,不同的产品的查询语言非常不一样。这个类型中的代表性产品有:MongoDB和MarkLogic,这两个公司都已经成为了市场的领导者之一。
4.图型数据库
图型数据库可以实用灵活的模型,对于社交网络方向的要求非常适合,只要是图结构的应用都是图型数据库的强项。这个类型的代表产品是Neo科技公司的Neo4j。
小白问:这么多不一样的NoSQL数据库我都晕了,我有选择障碍症啊,求问怎么选数据库?
答:这个当然是方方面面的了,需要考虑和公司已有的人才和技术资源的兼容性,以及产品价格和拥有产品后的支出,即使采用的是开源的产品也要考虑公司花大钱请来的程序员在这维护和建立系统方面花的时间,计算拥有系统的总支出。
如果从技术方面考虑的话就更多了,最主要就是要理解需求,下面有几个关键的点:
1. 如果你需要的是一个分析系统,而建模不需要太灵活的话,SQL数据库仍然是最好的选择。
2. 如果需要灵活的建模以及分析大规模的数据的话,可以考虑Hadoop或者Spark的解决方案。
3. 如果你需要的是一个实时系统,要考虑对已经拥有的数据,怎样建模最适合(文档,图型还是稀疏表格)。
4. 实时系统要考虑对事务的需求。所谓事务就是有一系列的数据库操作,这些操作要么都做要么都不做。比如你给小灰支付宝转账10块钱,最后要么成功了:你少10块,小灰多10块;要么你余额不足失败了,这时候两个人的余额都不变。不能出现别的可能性。SQL数据库是支持事务的,但是很遗憾很多的NoSQL是不支持事务的(比如MongoDB)。如果应用对这些方面有要求,注意选择有相关功能的数据库。
5.除此之外还要考虑如果集群中有机器宕机了会发生什么,备份是怎样进行的,如何检测系统的性能并调式性能等等等等......
俗话说的好,欲善其事必先利其器。选好了数据库系统可以让你的应用开发和数据分析事半功倍哟!
小白问:NoSQL是一个新兴的科技,你觉得在未来的一段时间会朝怎样的方向发展呢?
答:这个问题好,我觉得这几个发展方向是值得关注的:
1.对于数据仓库的应用会出现性能更加好的解决方案,毕竟是CEO时常需要的东西呢。比如和BI工具的连接也会加强的。
2.目前采用NoSQL系统的企业主要分布在金融和电信等行业,应该会出现针对于这些行业特定应用(比如CRM和金融中的风控)的整体解决方案打包产品。
3.技术方面更加成熟,更多的产品会支持事务等其他企业需要的功能。
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
阅读:8835
热门文章HOT NEWS
著名笑星陈佩斯阔别荧屏这20年,他都经历了什么
不八卦会死星人
不八卦会死星人
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻2015年专技公需科目培训中、高级题库(标准版)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
2015年专技公需科目培训中、高级题库(标准版)
上传于||文档简介
&&2015年专技公需科目培训中、高级题库
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩10页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢2015年专技人员公需科目培训(中、高级)题库2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
2015年专技人员公需科目培训(中、高级)题库2
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩9页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢SQL日薄西山 NoSQL标准化刻不容缓
发表于 16:55|
作者Andrew Oliver
摘要:如同拉里.埃里森的豪华游艇一样,关系型数据库正驶向日薄西山之处。但对NoSQL而言,标准的查询语言和应用程序接口亟待建立标准。
如同拉里.埃里森的豪华游艇一样,关系型数据库正驶向日薄西山之处。但对NoSQL而言,标准的查询语言和应用程序接口亟待建立标准。
Oracle已称霸数据库世界多年,但在未来,霸权的衰落不可避免的。在NoSQL和大数据浪潮的冲击下,基于逻辑范式设计的RDBMS已然摇摇欲坠。虽然Oracle及其盟友已经做出了快速的反映,并推出了自己的NoSQL数据库,但是Oracle所面对的尴尬情形就如同当年的Novell一样。
关系型数据库不会立刻消亡,它是一种影响深远的技术,在数据库领域曾独领风骚。关系型数据库有着严密的数学背景,其事务处理具有著名的ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
但我并不认为事务处理是关系型数据库的优势。事务处理跨越多个请求和响应周期,保证数据一致性的能力往往被夸大了。除了事务处理机制,我们还有其它方法保证数据一致性。
关系型数据库最大的优势其实是标准化。关系型数据库自身的发展史也证明,即便是最基本的标准化也比漫无章法更能占据市场。事实上,标准化也成为数据库融合、收购的极大障碍。
从关系型数据库到NoSQL的过渡是不可避免的。关系型数据库早在硬盘只有10MB的时代就被创造出来,而在现在,存储已经非常便宜,我们对性能和扩展性的期望也变得非常高。另一方面,随着互联网信息的膨胀,我们对数据分析和数据挖掘的要求也与日俱增。毫无疑问,在互联网时代,NoSQL才是数据库的未来。
许多公司并不具备能力极强的IT部门,也有许多公司通过外包的方式维持IT的运营。以Oracle数据库为例,在许多公司可能很缺乏具备专业知识的DBA,甚至其职责往往由系统管理员代理。传统数据库的复杂度成为阻碍公司发展的瓶颈。
所有的一切都意味着,我们不必使用结构化的数据,我们追求数据库的分布式、低延迟,以及快速处理海量数据的能力。
然而,这种转变困难重重。NoSQL缺乏一种主导力量。以关系型数据库为例,不管你选择哪种数据库产品(例如,DB2、Oracle或者SQL Server),它们都会遵循ANSI SQL标准,这让我们有所依赖。对于新的数据库,Pig、Hive等查询语言,也让我们觉得有共通之处。关系型数据库为我们提供了标准的访问接口,即便是最古老的ODBC。而对于NoSQL,你必须使用特定的数据库连接器。
大家都知道,NoSQL并不是为所有人设计的,但是标准的设计有助于市场的拓展。不论是对于可能成为潜在客户的大型机构,还是对于独立的风险投资商,标准化的产品、供应商、长期的技术支持都是吸引其注意力的筹码。当今,几乎没有人乐意采购昂贵的软件,但标准化仍然可以为技术的发展提供良好的空间。
为什么NoSQL要与传统的关系型数据库一决雌雄?原因就在于争夺数据库驱动SPI(服务编程接口)和API对主要编程语言平台的支持,这和构建标准化的查询语言别无二致。
不必追求完美的标准。关系型数据库供应商也没有在标准化方面做到尽善尽美,NoSQL只要将标准化做到足够好,足够吸引人,以至于人们乐意迁移到NoSQL平台就可以了。另一方面,我们要考虑到如何为不同类型的NoSQL数据库制定标准,比如文档类型的MongoDB,图形数据库Neo4j。
对图形数据库设计的查询语言不一定适用于文档数据库或键值结构数据库。当然,在常规情况下,我们的查询都很简单,非常容易得到支持。这些非关系型数据库也有许多共通之处,例如,它们都支持层次化查询(hierarchical query)。我认为,一种标准不是一种强制,而是一种建议。
微软的一些研究人员也曾提出NoSQL的标准化问题。他们曾试图使MongoDB支持UnQL和LINQ。在Java的世界里,Spring Data是通用的CRUD接口,但一切还没有眉目。
NoSQL供应商及所有NoSQL支持者是时候走到一起了!乘风破浪,共同制定NoSQL的标准,迎接NoSQL的未来!(张志平/编译)
原文链接:
推荐阅读相关主题:
网友评论有(0)
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章}

我要回帖

更多关于 百世汇通运费查询 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信