这个数据库设计图怎么画啊,求助大神们啦

哎,当时我搞这个数据库设计图的时候,真是头大。
2 02 2 年那会儿,我在上海,公司要搞个新系统,老板让咱们把雇员和部门那块弄好。
我就琢磨着,画个ER图呗。

先看实体啊,雇员和部门,这两个是核心。
雇员,得有啥呢?雇员编号,这肯定是主键,唯一的。
名字、姓氏、职务、聘用日期、薪金,这些都得有。
还有啊,有的雇员可能有佣金,这得单独拎出来,叫潜在佣金,可能为空。

部门呢,也得有主键,部门编号。
部门名称,比如会计部、销售部、开发部,这得写清楚。
位置也得标上,比如上海分部、北京分部。

然后是关系。
雇员和部门,这关系是啥呢?是多对一。
就是说,一个部门能有多个雇员,但一个雇员只能在一个部门。
这得在外键上体现,雇员表里得有个“部门编号”,这外键就关联到部门表的主键。

雇员和雇员之间,还有个管理关系,这叫自关联。
有的雇员是经理,管理其他雇员。
这咋表示呢?在雇员表里再加个“经理编号”,这还是个外键,但指向的是本表里的“雇员编号”。
要是某个雇员是顶层经理,没管理别人,那这个“经理编号”就为空。

画图的时候,雇员和部门用矩形框起来,属性都列上,主键底下划条线。
关系线,雇员指向部门,就画个箭头,标注“多对一”。
雇员自关联,就在雇员框内部画个箭头,标注“管理关系”。

还得加些约束说明。
比如,潜在佣金这字段,就标“可为空”。
雇员表的“部门编号”这外键,就非空,每个雇员都得有个部门。
经理编号为空,就表示是顶层经理。

当时我还用纸笔画过,用铅笔画的矩形、菱形,连线都画得歪歪扭扭。
后来发现用软件方便多了,比如MySQLWorkbench,画起来清晰多了。
Visio也行,PowerDesigner更专业些。
Draw.io、Lucidchart这些在线工具也挺好,免费还能协作。

画图的时候啊,表名、字段名得规范点,别用中文,用英文或拼音,比如“DepartmentID”就不能写成“部门ID”。
以后要是想加功能,比如雇员有啥技能、部门有啥预算,那就得加新实体,扩展关系。

当时我还想,这设计够规范吧,第三范式都满足了,没啥冗余数据。
虽然可能我有点偏激,觉得设计得越细越好,但老板还挺满意的。

就这样,2 02 2 年,在上海,我搞定了这个ER图,后来就用来建MySQL表了。

如何实现一个百万亿规模的时序数据库,百度智能云 BTS 架构解析和实践分享

哎哟,这百度智能云BTS听起来确实挺厉害的。
我之前在一家做自动驾驶的公司待过,那时候就是用的这个BTS来处理海量数据的。
咱们就聊聊这个BTS吧,我来说说亲身踩过的坑。

先说架构设计吧,这个BTS是三层解耦设计,接入层、引擎层、存储层,听起来挺复杂,但实际操作起来还挺方便。
我记得有一次,我们公司要处理TB级的数据,那玩意儿存储层就发挥作用了。
我们用的HDD和SSD,还有Snappy、EC这种压缩格式,能自动降冷,降低长期存储成本。
这就像我以前租房,租贵的肯定贵,租便宜的能省点钱。

然后是引擎层,这玩意儿核心处理模块,智能化调度、时序引擎、宽表引擎,我那时候就是用这个来处理数据的。
记得有一次,我们预测到业务波动,提前调度资源,结果数据吞吐量提升了,挺神奇的。

再说说核心技术,性能、成本与可用性的平衡。
我那时候,写路径和读路径都挺优化过的,比如写路径,数据写入Redo-Log后进入内存表,通过多级压缩减少I/O开销。
读路径,优先查询数据块缓存,未命中时下沉至单元数据检索,合并内存与缓存数据加速返回。
这就像我以前玩游戏,优化配置,玩得更顺畅。

至于场景实践,自动驾驶和系统监控这两个场景,我都亲身经历过。
自动驾驶那个,我们处理单车日产TB级多源数据,得低延迟、高吞吐、低成本存储。
BTS就帮我们解决了这个问题,性能优化和成本优化都做得很好。
系统监控那个,我们处理离线流量和在线流量混合,小Value数据读写消耗高。
BTS通过流量分级管理和缓存策略,解决了这个问题。

未来展望,BTS要拓展文档、搜索等多模支持,提供跨模态统一分析,这听起来挺有意思的。
百度智能云数据库矩阵也要支持公有云、专有云、边缘计算等多场景需求,这就像我以前换工作,从一家公司跳到另一家公司,适应不同的环境。

总的来说,BTS这个技术确实不错,我在实际应用中感受到了它的强大。
不过,我也得承认,这个技术挺复杂的,需要一定的技术背景才能理解。
不过,只要掌握了,就能解决很多实际问题。

我把「记忆」接入了「小爱」,成功搞定多轮对话!

上周。
小爱这个功能搞定了。
就是用SQLite数据库。
用户表。
群聊消息表。
私聊消息表。
存uid。
名字。
聊天内容。
用FastAPI搞增删改查。
比如加用户。
查一下数据库。
没有就加。
有就改名字备注。

然后是聊天记录。
存谁发的。
什么时间。
群聊还是私聊。
用户第一次发消息。
就进用户表。
聊天记录也存进去。

要回复的时候。
先查最近几条。
比如6 条。
用个接口查。
带uid或者群名去查。
把查到的消息拿去。
连着用户问题。
给大模型。
让大模型看上下文。
生成回复。

测试的时候。
连续问几个问题。
比如先问王阳明。
再问明朝。
看大模型能不能连起来。
记录日志。
方便看问题。

有个问题是。
大模型不懂历史。
比如王阳明是明朝人。
它没记住。
另一个问题是。
只看6 条。
不够。
复杂点就不够用。

总的来说。
这个方法挺好。
解决了多轮对话的问题。
用户体验好了很多。

下一步。
用向量搜索。
查更相关的消息。
给消息加权。
重要的多看几眼。
数据库也优化一下。
支持更多并发。

代码和教程都在。
参考着就能弄。
有问题加群聊。