关于Yahoonosql的信息

现在最成熟的开源nosql是什么?分别有什么优缺点

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

目前成都创新互联公司已为上千家的企业提供了网站建设、域名、网站空间成都网站托管、企业网站设计、余杭网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

虽然NoSQL流行语火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动。尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着一个严酷的事实:技术越来越成熟——以至于原来很好的NoSQL数据存储不得不进行重写,也有少数人认为这就是所谓的2.0版本。这里列出一些比较知名的工具,可以为大数据建立快速、可扩展的存储库。

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

企业大数据工作的任务、工具及挑战

企业大数据工作的任务、工具及挑战

随着互联网、移动互联网和物联网的广泛而深入地应用,人类活动的踪迹加快在网络空间的映射,网络浏览、行车轨迹、物等等均留下数据记录。

目前,全球数据呈现爆发式增长态势,人类社会迈入大数据时代;

全球每18个月新增数据量是人类有史以来全部数据量的总和。

大数据的核心是数据,与大小无关,数据已经成为战略资产。

数据是人类活动在网络空间的映射,蕴含人类生产、生活的规律,挖掘数据潜在价值,对国家治理、社会管理、企业决策和个人生活影响深远。

世界经济论坛的报告认为大数据为新财富,价值堪比石油;

商业版图由此被重新划定,通晓如何利用这些数据的企业将成为最强者。

0. 澄清基本概念

为了不在后面讨论中因概念不清产生误解,我们首先给出几个定义:

大型IT企业:指对外提供IT相关的软硬件产品及服务的公司,员工至少在万人以上。 

数据平台:指大型IT企业用来为自身服务为主,担负数据存储、处理、分析业务和软硬件综合。

主要针对内部服务,不对外开发。

数据分析:此处的数据分析师广义的,包括一切基于数据得出的insights的行为,包括统计分析、机器学习建模和预测等。

1. 大型IT企业开展对内数据业务的驱动力

就目前而言,IT企业针对自身的数据分析业务可以分为广告和非广告两类。

对大多数企业而言,除了广告之外的数据业务,并不能直接带来可以量化的收入。

但是,无论当前数据分析的结果为企业的现金流做了多少贡献。

数据为王的思想已然占据了众多前沿企业间的头脑。

数据是矿山,insights是金子,有了矿山才能有金子,有了矿山,终究会有金子。

因此,开发数据业务最主要的驱动力,实际是对数据业务未来前景的积极预估。

主要应用有(除广告之外):

用户画像——越来越多的企业开始观众用户画像,毕竟知己知彼百战不殆,卖东西先得了解买主。

客户保持——预测哪些现有客户可能弃用产品或服务,即使采取措施挽留之。

产品使用分析——DAU,MAU,PV,UV,CTR等等,这些看起来都是些简单的统计数字,但却是反应产品被使用情况的重要指标。

产品推荐、销量预测销售指标……等等

具体到某一种应用,看似并不复杂,有些有成熟的方法可以用来训练模型,还有些根本就是统计指标。

似乎并不需要什么高深的算法背景。但一旦涉及实际,就不像看起来那么简单了。

即使是统计指标,也不像想象得那样,随便run几个sql query就能得出来。

对于大型分布式系统,不同模块的访问log都有可能分布在不同的cluster上,单纯收集每日全局log就是一个复杂工作,更别说之后的合并、去重、聚合等工作。

因此,大型企业的数据分析不是做个excel表,安装一个免费mysql能够解决的,而是需要专门的大型数据分析平台。

2. 数据分析平台通用架构

常见的数据分析平台,至少包括数据存储、处理和分析三个部分。

2.1 数据存储

数据存储不必解释,是一定必要的。

但是如何备份是一个很重要的问题。

假设:某公司一年产生上千PB的数据。

按照单纯数据的存储费用1美元/GB年计算,存1TB一年就是1000美元,一PB就是100万,1000PB就是10亿。如果就是简单的使用hadoop的默认配置,每份数据都存3份,那么,这个实际产生数据x 3的体量将有多大?有将有多大的cost?

这是存储层的挑战。为了解决这个问题,一方面从硬件层面力图降低存储介质的价格,比如近年来冷存储的提出,就是针对运维费用。

另一方面就是寻找备份算法。

例如,yahoo专门研发了一种图片存储算法,逻辑上是11个备份,但是size只有原size的1.x倍。

2.2 数据处理

数据处理传统上叫ETL、EDW,主要指数据的清洗、迁移和格式化。

大数据平台,由于应用范畴不同,自然多种多样,源数据包括结构化数据和非结构化数据。

但是如果数据真的是“大数据”(符合4V特征)的话,即使本身收集上来的数据是结构化的,也往往需要二次处理,转换format或schema。 

数据处理层所需技术相对简单,然而挑战在于对于数据的理解。

如果不知道这个收集上来的log文件里面要提取出多少字段,每个字段对应数据源中的哪个部分,则数据提取完全不能进行。

这就要求进行数据处理的人必须同时具备对业务的了解。

2.3 数据分析

数据分析是数据中寻找价值的关键步骤。

数据分析工作本身还处于初级阶段。

除了一些简单的统计计算,大多数数据还是只能交给分析人员,进行没有特别针对性的探索,效果难以得到保证。

对于这些挑战,开展数据业务早的公司,相应的平台和技术是在针对自身业务的过程中慢慢发展起来,部分公司选择是将平台外包或者自己开发针对自身业务的定制功能。

相对于前两者,数据分析师一个业务针对性更强的步骤,因此更难采用通用方法或手段解决,更加依赖企业自身的积累。

3. 数据分析平台开源框架

3.1 开源框架

目前,就国内而言,谈到数据分析相关的开源框架,总不能忽略下面三个:

hadoop:batch,mapReduce

storm:streaming

spark:batch + streaming

这些开源框架的共同特点是把重点放在并行计算框架上,关注的是job latency, load balance和fault recovery,对于资源分配、用户管理和权限控制几乎不考虑。

它们基于的假设是:所有用户都一样,平权,所有用户都能用所有的机器以最快的可能完成所有工作。

3.2 开源框架的局限

而在大型企业内部,不同部门,同一部门的不同job,绝对不是平权的。

不同部门之间,也有很多私密的数据,不让别人访问。

不同用户的权限也是不一样的。对于计算资源的需求,因为不同job的优先级不同,也要求予以区别。

在这种需求之下,催生了一些第三方,专门提供hadoop等开源框架的资源、权限管理产品或者服务。hadoop在升级到2以后,也考虑一些数据隔离的问题。

但其力度,恐怕难以满足大多数大型企业的要求。

这也是使用开源框架的无奈。使用开源产品的商业发行版,也是一种办法。不过始终是不如企业原生系统在这方面的支持。

3.3 企业原生框架

确实也有些企业独立开发了全自主(不基于开源产品)的仅限于内部使用的分布式数据处理平台。在用户管理,数据访问权限,存储、运算资源管理等方面很下功夫。

例如:要求每个用户在提交job前必须先申请token,有多少token,就有多少计算量。不同数据存储路径之间的权限完全单独管理,使用者也要实现申请权限。

但是开发这样的系统意味着企业必须具备非常强大的研发能力,并能承担得起巨大的人力等资源的消耗。而且相对于开源系统已经实现的功能,难免有重复造轮子之嫌,即使是大型企业,也很少选取这种方案。 

4. 大型IT企业数据业务的挑战

4.1 通用挑战:意识、技术和人才

4.1.1 意识

意识主要是指决策层的思想意识——数据对于企业发展是否真的必要?

这一点在很多管理者脑子里还是存疑的,他们目前所处状态很多是:听说数据这东西有用,人家都在搞,所以我们也要搞,至于是不是真有用,搞出来看看再说。

如果只是采用游戏或者试探态度,必然影响发展进程。但这也是没办法的事情,所有新事物都必须经历这一过程。

4.1.2 技术

技术指目前数据分析的技术,基本是采用新框架逆流支持旧接口的策略。

曾经有一篇文章,名叫《NoSQL?NO,SQL》,说的就是这个。

包括spark回头支持SQL,也是如此。明明我们分析的是非结构化数据,但是因为高阶算法的问题,却连mapReduce都放弃了,索性回到SQL时代。

为了让更多人用的舒服,不去开发针对非结构化数据的新方法,而是反过来,向下兼容结构化。

个人认为这是一种逆流。这样做则永远无法避免巨大的数据处理工作。

4.1.3 人才

“数据科学家”这个词大家肯定都知道。

可是,这个职位其实很模糊,不同公司,甚至同一公司的不同部门之间对这一职位的定义相差甚远。

有些数据科学家是学数学的博士,有些是以前做BI的,有些是PM转行的,水平参差不齐。

所以,恐怕在相当长的时期里,这会是一个门槛低,要求高的职位。很难短时间内批量涌现出优秀者。

4.2 特有挑战:产品align

产品align是说每个产品的数据分析结果可以互相对比,也就是要求其定义和实现都一致。

对于一个产品众多的大企业而言,要求不同产品、流水线的分析报告具有可比性,这是一个很常见的需求。

但是由于现在大多数企业中数据分析不是由一个部门统一管理,各个产品部门各自为战,结果导致在align的过程中互相牵制,进而拉低了所有产品的分析水平。

这样的挑战有赖于企业总体数据策略的制定和执行。

而整体策略的制定和执行又有赖于前面所说的三点通用挑战,环环相扣,显然不能一蹴而就。

5. 大企业数据工作的发展趋势

早期的数据分析工作,在实践层面基本采用批处理模式。

随着业务的发展,对于其实时或者准实时(NRT)的需求越来越多。

提供latency极短的增量分析和流式服务是众多企业数据分析工作的当务之急。

从长远考虑,真正拥有数据的是大企业,未来,大企业在数据的分析利用上,也必将全面胜出小企业。

不过,处于不同成熟阶段的大公司突破点各不同。

有些技术先行,在分析方法和工具上成为领军。

另一些则倾向数据管理和治理,在管理层面上,在策略、条例的制定上为整个社会提供先进经验。

如何根据性能选择内存NoSQL数据库

本文主要内容是测试了不同NoSQL数据库在测试工具YCSB中的表现。我们选取了3款流行的内存(in-memory)数据库管理系统:Redis,Tarantool 以及 CouchBase,还有缓存系统Memchached。Memchached虽然不属于数据库管理系统但常作为快速存储系统使用。

测试环境由4台在Microsoft Azure Cloud中的虚拟机组成的计算机组组成。这些虚拟机同属于一个数据中心。nosql-1和nosql-2用作测试Tarantool和CouchBase,nosql-3和nosql-4用作测试Redis,Azure Redis Cache 以及 Memcached。这些机器都安装和配置了相应数据库和测试项目。虚拟机的配置为4核A3 CPU,7GB RAM,120GB硬盘。

数据库及设置

内存数据库管理系统会存储所有在主内存中的数据并在磁碟上进行持续更新操作;透过日志记录每个数据的修改以确保连贯性。由于是以append-only方式进行日志写入,因此它很少遇到瓶颈问题;读取/写入都不会造成频繁的磁碟头移动。

Redis在2009推出,目前的最新版本是3.0.5。我们这里使用的版本是3.0.4,以append-only(只附加)方式进行数据管理,与其配合使用的是Microsoft Azure Redis Cache工具。

Tarantool是一款开源NoSQL数据库管理系统。我们使用的是Tarantool 1.6.7-126-gb35aff9,日志采用write-ahead(先写)模式。Memcached是一款分布式内存缓存系统,这里使用是Memcached 1.4.14-0ubuntu9。

Couchbase Server是开源分布式NoSQL面向文档数据库,这里使用的版本是Couchbase 4.0.0-4047-1。

YCSB测试工具

Yahoo! Cloud Serving Benchmark(YCSB)是功能强大的NoSQL数据库性能测试工具,它提供了6种主要的负载工作类型,以字母A到F来区分。

负载A负责更新操作,极值是50/50的读写操作,如用于进行新近操作记录。负载B负责读取操作,极值是95/5的读写操作,如用于进行图片标签管理,多进行标签读取操作。负载C负载100%的读取操作,如用于进行用户属性获取。负载D以先进先出方式进行插入操作,如用户进行最新数据读取。负载E负责小范围记录读取而不是单个记录读取,如线程会话。负载F负责记录的读取,修改和写入,如用户信息管理。

我们对配置文件作了两处参数修改:数据条目recordcount设为200000,操作条目operationcount设为5000000。YCSB是多线程工具,我们将以8, 16, 32, 64, 128 及256 线程来进行测试。详细的测试脚本请点击这里进行下载。

下列测试结果图以颜色进行测试对象区分,

Tarantool (HASH) (蓝)

Tarantool (TREE)(浅蓝)

Redis (红)

Azure Redis Cache (橙)

Memcached (绿)

CouchBase(黑)

更多图片请点击[这里]查看。

结论

Tarantool在所有负载类型测试中皆取得了最优成绩。它创建了一个无锁内存引擎,以协同多任务方式进行操作而不是互斥或并行处理方式。根据以下性能图表现,我们的结论是Tarantool的高吞吐量处理是其最大优势之一。因此在多数场合下,Tarantool是用户的最佳选择。

大数据应用较多的技术都有哪些

简单说有三大核心技术:拿数据,算数据,卖数据。通用化的大数据处理框架,主要分为下面几个方面:数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。涉及到的技术很多

Logstash

Sqoop

Strom

Zookeeper

Hadoop

等等


分享名称:关于Yahoonosql的信息
链接地址:http://azwzsj.com/article/dsgdsei.html