数据库
文章平均质量分 93
Dontla
Life is short, I use AI.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MVCC机制介绍(多版本并发控制)(数据库不直接覆盖旧数据,而是保留多个版本)快照读、当前读、Undo Log旧版本存储、版本链、读视图、脏读、不可重复读、幻读(未验完)
MVCC 的核心思想其实非常简单:数据库不直接覆盖旧数据,而是保留多个版本。写操作创建新版本读操作读取旧版本读写之间尽量不互相阻塞时间操作T1事务 A 读取余额 = 100T2事务 B 修改余额 = 200,但未提交T3事务 A 再次读取A 可能被 B 阻塞或 A 读到未提交数据A 继续读取“旧版本”100B 修改“新版本”200二者互不影响。这就是:“快照读(Snapshot Read)”MVCC 是现代关系型数据库最关键的并发控制机制之一。多版本数据。原创 2026-06-07 19:04:12 · 301 阅读 · 0 评论 -
pgvector介绍(PostgreSQL扩展,允许PG原生存储向量,并进行向量相似度搜索)向量距离计算、欧氏距离、内积、ANN索引、IVFFlat、HNSW、Query DSL
在 AI 应用快速发展的今天,向量数据库(Vector Database)几乎已经成为 RAG、语义搜索、推荐系统、AI Agent 的基础设施。但很多团队在真正落地时,会遇到一个现实问题:我已经有 PostgreSQL 了,真的需要再引入一个新的向量数据库吗?这也是 pgvector 出现并迅速流行的原因。pgvector 是 PostgreSQL 的一个扩展(Extension),它允许 PostgreSQL 原生存储向量,并进行向量相似度搜索。降低架构复杂度避免数据同步。原创 2026-05-28 20:09:19 · 463 阅读 · 0 评论 -
PostgreSQL Vacuum介绍(一种核心数据库维护操作,主要用于解决MVCC多版本并发控制机制带来的死元组dead tuples问题)回收死元组空间、存储空间耗尽、避免幻读、垃圾回收器
它通过清理 MVCC 产生的死元组,回收存储空间、维护索引效率,确保数据库在高并发写入场景下依然保持高性能和稳定性。原创 2026-05-28 19:50:43 · 301 阅读 · 0 评论 -
Temporal介绍(持久化、可靠、可恢复的分布式工作流引擎)Event History事件历史、Deterministic确定性、副作用操作、Saga分布式事务、temporalio
Temporal Technologies 是一个:“持久化、可靠、可恢复”的分布式工作流引擎(Workflow Engine)它最初来自:Uber 内部的 Cadence 项目。Temporal 的核心目标是:把“业务流程状态管理”从应用代码中抽离出来。Temporal 本质上是:“把程序执行过程持久化”分布式系统中的状态可靠性问题微服务AI Agent长事务系统分布式业务流程Temporal 几乎是当前最强的基础设施之一。原创 2026-05-21 18:11:26 · 754 阅读 · 0 评论 -
连接池(Connection Pool)介绍(一组可复用连接的缓存)网络RTT、asyncpg Pool、NAT超时、LB踢连接、适当连接池数量、池耗尽、连接泄漏、PgBouncer、ProxySQL
连接池(Connection Pool)本质上是:一组可复用连接的缓存。请求 -> 创建连接 -> 使用 -> 关闭连接请求 -> 从池中获取连接 -> 使用 -> 放回池中连接不会频繁创建与销毁,而是被重复利用。NAT 超时和LB 踢连接都是中间网络设备因空闲超时主动断连的行为,属于“非应用层主动断开”的隐性风险。的作用:通过限制连接最大存活时间,确保连接在 NAT/LB 超时前被应用层主动关闭并重建,从而避免因中间设备断连导致的通信故障。类比理解。原创 2026-05-14 23:48:24 · 381 阅读 · 0 评论 -
数据库分片(Sharding)详解(将逻辑数据库数据拆分到多个物理数据库或节点中,每个节点只存储部分数据)分库、分表、水平分片、垂直分片、分片键、哈希分片、一致性哈希、业务维度分片、分布式事务ACID
水平扩展(Scale Out)降低单点压力提升查询性能提高系统可用性简单来说:👉“把一张大表拆成多张小表,分布到不同机器上”用空间换性能,用复杂度换扩展性它带来的收益很明显,但同时也会引入系统复杂性。小系统优先垂直扩展(加机器)中大型系统再考虑分片优先使用成熟中间件或分布式数据库。原创 2026-05-06 16:00:21 · 603 阅读 · 0 评论 -
Qdrant介绍(开源向量数据库Vector Database)向量搜索、RAG、高性能向量搜索ANN、HNSW分层可导航小世界算法、Payload过滤、Milvus、Weaviate、距离函数
Qdrant 是一个开源的向量数据库(Vector Database),专门用于存储、管理和检索高维向量数据。它通过高效的近似最近邻搜索(ANN, Approximate Nearest Neighbor)算法,实现毫秒级的相似度查询。简单来说:Qdrant = 向量存储 + 相似度搜索 + 过滤能力语义搜索(Semantic Search)推荐系统(Recommendation System)图像/音频检索大模型 RAG(知识检索增强)🚀 高性能向量搜索🔍 强大的过滤能力。原创 2026-05-06 02:22:26 · 660 阅读 · 0 评论 -
Python asyncpg库介绍(基于Python asyncio的PostgreSQL数据库驱动)连接池、SQLAlchemy
asyncpg是一个基于 Pythonasyncio🚀 极致性能(通常比 psycopg2 快 2~5 倍)⚡ 原生异步(非线程池模拟)🧠 高效协议实现(直接实现 PostgreSQL 二进制协议)🔒 类型安全(自动映射 PostgreSQL 类型)它不是简单的 ORM,而是一个更底层、更高效的数据库访问工具。高并发 API 服务(如 FastAPI)微服务架构实时系统(如消息处理)数据密集型应用简单脚本低并发后台任务asyncpg 的核心价值可以归纳为三点:🚀 高性能。原创 2026-05-01 15:48:06 · 625 阅读 · 0 评论 -
数据库索引Index介绍(B+树、主键索引、非聚簇索引、唯一索引、普通索引、联合索引、最左前缀原则、回表Back to Table、覆盖索引、索引下推)常见索引失效原因
数据库索引是一种用于提高查询效率的数据结构,类似于书籍的目录。没有索引:全表扫描(Full Table Scan)有索引:通过索引快速定位数据数据表 = 一本书索引 = 目录查询 = 查某一页内容如果没有目录,你只能一页一页翻;有了目录,可以快速定位。用空间换时间,用复杂结构换查询效率索引底层通常是 B+ 树聚簇索引 vs 非聚簇索引要理解联合索引要遵循最左前缀原则覆盖索引是性能优化关键索引并非越多越好“不是所有查询都需要索引,但高频查询一定要有合适的索引。原创 2026-04-30 22:57:33 · 392 阅读 · 0 评论 -
数据库Schema介绍(MySQL Schema等价于Database、PostgreSQL Schema是数据库内命名空间)Flyway、Liquibase、Alembic
Schema(模式)是数据库中对数据结构的定义和组织方式。表(Table)字段(Column)数据类型(Data Type)索引(Index)约束(Constraint)关系(Relation)简单来说:Schema = 数据的“蓝图”或“结构说明书”数据是房间里的物品表是房间Schema 就是整栋楼的设计图数据如何组织系统如何扩展查询是否高效数据是否可靠Schema 是数据世界的“架构设计图”,好的 Schema = 稳定 + 高效 + 可扩展的系统基础。原创 2026-04-30 20:50:06 · 492 阅读 · 0 评论 -
ETL介绍(抽取转换加载:Extract、Transform、Load)(把数据从A系统取出来,加工后送到B系统)Parquet、ETL先转后存、ELT先存后转
Extract(抽取):从数据源获取数据Transform(转换):对数据进行清洗、加工、转换Load(加载):将处理后的数据写入目标系统简单来说,ETL 就是:👉把数据从 A 系统取出来,加工后送到 B 系统Extract:把数据拿进来Transform:把数据变干净、有用Load:把数据送到目标系统简单场景 →线性 ETL pipeline 足够复杂场景 →引入 DAG / 工作流调度让复杂度匹配业务需求,而不是过度设计。原创 2026-04-28 22:55:52 · 535 阅读 · 0 评论 -
PostgreSQL Row-Level Security(RLS)介绍(行级安全:同一张表,不同用户只能看到属于自己的数据)CREATE POLICY、WITH CHECK
Row-Level Security(行级安全)“哪些行(rows)对当前用户是可见 / 可操作的”它类似于在每条 SQL 查询上自动附加一个WHERE条件。FOR SELECTFOR INSERTFOR UPDATEFOR DELETE👉 精细控制 CRUD 权限。把“数据访问控制”从应用层下沉到数据库层更强的安全性(强制执行)更好的一致性(统一策略)更低的开发复杂度(减少重复逻辑)原创 2026-04-27 16:11:08 · 573 阅读 · 0 评论 -
GDPR(欧盟通用数据保护条例)和CCPA(加州消费者隐私法案)介绍
是欧盟于 2018 年正式实施的数据保护法规,适用于所有处理欧盟居民个人数据的组织——无论公司是否位于欧盟境内。是美国加州于 2020 年实施的隐私法案,主要保护加州居民的个人信息。GDPR 和 CCPA 标志着全球进入数据隐私监管时代GDPR:强调数据保护与用户控制权CCPA:强调透明度与消费者选择权对于企业来说:合规不是成本,而是建立用户信任的基础设施。SaaS 平台AI/数据产品跨境业务那么理解并落实 GDPR / CCPA,将是你架构设计中不可忽视的一环。原创 2026-04-17 13:52:39 · 542 阅读 · 0 评论 -
Audit Log(审计日志)介绍(对系统中关键操作行为记录,用户行为+系统变更+安全事件)中间件 / AOP、数据库层——数据库变更捕获(CDC)
Audit Log(审计日志)用户行为 + 系统变更 + 安全事件可追溯性(Traceability)不可篡改性(Integrity)合规性(Compliance)没有审计日志,就没有真正的可控系统。提前设计数据结构独立存储与查询与安全与合规体系结合。原创 2026-04-17 01:15:28 · 1068 阅读 · 0 评论 -
DSN(Data Source Name,数据源名称、数据源描述)介绍(用于标识数据库连接信息的配置集合)(命名DSN、/etc/odbc.ini、 DSN连接字符串)数据库URL、数据库链接
本质上是一个用于标识数据库连接信息的配置集合。数据库类型(MySQL / PostgreSQL / Oracle 等)主机地址(Host)端口(Port)数据库名称(Database Name)用户名(Username)密码(Password)连接参数(如编码、超时、SSL 等)👉 可以简单理解为:DSN = 数据库连接所需参数的“统一入口”✅ 简化配置管理✅ 解耦代码与环境✅ 提高系统可维护性✅ 适配云原生与微服务架构在现代工程实践中,原创 2026-04-16 17:51:22 · 717 阅读 · 0 评论 -
高基数(High Cardinality)问题介绍(Prometheus、高基数字段、低基数字段)
高基数问题是时序数据库和监控系统中的常见挑战,需要在数据建模阶段就充分考虑,避免后期性能问题。是指数据集中某个字段或标签具有大量不同值(即基数很高)时,导致系统性能严重下降的技术问题。:指数据集中某个字段不同值的数量。原创 2026-04-16 14:34:33 · 531 阅读 · 0 评论 -
QPS(Queries Per Second)每秒查询率 / TPS(Transactions Per Second)每秒事务数介绍
这两个指标都是评估系统性能和并发处理能力的重要标准,在性能测试和系统优化中广泛应用。原创 2026-04-12 15:21:23 · 540 阅读 · 0 评论 -
RDS(Relational Database Service,关系型数据库托管服务)介绍(云RDS、主从复制Streaming Replication、WAL:Write-Ahead Logging
是一种由云厂商提供的托管关系型数据库服务Alibaba Cloud(阿里云 RDS)Tencent Cloud(腾讯云 RDS)它的核心特点是:👉数据库运维由平台托管,你只需要关注数据和业务逻辑把复杂的数据库运维(HA、备份、监控)产品化、自动化RDS = 更省心自建 = 更自由团队能力成本预算系统规模。原创 2026-04-12 14:40:07 · 542 阅读 · 0 评论 -
Redis(Remote Dictionary Server)的应用场景与使用方法(基于内存的高性能NoSQL数据库,支持持久化,并提供多种数据结构)RDB、AOF、主从复制、哨兵、集群
Redis(Remote Dictionary Server)是一个基于内存的高性能 NoSQL 数据库String(字符串)Hash(哈希)List(列表)Set(集合)Sorted Set(有序集合)BitmapStream极高性能:内存操作,QPS 可达 10 万级以上丰富的数据结构:支持多种复杂数据类型原子操作:单线程执行保证命令原子性持久化机制:支持 RDB 与 AOF高可用架构:支持主从复制、哨兵、集群提升系统性能(缓存)支持高并发访问。原创 2026-03-18 01:28:31 · 504 阅读 · 0 评论 -
MySQL Binlog(Binary Log二进制日志)介绍(主从复制的基础,实现主库与从库的数据同步)数据恢复、数据审计、数据同步/CDC、mysql-bin.index、Redo Log
Binlog,全称Binary Log(二进制日志),是 MySQL 用来记录所有修改数据库数据或结构的操作的日志文件。只要数据发生变化(INSERT / UPDATE / DELETE / DDL),就会被记录到 Binlog 中。查询(SELECT)不会记录Binlog 是逻辑日志,记录的是“做了什么”,而不是“数据变成什么样”格式安全性日志大小推荐程度STATEMENT低小不推荐ROW高大⭐推荐MIXED中中可用。原创 2026-03-18 00:42:01 · 689 阅读 · 0 评论 -
Redis缓存一致性(Cache Consistency)问题,如何避免脏数据(stale data)?(Cache Aside旁路缓存、过期时间TTL、订阅数据库变更Binlog、延迟双删)
👉Redis 不保证强一致性,只能做到最终一致性优先保证数据库正确缓存只是“加速层”通过策略降低不一致时间窗口。原创 2026-03-17 15:04:09 · 499 阅读 · 0 评论 -
Redis主从复制(Replication)介绍(将主节点实例数据同步到多个从节点,实现读写分离、数据备份和故障恢复)非阻塞复制、级联复制、replicaof、全量复制、增量复制、RDB快照
一个Master(主节点)一个或多个Slave(从节点)从节点通过网络连接主节点,并复制主节点的数据集。主节点负责写操作从节点负责读操作读写分离(提高读性能)数据冗余备份高可用架构基础ClientMaster/ | \所有写操作先进入 Master,然后同步到各个 Slave。支持一主多从采用异步复制提供全量复制 + 增量复制通过实现部分重同步读写分离数据冗余高可用架构基础在实际生产环境中,通常会将主从复制 + Sentinel 或 Cluster。原创 2026-03-17 10:55:08 · 583 阅读 · 0 评论 -
Redis哨兵(Sentinel)介绍(用于监控Redis集群并在主节点故障时自动完成故障转移的机制)监控、自动故障转移、通知、服务发现、主观下线SDOWN、客观下线ODOWN、Cluster集群
为 Redis 提供自动故障恢复能力。监控 Redis 节点自动故障转移客户端服务发现提高系统高可用SlaveSlave。原创 2026-03-17 10:22:21 · 408 阅读 · 0 评论 -
DTO(Data Transfer Object数据传输对象)介绍(用于在系统之间传输数据的简单对象,隔离数据结构,避免暴露内部模型结构)
DTO(Data Transfer Object)是一种用于在系统之间传输数据的简单对象。它通常只包含数据字段(属性)和对应的 getter/setter,而不包含业务逻辑。只用于数据传输不包含复杂业务逻辑通常是轻量级结构常用于API 请求与响应简单来说:DTO 是一种专门用于在不同系统组件之间传递数据的对象。客户端向服务器发送请求时,数据会被解析成这个 DTO 对象,然后再进入业务处理流程。DTO 是一种简单但非常重要的软件设计模式。它通过数据结构隔离。原创 2026-03-13 13:34:05 · 770 阅读 · 0 评论 -
Ingestion服务介绍(数据摄取服务,把外部系统的数据导入到内部数据系统中)(Batch Ingestion批处理摄取、Streaming Ingestion实时摄取)
(数据摄取服务)是数据平台或数据管道(Data Pipeline)中的一个核心组件,用来,例如数据湖、数据库、搜索引擎或机器学习平台。在和架构中,Ingestion 通常是。原创 2026-03-09 18:09:48 · 363 阅读 · 0 评论 -
结构化数据、非结构化数据(Unstructured Data)与半结构化数据(Semi-structured Data)介绍(RDBMS、Data Lake数据湖、Databricks)
结构化数据是指具有严格、预定义数据模型(Schema)的数据。数据以行和列的形式组织,每个字段都有明确的数据类型和约束规则。典型代表:关系型数据库中的数据。非结构化数据指没有固定模式或预定义数据模型的数据。数据内容无法用传统二维表结构直接表示。半结构化数据介于结构化与非结构化之间。数据没有严格的关系模型,但内部包含自描述结构标签或键值对。结构化数据:规则明确,适合传统分析与事务处理。半结构化数据:灵活可扩展,适合互联网与日志场景。非结构化数据:信息丰富,但处理复杂,是 AI 时代的关键资源。原创 2026-02-27 02:23:35 · 1241 阅读 · 0 评论 -
如何查看chroma.sqlite3向量库?(vector store、ChromaDB、查看文档和元数据、SQLite Viewer、DB Browser for SQLite、数据库)查看数据库
ChromaDB 使用 SQLite 存储数据,可用以下工具查看。原创 2026-02-23 21:42:14 · 961 阅读 · 0 评论 -
VScode插件SQLite Viewer介绍(允许开发者不离开编辑器,直接打开、浏览和查询SQLite数据库文件)(ChromaDB、向量库插件、数据库插件、.sqlite3)DBeaver
在开发过程中,我们经常需要查看和调试 SQLite 数据库。无论是本地开发、调试应用,还是查看向量数据库(如 ChromaDB)的底层存储,一个好用的数据库查看工具都至关重要。VS Code 作为最流行的代码编辑器之一,其插件生态非常丰富。今天要介绍的插件,就是一款在 VS Code 中直接查看和管理 SQLite 数据库的优秀工具。SQLite Viewer 是一款专为 VS Code 设计的 SQLite 数据库查看和管理插件。原创 2026-02-23 15:53:52 · 3469 阅读 · 0 评论 -
对象存储服务器存储逻辑(OSS:Object storage service)以CSDN图片存储为例、文件存储服务、图像存储、图片上传、引用计数、资源绑定、延迟清理
引用计数延迟清理生命周期规则离线垃圾回收来控制。原创 2026-02-14 01:53:25 · 1278 阅读 · 0 评论 -
MinIO介绍(分布式对象存储系统 object storage)传统文件名和目录结构,大文件存储为主,Amazon S3(AWS S3)替代方案(MinIO和SeaweedFS区别)mc命令行
MinIO 是一个高性能、开源的对象存储系统,100% 兼容 Amazon S3 API。用 Go 语言编写,单二进制文件部署,无外部依赖。它既可作为轻量级单机服务运行,也能构建跨数据中心的分布式集群,专为云原生环境(Kubernetes、Docker)而生。开源协议:AGPLv3(社区版),企业版提供增强支持核心定位:私有化部署的“S3 替代方案”,让企业掌控数据主权一句话总结“把 AWS S3 的能力,装进你自己的服务器里。专注做好一件事——对象存储。原创 2026-02-03 01:50:35 · 1655 阅读 · 0 评论 -
PageHelper技术(MyBatis物理分页插件)LIMIT语句:SQL查询语言中用于限制返回数据行数的关键字
PageHelper是一个开源、免费、强大的物理分页插件,它在GitHub上拥有超过12k的star,是国内Java开发者社区中最主流的分页解决方案之一。LIMIT是SQL查询语言中用于限制返回数据行数的关键字,主要应用于MySQL等数据库系统。它能有效控制查询结果的范围,是实现分页功能的核心语法。原创 2026-01-24 15:25:30 · 775 阅读 · 0 评论 -
boilerplate Introduction样板代码介绍(raw JDBC,Mybatis,productivity killer)
feels。原创 2026-01-23 21:15:53 · 679 阅读 · 0 评论 -
Mybatis Introduction (Java ORM Framework)
【代码】Mybatis Introduction (Java ORM Framework)原创 2026-01-23 20:24:44 · 722 阅读 · 0 评论 -
黑马程序员DeepSeek+Cursor+Devbox+Sealos零代码实战项目开发部署——(1)项目设计——数据库设计(sealos、dbeaver)
如需其他数据库(如 PostgreSQL),需调整语法,但您提供的上下文明确为 MySQL(因使用。以下是根据您的要求,补充了标准建表语句的必要组成部分(包括存储引擎、字符集、排序规则和表级注释)的完整。根据提供的员工管理模块的页面原型和需求文档截图,我们可以分析出员工表。核心逻辑:两层级的一对多关系,均通过外键实现关联,不存在多对多场景。注意:若需求允许部门名称重复(如不同层级的“教研部”),可移除。,用于存储部门自身的核心信息,如部门名称、最后操作时间等)。的具体字段、字段类型及约束。原创 2026-01-20 23:04:22 · 601 阅读 · 0 评论 -
MySQL警告:Integer display width is deprecated and will be removed in a future release(TINYINT)显示宽度
DBeaver作为数据库客户端工具,当它执行SQL语句或处理MySQL数据库返回的信息时,会将MySQL服务器返回的警告信息显示给用户。根据知识库信息[4]、[7]和[9],MySQL 8.0.17及以上版本已经弃用了整数类型的显示宽度属性。这个警告信息是MySQL数据库发出的,不是DBeaver本身的问题,而是与MySQL数据库的设置有关。的SQL语句时,MySQL服务器会返回这个警告,因为您在整数类型上使用了已弃用的显示宽度属性。这样修改后,您的SQL将不再触发这个警告,同时保持功能不变。原创 2026-01-20 22:37:45 · 852 阅读 · 0 评论 -
DBeaver Introduction (Open-Source Database Management Tool) (MySQL Workbench, pgAdmin)
Managing databases across multiple platforms can feel like juggling flaming swords—chaotic, time-consuming, and prone to mistakes. Whether you’re a developer, data analyst, or database administrator, the frustration of switching between tools for MySQL, Po原创 2026-01-20 14:05:03 · 845 阅读 · 0 评论 -
商业智能BI介绍(Business Intelligence)(一套技术和工具系统,旨在帮助企业将原始数据转化为可操作的商业洞察,从而支持更明智的决策制定)区别于数据分析DA和商业分析BA
根据知识库资料,BI 是一种技术驱动的方法,通过以下方式实现价值:“商业智能(BI)是一种技术驱动的方法,通过收集、整理、分析和展示数据,为企业决策提供支持。BI利用数据仓库和数据挖掘等技术,将海量数据转化为可视化和易于理解的报告、仪表板或指标,帮助企业管理者了解业务趋势、识别机会和问题,并做出更明智的决策。”(来自[4])原创 2026-01-20 13:43:25 · 664 阅读 · 0 评论 -
Database Physical Foreign Keys vs. Logical Foreign Keys (物理外键和逻辑外键) ON DELETE SET NULL
时,如果主表中的记录被删除,所有从表中引用该记录的外键字段将被自动设置为 NULL,而不是删除相关记录。原创 2026-01-19 22:52:52 · 671 阅读 · 0 评论 -
Database Schema Introduction (structure of data, NoSQL schema)
它是用于建立和加强两个表数据之间的链接的一个或多个字段。外键通常引用另一个表的主键,用于维护数据的完整性和建立表之间的关系。外键可以为 NULL,表示没有关联的记录。它是表中的一个或多个字段,其值唯一标识表中的每一行记录。主键的值必须是唯一的,并且不能为 NULL。主键确保了每条记录的唯一性,便于数据的检索和管理。原创 2026-01-19 16:12:36 · 784 阅读 · 0 评论 -
MySQL COMMENT Keyword vs. SQL Comments(MySQL注释,COMMENT关键字,Code Comments,DDL keyword,TEMPORARY TABLE)
避免锁定主表:如果直接在users表上执行多次查询,可能会锁定该表,影响其他用户或应用的正常访问。而临时表在内存中操作,不会影响主表。结合,表示只返回那些处于激活状态(is_active=1)且邮箱地址以 “@example.com” 结尾的用户。这个条件确保查询结果只包含那些邮箱地址符合 “@example.com” 格式的用户。这句SQL语句的意思是:筛选出所有邮箱地址以 “@example.com” 结尾的用户。隔离数据:这个临时表仅对当前数据库连接可见,其他用户无法访问,保证了数据安全。原创 2026-01-18 18:39:16 · 710 阅读 · 0 评论
分享