当前位置: 首页 > 后端技术 > Java

弹力叠那些东西【8】

时间:2023-04-01 17:08:32 Java

数据建模对现实世界进行抽象描述的工具和方法,以抽象实体的形式描述业务规则以及实体之间的联系,从而实现对现实世界的映射。概念模型确定了系统的核心需求和范围边界,设计实体间关系的逻辑模型进一步梳理业务需求,确定各实体的属性关系约束规则。物理模型结合具体的数据库产品,满足业务读写性能等需求前提下确定最终定义。mysqlmongodbelasticsearch第三范式es中的数据建模是基于lucene和倒排索引实现的存储系统。它不遵循关系数据库的范式约定。映射相关字段enabletrue|false只存储,不搜索和聚合分析索引true|false是否建立倒排索引index_optionsdocs|freqs|positions|offsets倒排索引规范存储哪些信息true|false是否存储归一化参数,如果字段只用于过滤和聚合分析可以关闭doc_valuestrue|false是否开启doc_values用于排序和聚合分析field_datafalse|true是否为文本类型开启fielddata实现排序和聚合分析storefalse|true是否存储字段coercetrue|false是否开启自动数据类型转换功能,如字符串转数字,浮点数转整数multifieldsmultifields灵活使用multifields解决业务多样性需求dynamictrue|false|strictcontrolmappingautomaticupdatedate_detectiontrue|false是否自动识别日期类型,什么类型string类型需要分词设置为text或者不设置为keyword。出于性能考虑,枚举类型设置为关键字类型。即使数据是整数值类型,也尽量选择最接近的类型。比如当byte可以表示所有值的时候,选择byte而不是long其他类型,比如布尔日期,地理位置等等,根本不需要搜索吗?完全不需要搜索Sorting聚合分析enabled设置为false不需要搜索的字段设置为false需要搜索的字段可以通过以下设置进行存储Granularindex_options结合需要设置norms即可当不需要规范化数据时关闭。reindex指的是重建所有数据的过程一般发生在以下几种情况:映射设置改变,如字段类型改变,tokenizer字典更新等索引设置改变,如分片数改变等迁移数据es提供线程api完成工作indexesrebuildsonotherindexsreindex任务数据重建时间受源索引文档的规模影响。规模越大,花费的时间就越多。这时候需要设置url参数wait_for_completion为false,进行异步执行。ES使用task来描述任务。ES提供taskapi查看任务执行进度。与相关数据映射的版本管理包含在代码中或由文件专门管理。添加评论,添加到git等版本管理仓库,方便审核。对于每个添加的元数据字段,在其中维护一些与文档相关的元数据,以方便数据管理。防止字段过多字段过多导致集群状态中存储的映射信息难以维护字段过多导致映射过大最终变慢解决字段过多问题的方法并不完善。keyvalue方式虽然通过这种方式大大减少了字段数量,但是也有缺点。查询语句复杂度飙升,有些功能无法实现。比如聚合分析,不利于kibana分析。字段过多的原因是缺乏高质量的数据建模。比如dynamic设置为true,考虑拆分多个索引解决问题