最高级的红酒,一定要掺上雪碧才好喝。 基于这样的品味,我设计出了一套在经典nosql数据库redis上实现SQL引擎的方法。既然redis号称nosql,而我偏要把SQL加到redis上,于是这个技术方案取名为【YesSql】。
${table}_rowid -> int_value
${table}_${column1} -> map
${rowid1} -> column1 data of row 1
${rowid2} -> column1 data of row 2
${table}_${column2} -> map
${rowid1} -> column2 data of row 1
${rowid2} -> column2 data of row 2
${table}_unique_index_1 -> map
${unique_key_1} -> rowid1
${unique_key_2} -> rowid
${table}_number_index_1 -> zset
$rowid1 -> number1
$rowid2 -> number2
create table my_first_redis_table_1(
column1 number,
column2 string,
column2 number
unique index column2,
number_index column3
)
这部分相对复杂,划分为不同的场景:
解析出表名是第一步的,然后就确定了KEY的前缀。
上面讲update和delete的where部分一笔带过了,具体有这样的一些场景:
例如:
select column1, column2, count(1), sum(column3)
from table
group by column1, column2
可以建立这样的KEY结构:
temp_group_by_1 -> map
${column1_value}_${column2_value} -> rowid
temp_group_by_1_stat1 -> map
$rowid1 -> count_value
temp_group_by_1_stat2 -> map
$rowid1 -> sum_value
不再叙述,猜测不会有那么无聊的人真的希望用上这么一套SQL引擎。