ip_trie

简介: ip_trie

虽然同为复合型key的字典,但ip_trie字典却较为特殊,因为它只能指定单个String类型的字段,用于指代IP前缀。ip_trie字典的数据在内存中使用trie树结构保存,且专门用于IP前缀查询的场景,例如通过IP前缀查询对应的ASN信息。完整示例如下所示:


/etc/clickhouse-server 目录下新建 test_ip_trie_dictionary.xml 文件,写入如下内容:

<?xml version="1.0"?>
<dictionaries>
  <dictionary>
    <name>test_ip_trie_dict</name>
    <source>
      <!-- 准备好的测试数据 -->
      <file>
        <path>/var/lib/clickhouse/dictionaries_lib/asn.csv</path>
        <format>CSV</format>
      </file>
    </source>
    <layout>
      <ip_trie />
    </layout>
    <!-- 与测试数据的结构对应 -->
    <structure>
      <!-- 虽然是复合类型,但是只能设置单个String类型的字段 -->
      <key>
        <attribute>
          <name>prefix</name>
          <type>String</type>
        </attribute>
      </key>
      <attribute>
        <name>asn</name>
        <type>String</type>
        <null_value></null_value>
      </attribute>
      <attribute>
        <name>country</name>
        <type>String</type>
        <null_value></null_value>
      </attribute>
    </structure>
    <lifetime>
      <min>300</min>
      <max>360</max>
    </lifetime>
  </dictionary>
</dictionaries>点击复制复制失败已复制


保存文件,再次查询系统中的所有字典:

$ SELECT name, type, key, attribute.names, attribute.types FROM system.dictionaries;
┌─name─────────────────────────┬─type─┬─key──────────────┬─attribute.names───┬─attribute.types─────┐
│ test_ip_trie_dict            │      │ (String)         │ ['asn','country'] │ ['String','String'] │
│ test_complex_cache_dict      │      │ (UInt64, String) │ ['name']          │ ['String']          │
│ test_hashed_dict             │      │ UInt64           │ ['code','name']   │ ['String','String'] │
│ test_complex_key_hashed_dict │      │ (UInt64, String) │ ['name']          │ ['String']          │
│ test_range_hashed_dict       │      │ UInt64           │ ['price']         │ ['Float32']         │
│ test_flat_dict               │      │ UInt64           │ ['code','name']   │ ['String','String'] │
│ test_cache_dict              │      │ UInt64           │ ['code','name']   │ ['String','String'] │
└──────────────────────────────┴──────┴──────────────────┴───────────────
目录
相关文章
|
5月前
|
存储 算法
Trie字典树
Trie字典树
48 1
|
8月前
|
搜索推荐
前缀树Trie
前缀树Trie
|
8月前
|
NoSQL 容器 消息中间件
字典树 (Trie)
字典树 (Trie)
|
8月前
|
存储 C++
leetcode-208:实现 Trie (前缀树/字典树)
leetcode-208:实现 Trie (前缀树/字典树)
57 0
|
存储 Python
字典树(Trie,
字典树(Trie,也称为前缀树或单词查找树)是一种用于存储字符串的树形数据结构。它是一种特殊的多叉树,其中每个节点都包含一个字符和一个指向其子节点的指针数组。字典树的主要作用是用于快速查找字符串和处理字符串的前缀。
70 6
|
搜索推荐
字典树 trie
字典树 trie
67 0
|
Web App开发 Java C++
字符串-Trie
字符串-Trie
58 0
|
算法
Trie(二)
AcWing 835. Trie字符串统计
147 0
Trie(二)
|
存储 算法
Trie(一)
文章目录 前言 一、Trie 二、例题,代码 1.AcWing 835. Trie字符串统计 关于本题: AC代码 2.AcWing 143. 最大异或对 关于本题 AC代码 三、时间复杂度
118 0
Trie(一)

热门文章

最新文章