DDIA第八章: - 事务 (Transactions) 核心思想: 事务是一种机制,用于将多个读写操作组合成一个逻辑单元,以简化应用程序在面对并发和各种故障(硬件、软件、网络)时的编程模型。它提供安全保证,让应用可以忽略某些错误和并发问题。
DDIA第七章: - 分区 (Partitioning) 核心思想: 当数据量或吞吐量增长到单机无法处理时,需要将数据分散到多个节点上。这种将大型数据库分解为多个小型、独立部分的过程称为 分区 (Partitioning) 或 分片 (Sharding)。
DDIA 第五章:编码与演化 核心主题:探讨数据编码格式的选择如何影响系统的可演化性(evolvability),特别是在需要支持滚动升级、新旧代码版本共存的场景下,如何通过兼容性设计(向后兼容、向前兼容)来适应模式(schema)的变更。
概念 models 1. 核心目的与 BaseModel 目的: Pydantic 模型的主要目的是定义清晰、结构化、类型安全的数据模式。它们用于: 数据解析 (Parsing): 将原始数据(如字典、JSON)转换为类型化的 Python 对象。 数据验证 (Validation): 确保输入数据符合定义的类型和约束。 数据序列化 (Serialization): 将 Python 对象转换回字典或 JSON 等格式。 编辑器支持: 提供出色的自动补全、类型检查和重构能力。 BaseModel: 所有 Pydantic 模型都应继承自 pydantic.BaseModel。这是所有魔法发生 …
DDIA 笔记:第四章 - 存储与检索 核心问题: 数据库如何在内部存储数据,并在需要时高效地检索数据? 引言: 数据库两大基本功能:存储数据、检索数据。 本章关注数据库内部的存储与检索机制,即 存储引擎 的工作原理。 理解存储引擎有助于选择合适的引擎并进行性能优化。 重点区分 事务处理 (OLTP) 和 分析处理 (OLAP) 优化的引擎。 一、 驱动数据库的数据结构 1. 最简单的数据库 (Bash 示例) db_set key value: 将键值对追加到日志文件末尾。 db_get key: 扫描整个文件,找到键最后一次出现的位置并返回其值。 优点: db_set 追加写入非常快。 …
Linux网络包接收过程:深入理解高性能网络编程的基石 深入理解Linux底层,尤其是网络包接收过程,是解决线上性能瓶颈的必备技能。本文将以图解的方式,带你深入Linux内核,揭秘网络包从网卡到达recvfrom的整个旅程。
DDIA 第二章:定义非功能性要求 记录 DDIA 一书的阅读笔记 引言:功能性需求 vs. 非功能性需求 功能性需求 (Functional Requirements): 应用程序必须提供的功能(做什么)。例如,社交网络应用需要允许用户发帖、关注其他用户、查看时间线等。 非功能性需求 (Nonfunctional Requirements): 应用程序应该如何运作(怎么做)。例如,应用应该快速、可靠、安全、可扩展、易于维护等。 本章重点关注几个重要的非功能性需求: