V2EX fuyufjh 的所有回复 第 1 页 / 共 21 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    fuyufjh    全部回复第 1 页 / 共 21 页
回复总数  419
1  2  3  4  5  6  7  8  9  10 ... 21  
这俩都是给 IDC 自建用户设计的…… “云数据库”至少也应该是 RDS / Aurora / PolarDB / Neon 这样的线上服务吧
搞艺术的想象力都很丰富吧?但凡认识一个女程序员都不会写下这么小众的文字
2024-06-28 10:32:01 +08:00
回复了 MareDevi 创建的主题 大学 北邮和大连理工选哪个
工作这么多年,一个大连理工的人都没见过。北邮的还是不少的。
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 ,但显然不推荐这么用
2023-08-09 23:49:20 +08:00
回复了 sdjl 创建的主题 问与答 你身边有没有那种 “没有兴趣爱好的人” ?
也有过完全一样的困惑。

有过这么一些同事,30 岁上下的年纪,不刷短视频不看 B 站不打游戏不看书,也不是一直加班

他们的时间都是怎么消耗掉的???
2023-07-04 07:37:10 +08:00
回复了 hwaphon 创建的主题 投资 [买房] 铁子们,现在杭州的房子能上车吗
二手房成交惨不忍睹,又到了赌国运的时候了
2023-07-03 13:45:43 +08:00
回复了 beren11129 创建的主题 分享发现 大陆工资的隐形税率
我国最大的税不是土地出让金么
2023-06-12 15:33:54 +08:00
回复了 kerie 创建的主题 问与答 请教一个 Flink SQL 的问题,解决了星巴克感谢
@kerie 我是觉得不应该用 Flink 做。Streaming 擅长增量计算,这个问题本质是一个全量计算,“全量”指最近 1min 的全量数据。

我觉得用数仓、定时 1min 查一次是最合适的。

Flink 的理念是 event-driven ,反过来说,如果没有 event 则不该触发任何计算。举个简化的例子,如果这 1min 内没有任何订单,你应该也希望得到一个全部 count=0 的结果吧(而不是什么也不输出),那么这就与 event-driven 相违背了。
2023-06-12 13:42:19 +08:00
回复了 kerie 创建的主题 问与答 请教一个 Flink SQL 的问题,解决了星巴克感谢
这是一个典型的 micro batch 需求吧,1 分钟执行一次。用时间条件做过滤能起到很好的过滤效果,执行很快的
500 Error
毫不夸张地说,这是我见过的完成度最高的个人项目,文档也很棒,太强了!!
2022-12-04 19:58:31 +08:00
回复了 xdd2100 创建的主题 职场话题 现在收到国外的工作 offer,可以办到护照吗?
@qwertqwert12345 现在出境必须向海关提供足够的资料证明你属于商务、工作、学习、探亲(直系亲属)中的一项,其中签证是必查的一项
2022-08-04 14:16:28 +08:00
回复了 levelworm 创建的主题 分享发现 看到一个 Java 的 TUI 库感觉还做得蛮不错的
写 Java 的人一般对 tui 没有太多执念吧
1  2  3  4  5  6  7  8  9  10 ... 21  
关于     帮助文档     自助推广系统 nbsp;   博客     API     FAQ     Solana     2651 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 57ms UTC 00:03 PVG 08:03 LAX 17:03 JFK 20:03
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