日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

索引表加載策略

索引表加載策略配置

索引表的加載策略配置由多個索引文件的加載策略組成,每個策略描述了一組索引文件的具體加載方式。索引表在加載時,針對每個索引文件,從上到下依次匹配策略規則,優先使用第一個匹配的策略加載索引文件。

配置示例

{
    "load_config":[
        {
            "file_patterns":[
                "_ATTRIBUTE_",
                "/index/title/.*",
                "/index/body/dictionary"
            ],
            "load_strategy":"mmap",
            "lifecycle":"hot",
            "load_strategy_param":{
                "lock":true,
                "partial_lock":true,
                "advise_random":false,
                "slice":4194304,
                "interval":2
            },
            "remote" : false,
            "deploy" : true,
            "warmup_strategy":"sequential"
        },
        {
            "file_patterns":[
                "_SUMMARY_"
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false,
                "direct_io":true,
                "cache_size":4096
            },
            "remote" : true,
            "deploy" : false
        },
        {
            "warmup_strategy":"none",
            "file_patterns":[
                ".*"
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false
            }
        }
    ]
}

參數詳解

  • file_patterns:索引文件匹配模式,使用正則表達式。索引表的目錄結構請參考索引文件目錄結構,匹配模式是相對于segment目錄的文件名的正則表示,比如要對倒排索引title設置獨立的加載策略,title索引的匹配模式正則表示為"/index/title/.*"(索引名為title,所以在index目錄中存在title索引目錄,對其下的所有文件都需要匹配使用.*表示)。系統提供了一些內置的宏定義來簡化索引文件匹配的設置:

    • _ATTRIBUTE_:等價于"/attribute/.*",表示所有的正排索引。

    • _INDEX_:等價于"/index/.*",表示所有的倒排索引。

    • _SUMMARY_:等價于"/summary/",表示所有的摘要索引。

  • load_strategy:加載策略,主要有mmap、cache兩種模式。

  • load_strategy_param:加載策略參數。

    • mmap加載策略參數

      • lock:mmap是否采用lock模式,默認為false。lock模式會將索引加載到內存不會換出,查詢性能較好,但是內存開銷較大。

      • partial_lock:是否對倒排索引采用部分lock,默認為false。部分lock會將倒排的一級詞典lock進內存,二級詞典不lock,以節省內存。

      • advise_random:mmap時會減少對磁盤的預讀行為,默認為false。對于索引過大,并不能全部load進內存的場景,查詢時磁盤IO往往會成為性能瓶頸,配置 true 該項后能顯著減少對磁盤的讀取量,提升查詢性能。

      • slice和interval:控制預熱加載索引的速度,每讀取 slice 大小就sleep interval 大小的時間,slice單位:B,interval 單位:ms。slice 和 interval 必須同時配置。slice默認 4MB,interval 默認 0(不限速)。

    • cache加載策略參數

      • direct_io: 是否使用DirectIO方式讀取文件,默認 false。DirectIO模式讀取ssd盤中的數據,性能更好。

      • global_cache: 是否使用全局的BlockCache,默認 false。全局的BlockCache的大小是通過環境變量進行設置,目前還未開放,建議設置為false。

      • cache_size: global_cache為false時有效,配置BlockCache大小,單位:MB,默認 1MB。

      • block_size: 配置 Block 大小,單位:B,默認 4096B。

  • remote:與file_patterns匹配的索引文件是否從遠端分布式存儲系統中讀取,true/false。只有need_read_remote_index設置為true時,remote才會起作用,need_read_remote_index設置為false時,remote會強制設置為false。

  • deploy:與file_patterns匹配的索引文件是否需要分發到本地,true/false。只有need_deploy_index設置為true時,deploy才會起作用,need_deploy_index設置為false時,deploy會強制設置為false。

  • warmup_strategy:預熱策略,目前僅對 mmap 加載策略有效,默認為none(不預熱)。如果需要預熱請設置為sequential,表示順序讀取預熱。

使用示例

mmap策略示例

{
    "load_config":[
        {
            "file_patterns":[
                "/attribute/price/.*",  #屬性字段price
                "/index/title/.*", #倒排索引title
                "/index/body/dictionary", #倒排索引body的詞典
                "/index/vector/aitheta.*" #向量索引vector
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":true,  #mmap lock模式
                "partial_lock":true, #部分lock,倒排索引詞典只lock一級詞典
                "slice":4194304, #預熱時,一次讀取4M,每次間隔2ms
                "interval":2
            },
            "remote" : false, #不訪問遠端
            "deploy" : true, #索引下發到本地
            "warmup_strategy":"sequential" #順序預熱
        },
        {
            "file_patterns":[
                "/attribute/tags", #屬性字段tag
                "/index/倒排索引description/.*"  #倒排索引description
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false,
            },
            "remote" : false,
            "deploy" : true,
            "warmup_strategy":"none"
        }
    ]
}

cache策略示例

{
    "load_config":[
        {
            "file_patterns":[
                "_ATTRIBUTE_" #所有屬性字段
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false, #不使用全局cache
                "direct_io":true, #DirectIO方式讀取文件
                "cache_size":20480 #cache大小為20G
            },
            "remote" : false, #不訪問遠端
            "deploy" : true #索引下發到本地
        },
        {
            "file_patterns":[
                "/summary/data"  #摘要索引的data文件
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false,
                "direct_io":true,
                "cache_size":4096
            },
            "remote" : false,
            "deploy" : true
        },
        {
            "warmup_strategy":"none",
            "file_patterns":[
                ".*"
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false
            }
        }
    ]
}

存儲計算分離

#存儲計算分離需要設置need_read_remote_index為true
{
    "load_config":[
        {
            "file_patterns":[
                "/index/title/.*" #倒排索引title
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":true,  #mmap lock模式
                "partial_lock":true, #部分lock,倒排索引詞典只lock一級詞典
                "slice":4194304, #預熱時,一次讀取4M,每次間隔2ms
                "interval":2
            },
            "remote" : false, #不訪問遠端
            "deploy" : true, #索引下發到本地
            "warmup_strategy":"sequential" #順序預熱
        },
        {
            "file_patterns":[
                "_ATTRIBUTE_" #所有屬性字段
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false, #不使用全局cache
                "direct_io":true, #DirectIO方式讀取文件
                "cache_size":20480 #cache大小為20G
            },
            "remote" : true, #訪問遠端存儲
            "deploy" : false #索引不用下發到本地
        },
        {
            "file_patterns":[
                "/summary/data"  #摘要索引的data文件
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false,
                "direct_io":true,
                "cache_size":4096
            },
            "remote" : true, #訪問遠端存儲
            "deploy" : false #索引不用下發到本地
        },
        {
            "warmup_strategy":"none",
            "file_patterns":[
                ".*"
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false
            }
        }
    ]
}

索引文件目錄結構

  |-- generation_0
      |-- partition_0_65535
          |-- index_format_version
          |-- index_partition_meta
          |-- schema.json
          |-- segment_0
              |-- attribute
                  `--attribute_name
                     `--data   
              |-- deletionmap
              |-- deploy_index
              |-- index
                 `--index_name
                    |-- bitmap_dictionary
                    |-- bitmap_posting
                    |-- dictionary
                    `-- posting
                  `--vector_index_name
                    |-- aitheta.index
                  	|-- aitheta.index.addr
              |-- summary
                	|-- data
                	|-- offset
              `-- segment_info
          |-- adaptive_bitmap__meta
              |--deploy_index
              |--dictionary_name
          |-- truncate_meta
              |-- deploy_index
              `-- truncate_meta_file 
          `-- version.0

名稱

說明

generation

generation_x是引擎區分不同版本全量索引的標識。

partition

partition是searcher加載索引的基本單位。如果一個partition中數據過多,會導致searcher性能降低。線上數據一般通過劃分多個partition的方式來保證每個searcher的檢索效率。

segment

segment是索引組成的基本單位。segment中包含了文檔的倒排和正排結構。index builder每次dump都會生成一個segment。多個segment可以通過merge策略進行合并。一個partition中可用的segment在version文件中指明。

index

倒排索引的基本單位。

attribute

正排索引的基本單位。

deletionmap

刪除的doc記錄。

index_format_version

索引的版本信息。用于檢查索引文件是否符合binary要求。

index_partition_meta

存儲了全局排序的信息。包括排序字段和升降序。

schema.json

索引配置文件。主要記錄fields,index, attribute 和summary等信息。引擎通過該文件來加載索引。

version.0

version文件。主要記錄當前partition中引擎需要加載的segment和最新doc的時間戳。在實時build中,引擎會根據增量version的時間戳過濾舊的原始文檔。

segment_info

segment信息摘要。記錄了當前segment中文檔數目,當前segment是否merge過,locator信息和最新doc時間戳信息。

dictionary

倒排索引的詞典

posting

倒排索引的倒排鏈文件

bitmap_dictionary

如果開啟了bitmap高頻詞功能,該文件表示bitmap高頻詞詞典。

bitmap_posting

如果開啟了bitmap高頻詞功能,該文件表示bitmap高頻詞對應的倒排鏈。

aitheta.index

向量索引文件

aitheta.index.addr

向量索引meta信息