根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。
用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表
在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号
与MyCat的类似分片算法对比
中间件
DBLE
MyCat
分片算法种类 enum 分区算法 分片枚举
两种中间件的枚举分片算法使用上无差别。
开发注意点
【分片索引】1. 整型数字(可以为负数)或字符串((不含=和换行符)
【分片索引】2. 枚举值之间不能重复
Male=0Male=1或者
123=1123=2会导致分片策略加载出错
【分片索引】3. 不同枚举值可以映射到同一个分片上
Mr=0Mrs=1Miss=1Ms=1123=0运维注意点
【扩容】1. 增加枚举值无需数据再平衡
【扩容】2. 增加一个枚举值的分片数量数时,需要对局部数据进行迁移
【缩容】1. 减少枚举值需要数据再平衡
【缩容】2. 减少一个枚举值的分片数量数时,需要对局部数据进行迁移
配置注意点
【配置项】1. 在 rule.xml 中,可配置项为 <property name="defaultNode"> 、<property name="mapFile"> 和 <property name="type">
【配置项】2. 在 rule.xml 中配置 <property name="defaultNode"> 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会报错;若需要配置,必须为非负整数,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会路由至这个值的 MySQL 分片
【配置项】3. 在 rule.xml 中配置 <property name="mapFile"> 标签,范围映射文件的路径:若在映射文件在 DBLE_HOME/conf 或其中,则可以使用相对路径的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 时,配置值就可以简写为 map/table_map.txt;映射文件在 DBLE_HOME/conf 目录以外时,需要使用绝对路径,但这种做法需要考虑用户权限等问题,因此不建议把映射文件放在 DBLE_HOME/conf 外。
【配置项】4. 编辑 mapFile 所配置的文件
记录格式为:<枚举值>=<分片编号>
枚举值可以是整型数字,或任意字符(除了=和换行符),分片编号必须是非负整型数字,记录之间以换行分隔,一行仅能有一条记录,枚举值不能够是“DEFAULT_NODE”这个字符串,允许以“//”和“#”在行首来注释该行
【配置项】5. 在 rule.xml 中配置 <property name="type"> 标签;type 必须为整型;取值为 0 时,mapFile 的<枚举值>必须为整型;取值为非 0 时,mapFile 的<枚举值>可以是任意字符(除了=和换行符)
为什么MySQL不推荐使用枚举mysql不推荐使用枚举
在MySQL中,枚举(ENUM)是一种数据类型,它允许用户将一个固定的集合的值分配给某一列。虽然枚举在一定程度上可以简化数据库的设计,但是MySQL并不推荐使用枚举,下面我们来探究一下为什么。1.枚举值的不可扩展性 枚举的定义是固定的,一旦定义之后,就无法再增加或删除枚举值。当需要增加或删除枚举值时...
学习MySQL ENUM数据类型
MySQL中的ENUM数据类型是一种特殊的字符串对象,它在有限且固定的值范围内提供选择。它特别适合于值选择范围明确且不易变更的场景。在使用ENUM类型时,必须明确指定所有可能的值。例如,声明一个名为your_column的列,它的可能值包括'value1', 'value2', 'value3'等,列的值只能是这些预定义选项之一。
MySQL中如何使用enum类型mysql中enum类型
什么是ENUM类型?ENUM类型是MySQL中提供的一种数据类型,用于存储 在一组预定义的值中的单个值 。这些值在定义ENUM列时指定,并且可以包含单个值或多个值。例如,以下代码展示了一个在ENUM列中定义了两个值的表:CREATE TABLE `enum_table` (`id` int(11) NOT NULL AUTO_INCREMENT,`status` enum(...
MySQL中如何使用enum类型mysql中enum使用
MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种Web应用开发中。其中,enum类型是一种常用的数据类型,表示一组固定的值集合。在MySQL中使用enum类型可以给数据列限定一些特定的取值范围,有利于数据的规范化和管理。1. 创建表格 要使用enum类型,首先需要创建一个包含enum列的数据库表格。下面是...
mysql的字段类型enum是哪个单词的缩写?
enumerate 枚举类型
可以说一下MYSQL中Enum字段的作用和具体用法吗
用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表 在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号 与MyCat的类似分片算法对比 中间件 DBLE MyCat 分片算法种类 ...
MySQL中添加新ENUM字段mysql中enum新增
在MySQL数据库中,ENUM是一种非常常用的数据类型,可以用来限制数据集。如果需要在现有的表中添加新的ENUM字段,需要执行以下步骤:1. 确定数据集 在决定添加ENUM字段之前,需要确定所需数据集,以便将其作为ENUM的选项。例如,如果需要添加一个新的字段”gender”,则可能需要将其限制为...
MySQL数据类型测试:枚举类型ENUM测试数据总结(第六节)
枚举类型ENUM 1. 数据库表mysqlops_enum结构 执行创建SQL语句以建立表,执行查询SQL语句以确认表结构信息。对比创建与查询结果,表结构未发生任何默认修改。2. 写入不同类型的测试数据 分别测试符合枚举类型定义的记录值、允许NULL记录值、允许NULL值、空白值处理、未指定默认值时的默认值使用情况。3. ...
sql enum类型
enum 是枚举类型, sex 性别字段 加约束条件,默认是 ‘男’,插入数据时,sex字段只可以是'男'或'女',另外,MySQL 不支持check的,虽然语法上不会报错是,分析建表语句的时候会被忽略.
MySQL枚举类型详解mysql中enum
在MySQL中,枚举类型是一种特殊的数据类型,它允许您定义一个列只能取几种可能值中的一种,这些值必须是常量。使用枚举类型可以帮助您在存储数据时限制可选项的范围并增强数据完整性。下面是一些MySQL中枚举类型的使用示例:创建表格并定义一个名为color的枚举列:CREATE TABLE fruits (id INT AUTO_...