大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
或如何了解缺少哪些官方文件
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了弥勒免费建站欢迎大家使用!
如果我不得不用一个短语来描述Elasticsearch,我会说:
目前,Elasticsearch在十大最受欢迎的开源技术中。 公平地说,它结合了许多本身并不独特的关键功能,但是,当结合使用时,它可以成为最佳的搜索引擎/分析平台。
更准确地说,由于以下功能的结合,Elasticsearch变得如此流行:
· 搜索相关性评分
· 全文搜索
· 分析(汇总)
· 无模式(对数据模式无限制),NoSQL,面向文档
· 丰富的数据类型选择
· 水平可扩展
· 容错的
通过与Elasticsearch进行合作,我很快意识到,官方文档看起来更像是所谓文档的"挤压"。 我不得不在Google上四处搜寻,并且大量使用stackowerflow,所以我决定编译这篇文章中的所有信息。
在本文中,我将主要撰写有关查询/搜索Elasticsearch集群的文章。 您可以通过多种不同的方式来实现大致相同的结果,因此,我将尝试说明每种方法的利弊。
更重要的是,我将向您介绍两个重要的概念-查询和过滤器上下文-在文档中没有很好地解释。 我将为您提供一组规则,以决定何时使用哪种方法更好。
在阅读本文后,如果我只想让您记住一件事,那就是:
当我们谈论Elasticsearch时,总会有一个相关性分数。 相关性分数是严格的正浮点数,表示每个文档满足搜索标准的程度。 该分数是相对于分配的最高分数的,因此,分数越高,文档与搜索条件的相关性越好。
但是,过滤器和查询是您在编写查询之前应该能够理解的两个不同概念。
一般来说,过滤器上下文是一个"是/否"选项,其中每个文档都与查询匹配或不匹配。 一个很好的例子是SQL WHERE,后面是一些条件。 SQL查询总是返回严格符合条件的行。 SQL查询无法返回歧义结果。
另一方面,Elasticsearch查询上下文显示了每个文档与您的需求的匹配程度。 为此,查询使用分析器查找最佳匹配。
经验法则是将过滤器用于:
· 是/否搜索
· 搜索精确值(数字,范围和关键字)
将查询用于:
· 结果不明确(某些文档比其他文档更适合)
· 全文搜索
此外,Elasticsearch将自动缓存过滤器的结果。
在第1部分和第2部分中,我将讨论查询(可以转换为过滤器)。 请不要将结构化和全文与查询和过滤器混淆-这是两件事。
结构化查询也称为术语级查询,是一组查询方法,用于检查是否应选择文档。 因此,在很多情况下,没有真正必要的相关性评分-文档匹配或不匹配(尤其是数字)。
术语级查询仍然是查询,因此它们将返回分数。
名词查询 Term Query
返回字段值与条件完全匹配的文档。 查询一词是SQL select * from table_name where column_name =...的替代方式
名词查询直接进入倒排索引,这可以使其快速进行。 在处理文本数据时,最好仅将term用于keyword字段。
名词查询默认情况下在查询上下文中运行,因此,它将计算分数。 即使所有返回的文档的分数相同,也将涉及其他计算能力。
带有过滤条件的 名词 查询
如果我们想加速名词查询并使其得到缓存,则应将其包装在constant_score过滤器中。
还记得经验法则吗? 如果您不关心相关性得分,请使用此方法。
现在,该查询没有计算任何相关性分数,因此,它更快。 而且,它是自动缓存的。
快速建议-对文本字段使用匹配而不是名词。
请记住,名词查询直接进入倒排索引。名词查询采用您提供的值并按原样搜索它,这就是为什么它非常适合查询未经任何转换存储的keyword字段。
多名词查询 Terms query
如您所料,多名词查询使您可以返回至少匹配一个确切名词的文档。
多名词查询在某种程度上是SQL select * from table_name where column_name is in...的替代方法
重要的是要了解,Elasticsearch中的查询字段可能是一个列表,例如{“ name”:[“ Odin”,“ Woden”,“ Wodan”]}。如果您执行的术语查询包含以下一个或多个,则该记录将被匹配-它不必匹配字段中的所有值,而只匹配一个。
与名词查询相同,但是这次您可以在查询字段中指定多少个确切术语。
您指定必须匹配的数量-一,二,三或全部。 但是,此数字是另一个数字字段。 因此,每个文档都应包含该编号(特定于该特定文档)。
返回查询字段值在定义范围内的文档。
等价于SQL select * from table_name where column_name is between...
范围查询具有自己的语法:
· gt 大于
· gte 大于或等于
· lt 小于
· lte 小于或等于
一个示例,该字段的值应≥4且≤17
范围查询也可以很好地与日期配合使用。
正则表达式查询返回其中字段与您的正则表达式匹配的文档。
如果您从未使用过正则表达式,那么我强烈建议您至少了解一下它是什么以及何时可以使用它。
Elasticsearch的正则表达式是Lucene的正则表达式。 它具有标准的保留字符和运算符。 如果您已经使用过Python的re软件包,那么在这里使用它应该不是问题。 唯一的区别是Lucene的引擎不支持^和$等锚运算符。
您可以在官方文档中找到regexp的完整列表。
除正则表达式查询外,Elsticsearch还具有通配符和前缀查询。从逻辑上讲,这两个只是regexp的特殊情况。
不幸的是,我找不到关于这三个查询的性能的任何信息,因此,我决定自己对其进行测试,以查看是否发现任何重大差异。
在比较使用rehexp和通配符查询时,我找不到性能上的差异。如果您知道有什么不同,请给我发消息。
由于Elasticsearch是无模式的(或没有严格的模式限制),因此当不同的文档具有不同的字段时,这是一种很常见的情况。 结果,有很多用途来了解文档是否具有某些特定字段。
全文查询适用于非结构化文本数据。 全文查询利用了分析器。 因此,我将简要概述Elasticsearch的分析器,以便我们可以更好地分析全文查询。
每次将文本类型数据插入Elasticsearch索引时,都会对其进行分析,然后存储在反向索引中。根据分析器的配置方式,这会影响您的搜索功能,因为分析器也适用于全文搜索。
分析器管道包括三个阶段:
总有一个令牌生成器和零个或多个字符和令牌过滤器。
1)字符过滤器按原样接收文本数据,然后可能在对数据进行标记之前对其进行预处理。 字符过滤器用于:
· 替换与给定正则表达式匹配的字符
· 替换与给定字符串匹配的字符
· 干净的HTML文字
2)令牌生成器将字符过滤器(如果有)之后接收到的文本数据分解为令牌。 例如,空白令牌生成器只是将文本分隔为空白(这不是标准的)。 因此,Wednesday is called after Woden, 将被拆分为[Wednesday, is, called, after, Woden.]。 有许多内置标记器可用于创建自定义分析器。
删除标点符号后,标准令牌生成器将使用空格分隔文本。 对于绝大多数语言来说,这是最中立的选择。
除标记化外,标记化器还执行以下操作:
· 跟踪令牌顺序,
· 注释每个单词的开头和结尾
· 定义令牌的类型
3)令牌过滤器对令牌进行一些转换。您可以选择将许多不同的令牌过滤器添加到分析器中。一些最受欢迎的是:
· 小写
· 词干(存在多种语言!)
· 删除重复
· 转换为等效的ASCII
· 模式的解决方法
· 令牌数量限制
· 令牌的停止列表(从停止列表中删除令牌)
标准分析器是默认分析器。 它具有0个字符过滤器,标准令牌生成器,小写字母和停止令牌过滤器。 您可以根据需要组成自定义分析器,但是内置分析器也很少。
语言分析器是一些最有效的即用型分析器,它们利用每种语言的细节来进行更高级的转换。 因此,如果您事先知道数据的语言,建议您从标准分析器切换为数据的一种语言。
全文查询将使用与索引数据时使用的分析器相同的分析器。更准确地说,您查询的文本将与搜索字段中的文本数据进行相同的转换,因此两者处于同一级别。
匹配查询是用于查询文本字段的标准查询。
我们可以将匹配查询称为名词查询的等效项,但适用于文本类型字段(而在处理文本数据时,名词应仅用于关键字类型字段)。
默认情况下,传递给查询参数的字符串(必需的一个)将由与应用于搜索字段的分析器相同的分析器处理。 除非您自己使用analyzer参数指定分析器。
当您指定要搜索的短语时,将对其进行分析,并且结果始终是一组标记。默认情况下,Elasticsearch将在所有这些标记之间使用OR运算符。这意味着至少应该有一场比赛-更多的比赛虽然会得分更高。您可以在运算符参数中将其切换为AND。在这种情况下,必须在文档中找到所有令牌才能将其返回。
如果要在OR和AND之间输入某些内容,则可以指定minimum_should_match参数,该参数指定应匹配的子句数。 可以数字和百分比指定。
模糊参数(可选)可让您忽略错别字。 Levenshtein距离用于计算。
如果您将匹配查询应用于关键字keyword字段,则其效果与词条查询相同。 更有趣的是,如果将存储在反向索引中的令牌的确切值传递给term查询,则它将返回与匹配查询完全相同的结果,但是会更快地返回到反向索引。
与匹配相同,但顺序和接近度很重要。 匹配查询不了解序列和接近度,因此,只有通过其他类型的查询才能实现词组匹配。
match_phrase查询具有slop参数(默认值为0),该参数负责跳过术语。 因此,如果您指定斜率等于1,则短语中可能会省略一个单词。
多重比对查询的功能与比对相同,唯一的不同是多重比对适用于多个栏位
· 字段名称可以使用通配符指定
· 默认情况下,每个字段均加权
· 每个领域对得分的贡献都可以提高
· 如果没有在fields参数中指定任何字段,那么将搜索所有符合条件的字段
有多种类型的multi_match。 我不会在这篇文章中描述它们,但是我将解释最受欢迎的:
best_fields类型(默认值)更喜欢在一个字段中找到来自搜索值的令牌的结果,而不是将搜索的令牌分配到不同字段中的结果。
most_fields与best_fields类型相反。
phrase类型的行为与best_fields相同,但会搜索与match_phrase类似的整个短语。
我强烈建议您查阅官方文档,以检查每个字段的得分计算准确度。
复合查询将其他查询包装在一起。 复合查询:
· 结合分数
· 改变包装查询的行为
· 将查询上下文切换到过滤上下文
· 以上任意一项
布尔查询将其他查询组合在一起。 这是最重要的复合查询。
布尔查询使您可以将查询上下文中的搜索与过滤器上下文搜索结合在一起。
布尔查询具有四个可以组合在一起的出现(类型):
· must或"必须满足该条款"
· should或"如果满足条款,则对相关性得分加分"
· 过滤器filter或"必须满足该条款,但不计算相关性得分"
· must_not或“与必须相反”,不会有助于相关度得分
必须和应该→查询上下文
过滤器和must_not→过滤器上下文
对于那些熟悉SQL的人,必须为AND,而应为OR运算符。 因此,必须满足must子句中的每个查询。
对于大多数查询,提升查询与boost参数相似,但并不相同。 增强查询将返回与肯定子句匹配的文档,并降低与否定子句匹配的文档的得分。
如我们在术语查询示例中先前看到的,constant_score查询将任何查询转换为相关性得分等于boost参数(默认值为1)的过滤器上下文。
让我知道是否您想阅读另一篇文章,其中提供了所有查询的真实示例。
我计划在Elasticsearch上发布更多文章,所以不要错过。
你已经读了很长的内容,所以如果你阅读到这里:
综上所述,Elasticsearch符合当今的许多用途,有时很难理解什么是最佳工具。
如果不需要相关性分数来检索数据,请尝试切换到过滤器上下文。
另外,了解Elasticsearch的工作原理也至关重要,因此,我建议您始终了解分析器的功能。
Elasticsearch中还有许多其他查询类型。 我试图描述最常用的。 我希望你喜欢它。
(本文翻译自kotartemiy ✔️的文章《Deep Dive into Querying Elasticsearch. Filter vs Query. Full-text search》,参考:)
DB(Database)数据库,另外,还有常见的DBMS表示数据库管理系统(Database Management System)。
数据库是以某种规则储存在一起、能够与多个用户共享、具有尽可能小的冗余度、且与应用程序彼此独立的数据集合,可以视为电子化的文件柜,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
扩展资料:
数据库类型:
1、关系数据库
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。
常见的关系型数据库有Mysql,SqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
2、非关系型数据库(NoSQL)
指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。
NoSQL数据库技术还是具有非常明显的应用优势,如数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。
参考资料来源:百度百科-数据库
关系数据库经过几十年的发展,已经非常成熟,但同时也存在不足:
表结构是强约束的,业务变更时扩充很麻烦。
如果对大数据量的表进行统计运算,I/O会很高,因为即使只针对某列进行运算,也需要将整行数据读入内存。
全文搜索只能使用 Like 进行整表扫描,性能非常低。
针对这些不足,产生了不同的 NoSQL 解决方案,在某些场景下比关系数据库更有优势,但同时也牺牲了某些特性,所以不能片面的迷信某种方案,应将其作为 SQL 的有利补充。
NoSQL != No SQL,而是:
NoSQL = Not Only SQL
典型的 NoSQL 方案分为4类:
Redis 是典型,其 value 是具体的数据结构,包括 string, hash, list, set, sorted set, bitmap, hyperloglog,常被称为数据结构服务器。
以 list 为例:
LPOP key 是移除并返回队列左边的第一个元素。
如果用关系数据库就比较麻烦了,需要操作:
Redis 的缺点主要体现在不支持完成的ACID事务,只能保证隔离性和一致性,无法保证原子性和持久性。
最大的特点是 no-schema,无需在使用前定义字段,读取一个不存在的字段也不会导致语法错误。
特点:
以电商为例,不同商品的属性差异很大,如冰箱和电脑,这种差异性在关系数据库中会有很大的麻烦,而使用文档数据库则非常方便。
文档数据库的主要缺点:
关系数据库是按行来存储的,列式数据库是按照列来存储数据。
按行存储的优势:
在某些场景下,这些优势就成为劣势了,例如,计算超重人员的数据,只需要读取体重这一列进行统计即可,但行式存储会将整行数据读取到内存中,很浪费。
而列式存储中,只需要读取体重这列的数据即可,I/O 将大大减少。
除了节省I/O,列式存储还有更高的压缩比,可以节省存储空间。普通行式数据库的压缩比在 3:1 到 5:1 左右,列式数据库在 8:1 到 30:1,因为单个列的数据相似度更高。
列式存储的随机写效率远低于行式存储,因为行式存储时同一行多个列都存储在连续空间中,而列式存储将不同列存储在不连续的空间。
一般将列式存储应用在离线大数据分析统计场景,因为这时主要针对部分列进行操作,而且数据写入后无须更新。
关系数据库通过索引进行快速查询,但在全文搜索的情景下,索引就不够了,因为:
假设有一个交友网站,信息表如下:
需要匹配性别、地点、语言列。
需要匹配性别、地点、爱好列。
实际搜索中,各种排列组合非常多,关系数据库很难支持。
全文搜索引擎是使用 倒排索引 技术,建立单词到文档的索引,例如上面的表信息建立倒排索引:
所以特别适合根据关键词来查询文档内容。
上面介绍了几种典型的NoSQL方案,及各自的适用场景和特点,您可以根据实际需求进行选择。
RDBMS是Relational Database Management System几个单词的缩写,翻译成中文就是“关系型数据库管理系统”,简称关系型数据库,所以RDBMS是关系型数据库的统称。RDBMS是当前最主流的数据库类型,世界上占有率排名前三的oracle,mysql,sql_server全部都属于RDBMS。
数据库分为关系型数据库和非关系型数据库,而关系型数据库往往是用RDBMS来表示,所以数据库与RDBMS就是一种父子关系。补充,非关系型数据库也有一个统称,叫Nosql
当初在传智播客学软件测试时候就学过。
大数据热门词汇汇总
可以说,大数据是如今IT行业最热门的趋势之一,它催生出了处理大数据的一批全新技术。而新技术带来了新的热门词汇:首字母缩略词、专业术语和产品名称等。连"大数据"这个短语本身都让人犯晕。许多人一听到"大数据",觉得是指"大量数据",而大数据的涵义绝不仅仅涉及数据量的多寡。
下面是我们认为你要熟悉的几个热门词汇,按字母顺序排列。
ACID
ACID的全称是原子性、一致性、隔离性和持久性,这其实是一组需求或属性:如果这四个方面都得到遵守,就能在处理过程中确保数据库事务的数据完整性。虽然ACID问世已有一段时日,但是事务数据量的急剧增长把更多的注意力投向在处理大数据时需要满足ACID的规定。
大数据三要素
如今的IT系统在生成数量、速度和种类都很"庞大"的数据。
数量:IDC公司估计,今年全球信息总量将达到2.7泽字节(这相当于27亿太字节),而且每两年就翻一番。
速度:让IT管理人员们头痛的不仅仅是数据数量,还有数据从金融系统、零售系统、网站、传感器、无线射频识别(RFID)芯片以及Facebook和推特等社交网络源源而来的速度越来越快。
种类:如果回到5年前或可能10年前,IT人员处理的主要是字母数字数据,它们很容易存储在关系数据库中整齐排列的行和列中。现在不再是这样了。如今,推特和Facebook上的帖子、各种文档及网页内容等非结构化数据都是大数据组合的一部分。
列式(或列型)数据库
一些新一代数据库(如开源Cassandra和惠普的Vertica数据库)被设计成了按列存储数据,而不是像传统的SQL数据库那样按行存储数据。这种设计提供了更快的磁盘访问速度,提高了处理大数据时的性能。对数据密集型业务分析应用系统而言,列式数据库尤其受到欢迎。
数据仓库
数据仓库这个概念存在至今已有大概25年了,具体指将数据从多个操作IT系统复制到面向业务分析应用系统的辅助离线数据库
但是随着数据量急剧增长,数据仓库系统正在迅速改变。它们需要存储更多的数据以及更多种类的数据,因而数据仓库管理成为一大难题。10年或20年前,数据可能每周或每月复制到数据仓库系统中;而如今,数据仓库的更新要频繁得多,有的甚至实时更新。
ETL
将数据从一个数据库(比如支持银行应用事务处理系统的数据库)转移到另一个数据库(比如用于业务分析的数据仓库系统)时,就要用到提取、转换和加载(ETL)软件。数据从一个数据库传送到另一个数据库时,常常需要对数据进行重新格式化和清理操作。
由于数据量急剧增长,数据处理速度大大加快,对ETL工具的性能要求也大大提高了。
Flume
Flume是属于Apache Hadoop大家族(其他技术包括HBase、Hive、Oozie、Pig和Whirr)的一项技术,这种框架用于为Hadoop填充数据。该技术使用散布于应用服务器、Web服务器、移动设备及其他系统上的软件代理,收集数据,并将数据传送到Hadoop系统。
比如说,公司可以使用在Web服务器上运行的Apache Flume,收集来自推特帖子的数据,以便分析。
地理空间分析
推动大数据潮流的一个趋势是,由如今的IT系统生成和收集的地理空间数据越来越多。常言道,一幅图片的信息量抵得上1000个单词;所以难怪越来越多的地图、图表、照片及其他基于地理位置的内容是导致如今大数据呈爆炸式增长的主要动因。
地理空间分析是一种特殊形式的数据可视化(参阅下面的"可视化"条目),在地理地图上覆盖数据,以帮助用户更清楚地理解大数据分析的结果。
Hadoop
Hadoop是一种开源平台,用于开发分布式、数据密集型的应用程序。它由Apache软件基金会控制。
Hadoop的发明者是雅虎公司的开发者道格o卡廷(Doug Cutting),他在谷歌实验室的MapReduce概念这个基础上开发出了Hadoop,以他儿子的玩具象命名。
另外,HBase是一种非关系数据库,它是作为Hadoop项目的一部分开发而成的。Hadoop分布式文件系统(HDFS)是Hadoop的一个关键组成部分。Hive则是建立在Hadoop基础上的数据仓库系统。
内存中数据库
计算机在处理事务或执行查询时,一般从磁盘驱动器获取数据。但是当IT系统处理大数据时,这个过程可能实在太慢。
内存中数据库系统利用计算机的主内存来存储经常使用的数据,因而大大缩短了处理时间。内存中数据库产品包括SAP HANA和甲骨文Times Ten内存中数据库。
Java
Java是一种编程语言,由现隶属甲骨文公司的Sun开发,于1995年发布。Hadoop和其他许多大数据技术都是使用Java开发而成的,它仍是大数据领域一种主要的开发技术。
Kafka
Kafka是一种高吞吐量的分布式消息传送系统,最初是在LinkedIn开发而成,用于管理该服务网站的活动流(关于网站使用情况的数据)和操作数据处理流水线(关于服务器组件的性能)。
Kafka在处理大量流式数据时很有效,而流式数据是许多大数据计算环境的一个关键问题。由推特开发的Storm是另一种大行其道的流处理技术。
Apache软件基金会已将Kafka列为一个开源项目。所以,别以为这是有缺陷的软件。
延迟时间
延迟时间是指数据从一个点传送到另一个点过程中的延迟,或者是某个系统(如应用程序)响应另一个系统的延迟数量。
虽然延迟时间不是什么新术语,但是随着数据量不断增长,IT系统竭力跟上步伐,如今你更常听到这个术语。简单地说,"低延迟"是好事,"高延迟"是坏事。
映射/化简
映射/化简(Map/Reduce)这种方法是指把一个复杂的问题分解成多个较小的部分,然后将它们分发到多台计算机上,最后把它们重新组装成一个答案。
谷歌的搜索系统用到了映射/化简概念,这家公司有一个品牌名为MapReduce的框架。
谷歌在2004年发布的一份白皮书描述了它使用映射/化简的情况。Hadoop之父道格o卡廷充分认识到了其潜力,开发出了同样借用映射/化简概念的第一个版本的Hadoop。
NoSQL数据库
大多数主流的数据库(如甲骨文数据库和微软SQL Server)基于关系型体系结构,使用结构化查询语言(SQL)用于开发和数据管理。
但是名为"NoSQL"(有些人现在称NoSQL表示"不是只有SQL")的新一代数据库系统基于支持者们认为更适合处理大数据的体系结构。
一些NoSQL数据库是为提高可扩展性和灵活性设计的,另一些NoSQL数据库在处理文档及其他非结构化数据方面比较有效。典型的NoSQL数据库包括Hadoop/HBase、Cassandra、MongoDB和CouchDB,而甲骨文等一些知名开发商已推出了各自的NoSQL产品。
Oozie
Apache Oozie是一种开源工作流引擎,用于帮助管理面向Hadoop的处理工作。使用Oozie,一系列工作可以用多种语言(如Pig和MapReduce)来加以定义,然后彼此关联起来。比如说,一旦从操作应用程序收集数据的作业已完成,程序员就可以启动数据分析查询任务。
Pig
Pig是Apache软件基金会的另一个项目,这个平台用于分析庞大的数据集。就其本质而言,Pig是一种编程语言,可用于开发在Hadoop上运行的并行计算查询。
定量数据分析
定量数据分析是指使用复杂的数学或统计模型,解释金融和商业行为,或者甚至预测未来的行为。
由于如今收集的数据量急剧增加,定量数据分析已变得更加复杂。但是如果公司知道如何利用海量数据,获得更好的可视性,深入了解公司业务,并且洞察市场发展趋势,那么更多的数据也有望在数据分析方面带来更多的机会。
一个问题是,拥有这种分析技能的人才严重匮乏。知名咨询公司麦肯锡表示,光美国就需要150万名拥有大数据分析技能的分析员和管理员。
关系数据库
关系数据库管理系统(RDBM)是如今使用最广泛的一种数据库,包括IBM的DB2、微软的SQL Server和甲骨文数据库。从银行应用系统、零售店的销售点系统到库存管理应用软件,大多数的企业事务处理系统都在RDBM上运行。
但有些人认为,关系数据库可能跟不上如今数据量和种类都呈爆炸式增长的形势。比如说,RDBM当初在设计时着眼于处理字母数字数据,处理非结构化数据时不是同样有效。
分片
随着数据库变得越来越庞大,处理起来也变得越来越困难。分片(sharding)是一种数据库分区技术,把数据库分成了更小、更容易管理的部分。具体来说,数据库被横向分区,以便单独管理数据库表中的不同行。
分片方法让庞大数据库的片段可以分布在多台服务器上,从而提高数据库的整体运行速度和性能。
另外,Sqoop是一种开源工具,用于将来自非Hadoop来源(如关系数据库)的数据转移到Hadoop环境。
文本分析
导致大数据问题的因素之一是,从推特和Facebook等社交媒体网站、外部新闻源,甚至公司内部收集而来以便分析的文本数量越来越多。由于文本是非结构化数据(不像通常存储在关系数据库中的结构化数据),主流的业务分析工具面对文本时常常束手无策。
文本分析采用了一系列方法(关键字搜索、统计分析法和语言研究法等),从基于文本的数据中获得洞察力。
非结构化数据
就在不久前,大部分数据还是结构化数据,这种字母数字信息(如来自销售交易的财务数据)很容易存储在关系数据库中,并由商业智能工具来分析。
但是如今共计2.7泽字节的存储数据中很大一部分是非结构化数据,比如基于文本的文档、推特消息、发布在Flickr上的照片、发布在YouTube上的视频,等等。(颇有意思的是,每分钟有长达35个小时的视频内容上传到YouTube。)处理、存储和分析所有这些凌乱的非结构化数据常常是如今的IT系统面临的难题。
可视化
随着数据量的增长,人们使用静态的图表和图形来理解数据越来越困难了。这就导致开发新一代的数据可视化和分析工具,能够以新的方式呈现数据,从而帮助人们理解海量信息。
这些工具包括:标以色码的热图,三维图形,显示一段时间内变化的动画可视化,以及在地理地图上覆盖数据的地理空间呈现。今天的先进数据可视化工具还具有更强的互动性,比如允许用户放大某个数据子集,进行更仔细的检查。
Whirr
Apache Whirr是一组Java类库,用于运行大数据云服务。更确切地说,它可以加快在亚马逊弹性计算云(EC2)和Rackspace等虚拟基础设施上开发Hadoop集群的过程。
XML
可扩展标记语言(XML)用来传输和存储数据(别与HTML混为一谈,后者用来显示数据)。借助XML,程序员们就可以创建通用的数据格式,并通过互联网共享信息和格式。
由于XML文档可能非常庞大、复杂,它们往往被认为导致IT部门面临大数据挑战。
尧字节
尧字节(yottabyte)是一种数据存储度量指标,相当于1000泽字节。据知名调研机构IDC公司估计,今年全球存储的数据总量预计将达到2.7泽字节,比2011年增长48%。所以,我们离达到尧字节这个大关还有很长一段路,不过从目前大数据的增长速度来看,那一天的到来可能比我们想象的要快。
顺便说一下,1泽字节相当于1021字节的数据。它相当于1000艾字节(EB)、100万拍字节(PB)和10亿太字节(TB)。
ZooKeeper
ZooKeeper是由Apache软件基金会创建的一项服务,旨在帮助Hadoop用户管理和协调跨分布式网络的Hadoop节点。
ZooKeeper与HBase紧密集成,而HBase是与Hadoop有关的数据库。ZooKeeper是一项集中式服务,用于维护配置信息、命名服务、分布式同步及其他群组服务。IT管理人员用它来实现可靠的消息传递机制、同步流程执行及实施冗余服务。