数据库

数据库

数据库设计规范

相关文档:MySQL基础完全指南(/mysql-ji-chu-wan-quan-zhi-nan/) | MySQL高级优化(/mysql-gao-ji-you-hua/) | Redis完全指南(/redis-wan-quan-zhi-nan/) 定义:表中每一列都是不可再分的原子值,不允许多值列或嵌套结构。 违反示例: 修正:将多值列拆为单独的行(order_items 表)。 坏处:查询、更新单个值需要字符串解析;无法建立外键约束;无法索引。 定义:在满足 1NF 的基础上,非主键列必须完全依赖于整个主键,不允许部分依赖(仅针对复合主键)。 违反示例

By yellowdog

数据库

SQLite 完全指南

SQLite 是一个无服务器、单文件的关系型数据库引擎,整个数据库(包括表、索引、数据)存储在一个 .db 文件中。 sqlite3 是 Python 标准库模块,无需安装,遵循 DB-API 2.0 规范(PEP 249)。 sqlite3.connect() 返回 Connection 对象,代表一个数据库连接。 Cursor 是执行 SQL 语句和获取结果的核心对象。 始终使用参数绑定,严禁用字符串拼接构造 SQL,防止 SQL 注入。 Python 3.12 新增,与命名参数等价,此处不展开。 默认情况下,查询结果的每行是元组。设置 row_fa

By yellowdog

数据库

PostgreSQL 完全指南

相关文档:MySQL基础完全指南(/mysql-ji-chu-wan-quan-zhi-nan/) SQLAlchemy完全指南(/sqlalchemy-wan-quan-zhi-nan/) SQLModel完全指南(/sqlmodel-wan-quan-zhi-nan/) 始终使用 TIMESTAMPTZ 而非 TIMESTAMP:TIMESTAMP 不存储时区,跨时区系统会出现时间错乱。TIMESTAMPTZ 内部统一存储为 UTC,读取时按连接时区自动转换。 用 JSONB 而非 JSON:JSON 存储原始文本,每次访问都需解析;JSONB 存储

By yellowdog

数据库

MySQL 高级优化

生产环境要求:至少达到 range,核心查询要求 ref 及以上。 JSON 输出中重点关注: 输出示例(树状格式): actual time=开始..结束 单位为毫秒,loops 为该节点执行次数。 联合索引 INDEX idx_abc (a, b, c) 的命中规则: 规律:从索引最左列开始,遇到范围查询(>、<、BETWEEN、LIKE 'prefix%')则后续列失效。 查询所需的列全部包含在索引中,无需回表读取行数据,EXPLAIN 的 Extra 显示 Using index。 设计覆盖索引的思路:将 SELECT 列表中频繁出现的列追加到联

By yellowdog

数据库

MySQL 基础完全指南

常用约束 注意:视图不存储数据,每次查询都会执行底层 SELECT。包含 GROUP BY、DISTINCT、聚合函数、UNION 的视图通常不可更新。 pymysql.connect() 参数表 游标方法参数表 PooledDB 参数表 MySQL 的 utf8 最多只支持 3 字节,无法存储 emoji 和部分汉字(需要 4 字节)。应始终使用 utf8mb4。 EXPLAIN 先于优化:每次优化查询前用 EXPLAIN 确认执行计划,不凭直觉加索引,重点关注 type(ALL 为全表扫描)、key(实际使用的索引)、rows(估算扫描行数)。 复合

By yellowdog

数据库

MongoDB 完全指南

相关文档:MySQL基础完全指南(/mysql-ji-chu-wan-quan-zhi-nan/) Redis完全指南(/redis-wan-quan-zhi-nan/) Scrapy分布式采集(/scrapy-fen-bu-shi-cai-ji-wan-quan-zhi-nan/) 聚合管道是 MongoDB 最强大的查询能力,通过一系列阶段(Stage)对数据进行变换: 嵌入 vs 引用:一对少用嵌入,一对多用引用:嵌入文档(subdocument)读取一次 IO 就能拿到所有数据,适合一对少(如用户地址、商品规格);引用(_id 外键 + $loo

By yellowdog

数据库

Elasticsearch 完全指南

相关文档:PostgreSQL完全指南(/postgresql-wan-quan-zhi-nan/) MongoDB完全指南(/mongodb-wan-quan-zhi-nan/) Redis完全指南(/redis-wan-quan-zhi-nan/) Elasticsearch 是基于 Apache Lucene 的分布式全文搜索引擎,RESTful API 驱动,支持近实时搜索和分析。 Mapping 定义字段类型,一旦设置不可更改(只能新增字段)。 聚合类似 SQL 的 GROUP BY + 统计函数。 Mapping 提前定义,不依赖动态映射:E

By yellowdog

数据库

DuckDB 完全指南

DuckDB 是一个嵌入式列式 OLAP 数据库,无需独立服务进程,像 SQLite 一样嵌入应用内部运行,但专门针对分析型查询(大量数据扫描、聚合、连接)进行了优化。 与主要替代方案的对比: 适合的场景: 不适合的场景: DuckDB 有三种连接模式: duckdb.sql() 等模块级函数使用一个全局默认连接,等效于 duckdb.connect(":default:")。单文件脚本直接用模块级函数即可;需要隔离或多线程时才创建独立连接。 duckdb.sql() 等方法返回 DuckDBPyRelation,它是一个惰性求值的符号查询节点——不会立

By yellowdog

数据库

ClickHouse 完全指南

ClickHouse 是列式存储数据库。与行式存储(MySQL、PostgreSQL)不同,列式存储将同一列的所有数据连续存放在磁盘上。 行式存储 vs 列式存储: ClickHouse 适用场景:日志分析、用户行为统计、监控指标聚合、实时报表。 MergeTree 是 ClickHouse 最重要的存储引擎族,所有生产场景几乎都用此系列。 最基础的引擎,数据按 ORDER BY 键排序存储,后台定期合并数据片段(parts)。 在后台合并时,对相同 ORDER BY 键的行进行去重,保留最新版本。用于模拟 UPSERT 语义。 注意:去重仅在后台合并时

By yellowdog