4 追逐方向的风

尚未进行身份认证

克己养晦

等级
博文 174
排名 3w+

Mysql递归查询

SELECTIFNULL(CONCAT('[',GROUP_CONCAT(CONCAT('{"catId":"',t.id,'","catName":"',t.name_ch,'","catLevel":',t.level,'}')),']'),"[]")AScompanyCategoriesFROM(SELECTt2.id,t2.name_en,t2.name_ch,t2

2018-05-11 14:49:36

一致性Hash算法

原文:https://www.cnblogs.com/lpfuture/p/5796398.html一致性Hash算法背景  一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hotspot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。  但...

2018-04-11 14:53:42

伪共享(FalseSharing)

原文地址:http://ifeve.com/false-sharing/缓存系统中是以缓存行(cacheline)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪...

2018-03-31 14:59:38

Redis提供的持久化机制(RDB和AOF)

转自:https://www.cnblogs.com/xingzc/p/5988080.htmlRedis提供的持久化机制   Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能、持久存储、适应高并发应用场景等优势。它虽然起步较晚,但发展却十分迅速。 近日,Redis的作者在博客中写到,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于...

2018-03-29 18:13:05

段合并

由于自动刷新流程每秒会创建一个新的段 ,这样会导致短时间内的段数量暴增。而段数目太多会带来较大的麻烦。每一个段都会消耗文件句柄、内存和cpu运行周期。更重要的是,每个搜索请求都必须轮流检查每个段;所以段越多,搜索也就越慢。Elasticsearch通过在后台进行段合并来解决这个问题。小的段被合并到大的段,然后这些大的段再被合并到更大的段。段合并的时候会将那些旧的已删除文档 从文件系统中清除。 被...

2018-03-22 15:57:13

持久化变更

如果没有用 fsync 把数据从文件系统缓存刷(flush)到硬盘,我们不能保证数据在断电甚至是程序正常退出之后依然存在。为了保证Elasticsearch的可靠性,需要确保数据变化被持久化到磁盘。在 动态更新索引,我们说一次完整的提交会将段刷到磁盘,并写入一个包含所有段列表的提交点。Elasticsearch在启动或重新打开一个索引的过程中使用这个提交点来判断哪些段隶属于当前分片。即使通过...

2018-03-22 15:40:39

近实时搜索

随着按段(per-segment)搜索的发展, 一个新的文档从索引到可被搜索的延迟显著降低了。新文档在几分钟之内即可被检索,但这样还是不够快。磁盘在这里成为了瓶颈。 提交(Commiting)一个新的段到磁盘需要一个 fsync 来确保段被物理性地写入磁盘,这样在断电的时候就不会丢失数据。但是 fsync 操作代价很大;如果每次索引一个文档都去执行一次的话会造成很大的性能问题。我们需要的是一个...

2018-03-22 15:07:18

动态更新索引

下一个需要被解决的问题是怎样在保留不变性的前提下实现倒排索引的更新? 答案是:用更多的索引。通过增加新的补充索引来反映新近的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询到--从最早的开始--查询完后再对结果进行合并。Elasticsearch基于Lucene,这个java库引入了 按段搜索 的概念。 每一 段 本身都是一个倒排索引,但 索引 在Lucene中除表...

2018-03-22 14:48:14

使文本可被搜索

必须解决的第一个挑战是如何 使文本可被搜索。传统的数据库每个字段存储单个值,但这对全文检索并不够。文本字段中的每个单词需要被搜索,对数据库意味着需要单个字段有索引多值(这里指单词)的能力。最好的支持 一个字段多个值 需求的数据结构是我们在 倒排索引 章节中介绍过的 倒排索引 。倒排索引包含一个有序列表,列表包含所有文档出现过的不重复个体,或称为 词项 ,对于每一个词项,包含了它所有曾出现过文档...

2018-03-22 14:13:14

分片内部原理

在 集群内的原理,我们介绍了 分片,并将它 描述成最小的 工作单元_。但是究竟什么_是 一个分片,它是如何工作的?在这个章节,我们回答以下问题:为什么搜索是 近 实时的?为什么文档的CRUD(创建-读取-更新-删除)操作是 实时 的?Elasticsearch是怎样保证更新被持久化在断电时也不丢失数据?为什么删除文档不会立刻释放空间?refresh, flush,和 optimi...

2018-03-22 11:06:18

索引别名和零停机

在前面提到的,重建索引的问题是必须更新应用中的索引名称。 索引别名就是用来解决这个问题的!索引 别名 就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,允许我们做下面这些:在运行的集群中可以无缝的从一个索引切换到另一个索引给多个索引分组(例如, last_three_months)给索引的一个子集创建 视图在后面我们会讨论更多...

2018-03-22 11:02:40

重新索引你的数据

尽管可以增加新的类型到索引中,或者增加新的字段到类型中,但是不能添加新的分析器或者对现有的字段做改动。 如果你那么做的话,结果就是那些已经被索引的数据就不正确,搜索也不能正常工作。对现有数据的这类改变最简单的办法就是重新索引:用新的设置创建新的索引并把文档从旧的索引复制到新的索引。字段 _source 的一个优点是在Elasticsearch中已经有整个文档。你不必从源数据中重建索引,而且那样通...

2018-03-22 10:55:11

缺省映射

通常,一个索引中的所有类型共享相同的字段和设置。 _default_ 映射更加方便地指定通用设置,而不是每次创建新类型时都要重复设置。 _default_ 映射是新类型的模板。在设置 _default_ 映射之后创建的所有类型都将应用这些缺省的设置,除非类型在自己的映射中明确覆盖这些设置。例如,我们可以使用 _default_ 映射为所有的类型禁用 _all 字段, 而只在 blog 类型启用:P...

2018-03-22 10:44:52

自定义动态映射

如果你想在运行时增加新的字段,你可能会启用动态映射。 然而,有时候,动态映射 规则 可能不太智能。幸运的是,我们可以通过设置去自定义这些规则,以便更好的适用于你的数据。日期检测当Elasticsearch遇到一个新的字符串字段时,它会检测这个字段是否包含一个可识别的日期,比如 2014-01-01 。 如果它像日期,这个字段就会被作为 date 类型添加。否则,它会被作为 string 类型添...

2018-03-22 09:20:47

动态映射

当Elasticsearch遇到文档中以前 未遇到的字段,它用 dynamicmapping 来确定字段的数据类型并自动把新的字段添加到类型映射。有时这是想要的行为有时又不希望这样。通常没有人知道以后会有什么新字段加到文档,但是又希望这些字段被自动的索引。也许你只想忽略它们。如果Elasticsearch是作为重要的数据存储,可能就会期望遇到新字段就会抛出异常,这样能及时发现问题。幸运的是可...

2018-03-21 17:46:58

根对象

根对象映射的最高一层被称为 根对象 ,它可能包含下面几项:一个 properties 节点,列出了文档中可能包含的每个字段的映射各种元数据字段,它们都以一个下划线开头,例如 _type 、 _id 和 _source设置项,控制如何动态处理新的字段,例如 analyzer 、 dynamic_date_formats 和dynamic_templates其他设置,可以同时应用在根对象和其他 obj...

2018-03-21 17:37:41

类型和映射

类型 在Elasticsearch中表示一类相似的文档。 类型由 名称 —比如 user 或 blogpost —和 映射 组成。映射, 就像数据库中的schema,描述了文档可能具有的字段或 属性 、 每个字段的数据类型—比如 string, integer 或 date —以及Lucene是如何索引和存储这些字段的。类型可以很好的抽象划分相似但不相同的数据。但由于Lucene的处理...

2018-03-21 15:34:13

自定义分析器

虽然Elasticsearch带有一些现成的分析器,然而在分析器上Elasticsearch真正的强大之处在于,你可以通过在一个适合你的特定数据的设置之中组合字符过滤器、分词器、词汇单元过滤器来创建自定义的分析器。在 分析与分析器 我们说过,一个 分析器 就是在一个包里面组合了三种函数的一个包装器, 三种函数按照顺序被执行:字符过滤器字符过滤器 用来 整理 一个尚未被分词的字符串。例如,如果我们的...

2018-03-20 17:27:58

配置分析器

第三个重要的索引设置是 analysis 部分, 用来配置已存在的分析器或针对你的索引创建新的自定义分析器。在 分析与分析器 ,我们介绍了一些内置的 分析器,用于将全文字符串转换为适合搜索的倒排索引。standard 分析器是用于全文字段的默认分析器, 对于大部分西方语系来说是一个不错的选择。 它包括了以下几点:standard 分词器,通过单词边界分割输入的文本。standard 语汇单元过滤器...

2018-03-20 16:53:12

索引设置

你可以通过修改配置来自定义索引行为,详细配置参照 索引模块Elasticsearch提供了优化好的默认配置。除非你理解这些配置的作用并且知道为什么要去修改,否则不要随意修改。下面是两个 最重要的设置:number_of_shards每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。number_of_replicas每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置...

2018-03-20 16:41:00
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!