public class CompositeKeyOptimizer extends Object
用于全大小写敏感数据库(Couchbase)的单次 Map 查找优化。
核心思想:
len1#seg1|len2#seg2|len3#seg3|objectType
"3#db1|6#schema|5#table|dotTable"
适用条件(必须全部满足):
性能特性:
使用示例:
CompositeKeyOptimizer optimizer = new CompositeKeyOptimizer(EDbVendor.dbvcouchbase);
// 检查是否可以使用复合键
if (optimizer.canUseCompositeKey("db.schema.table")) {
// 构建复合键
String key = optimizer.buildCompositeKey("db.schema.table", ESQLDataObjectType.dotTable);
// 结果: "2#db|6#schema|5#table|dotTable"
// 存储到单一 Map
compositeKeyMap.put(key, tableObject);
}
| Constructor and Description |
|---|
CompositeKeyOptimizer(EDbVendor vendor)
构造复合键优化器
|
| Modifier and Type | Method and Description |
|---|---|
String |
buildCompositeKey(String qualifiedName,
ESQLDataObjectType objectType)
构建复合键(使用长度前缀编码避免冲突)
|
boolean |
canUseCompositeKey(String qualifiedName)
判断是否可以使用复合键快速路径
|
void |
clear()
清空索引
|
TSQLSchemaObject |
get(String qualifiedName,
ESQLDataObjectType objectType)
从复合键索引查找对象
|
String |
getStats()
获取统计信息(用于性能分析)
|
EDbVendor |
getVendor()
获取厂商
|
boolean |
isEnabled()
获取是否启用
|
void |
put(String qualifiedName,
ESQLDataObjectType objectType,
TSQLSchemaObject object)
添加对象到复合键索引
|
TSQLSchemaObject |
remove(String qualifiedName,
ESQLDataObjectType objectType)
移除对象
|
int |
size()
获取索引大小
|
public CompositeKeyOptimizer(EDbVendor vendor)
vendor - 数据库厂商public boolean canUseCompositeKey(String qualifiedName)
条件(必须全部满足):
qualifiedName - 完整限定名(如 "db.schema.table")public String buildCompositeKey(String qualifiedName, ESQLDataObjectType objectType)
格式: len1#segment1|len2#segment2|len3#segment3|objectType
例如: "3#db1|6#schema|5#table|dotTable"
优势:避免分隔符冲突(标识符可能包含 '.' 或 '|')
qualifiedName - 完整限定名(如 "db.schema.table")objectType - 对象类型public void put(String qualifiedName, ESQLDataObjectType objectType, TSQLSchemaObject object)
qualifiedName - 完整限定名objectType - 对象类型object - schema 对象public TSQLSchemaObject get(String qualifiedName, ESQLDataObjectType objectType)
qualifiedName - 完整限定名objectType - 对象类型public TSQLSchemaObject remove(String qualifiedName, ESQLDataObjectType objectType)
qualifiedName - 完整限定名objectType - 对象类型public int size()
public void clear()
public boolean isEnabled()