V2EX fuyufjh
 fuyufjh 最近的时间轴更新
fuyufjh

fuyufjh

  Dev
V2EX 第 96093 号会员,加入于 2015-02-06 16:50:28 +08:00
根据 fuyufjh 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
fuyufjh 最近回复了
这俩都是给 IDC 自建用户设计的…… “云数据库”至少也应该是 RDS / Aurora / PolarDB / Neon 这样的线上服务吧
搞艺术的想象力都很丰富吧?但凡认识一个女程序员都不会写下这么小众的文字
2024-06-01 18:44:32 +08:00
回复了 EVJohn 创建的主题 iPhone 看 15/15pro 的价格很心动啊,买 15 还是等 16
16 (非 Pro ) 会上 8GB 内存,比 15 多了 2GB
2024-04-17 10:16:44 +08:00
回复了 jov1 创建的主题 程序员 请教一个数据库或代码的唯一性设计问题
忍不住直接丢给 GPT-4 了,以下是它的回答:

你的需求是实现一个层级配置功能,其中层级关系由三个字段( a, b, c )定义,并且需要确保配置的数据项在同一层级上不重复。根据你的描述,这里是一个典型的树形结构,其中 a 是第一层,b 是第二层,c 是第三层。

为了解决你目前面临的问题,可以考虑以下几个设计思路:

### 1. 使用路径枚举模型( Materialized Path )

在这种模型中,你可以为每个节点存储一个路径字符串,该字符串反映了从根到该节点的完整路径。例如:

- "1" -> "1/"
- "1,2" -> "1/2/"
- "1,2,3" -> "1/2/3/"

在查询时,你可以使用路径来检查是否存在重复的层级配置。例如,要检查是否存在与"1/2/3/"相同或更高层级的配置,只需要查询路径以"1/2/3/"开头的记录。

### 2. 使用左右值模型( Nested Set )

这种模型适用于存储层级数据,每个节点都有一个左值和一个右值,通过这两个值可以快速查询节点的子节点和父节点。但是,这种模型在插入和删除操作时需要更新大量记录,可能不适合频繁变动的配置。

### 3. 使用 Adjacency List 模型并增加唯一性约束

这是最简单的层级数据模型,每个节点都有一个指向父节点的外键。在你的情况下,可以在表中添加唯一性约束来确保同一层级的配置不会重复。

例如,你可以在数据库表中创建一个唯一索引:

```sql
CREATE UNIQUE INDEX idx_unique_config ON t(a, b, c);
```

这样,数据库将自动保证不会插入重复的层级配置。

### 4. 使用闭包表模型( Closure Table )

闭包表存储每个节点与其每个祖先之间的关系。这种模型查询快速,但是需要维护一个额外的表来存储关系。

### 5. 使用触发器或应用层逻辑

你可以在数据库层使用触发器来阻止违反层级规则的数据插入,或者在应用层实现逻辑来确保数据的一致性。

### 结合你的需求

你的需求似乎最适合使用路径枚举模型,因为它可以很容易地通过字符串比较来检查层级关系。你可以这样设计:

1. 在表中添加一个额外的字段,比如 `path`。
2. 当插入新记录时,根据 a, b, c 的值生成路径字符串。
3. 使用这个路径字符串来检查是否有重复的层级配置。

例如:

```sql
-- 假设你要插入新记录
SET @new_a = '1';
SET @new_b = '2';
SET @new_c = NULL;

-- 生成路径字符串
SET @new_path = CONCAT_WS('/', @new_a, IFNULL(@new_b, ''), IFNULL(@new_c, ''));

-- 检查是否存在重复的层级配置
SELECT COUNT(*)
FROM t
WHERE path = @new_path OR path LIKE CONCAT(@new_path, '/%');

-- 如果计数为 0 ,则可以插入新记录
```

这种方法可以避免你当前面临的问题,并且可以很容易地扩展到更多层级。
2024-04-16 15:25:42 +08:00
回复了 OliverDD 创建的主题 程序员 对数据库感兴趣,但完全接受不了 cpp
看看大数据,Spark 、Hive 、Trino 这些,语言以 JVM 系的为主,查询路径上的知识差不多太多,存储、事务之类的被大幅简化了
2023-11-27 00:58:55 +08:00
回复了 V2asker 创建的主题 浏览器 下面哪款浏览器更安全?
chrome 套皮能列出 100 个
2023-11-08 13:41:12 +08:00
回复了 Alucns 创建的主题 MySQL MYSQL8 正式环境有必要关闭性能架构 performance_schema=OFF
fyi. 阿里云 RDS ,8GB 及以上内存的实例默认 on ,否则 off
2023-10-02 15:38:14 +08:00
回复了 xieyuheng 创建的主题 程序员 [连载] 用文件系统做数据库 之一 设计文档
你需要的是 kv store

虽然文件系统也可以看作是一个面向大 value 、没有 ACID 事务的 kv store ,但显然不推荐这么用
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2670 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 13ms UTC 07:19 PVG 15:19 LAX 00:19 JFK 03:19
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86