CLI to manage your SQL database schemas and migrations6 months agohttps://github.com/gh-PonyM/shedShed 是一个使用 SQLModel ORM 和 Alembic 管理数据库模式的命令行工具它允许在 git 仓库中创建和管理数据库模型支持为 Pydantic BaseModel (v2) 导出 JSON 模式可集成到现有 Python 项目中进行迁移管理提供克隆数据库、运行 Alembic 命令和导出 JSON 模式的命令采用特定的文件夹结构和配置来管理迁移
The Database of Faces6 months agohttps://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html人脸数据库(原名'The ORL Database of Faces')包含1992-1994年间的人脸图像。包含40位不同对象的每人10张图像,涵盖光照条件、表情和面部细节的变化。图像为92x112像素、256灰度级的PGM格式,按sX(对象编号)目录组织存放。可通过提供的URL下载压缩的tar文件(4.5MB)或ZIP格式文件。参考论文:《Parameterisation of a stochastic model for human face identification》使用这些图像时必须注明源自AT&T剑桥实验室。
The Write Last, Read First Rule6 months agohttps://tigerbeetle.com/blog/2025-11-06-the-write-last-read-first-rule/TigerBeetle是一个专为财务交易正确性设计的数据库,核心采用账户与转账的双重记账体系。该系统将主数据(存储于Postgres)与交易数据(存储于TigerBeetle)分离,实现独立扩展并满足不同的安全合规需求。TigerBeetle内部交易具有原子性,但跨系统(Postgres与TigerBeetle)的事务组合需通过协调机制保障一致性。系统必须维护安全性原则:一致性(Postgres中每个账户在TigerBeetle中有对应账户,反之亦然)和可追溯性(TigerBeetle中余额为正的账户必对应Postgres中的账户)。TigerBeetle被指定为记录系统(决定账户存在性),而Postgres作为参照系统。'先写参照,后读记录'原则确保一致性:先写入参照系统,再写入记录系统;读取时优先查询记录系统。操作需具备幂等性以应对中断并确保最终完成,可借助Resonate的分布式异步等待等框架实现。应用层通过解析子系统(Postgres和TigerBeetle)响应来强化应用级语义,检测顺序冲突或数据不一致等违规情况。正确性通过精心设计、持久化执行、有序操作和幂等性实现,即使在没有传统事务的情况下也能保障。
Xqerl – Erlang XQuery 3.1 Processor6 months agohttps://zadean.github.io/xqerl/xqerl 是一个用 Erlang 编写的自包含 XQuery 3.1 处理器和 XML 数据库。可嵌入 Erlang 或 Elixir 应用程序,也可独立使用。用户代码使用 XQuery 编写并编译为 BEAM 字节码。支持通过 XQuery 和 RESTXQ 注解定义 REST 端点。目前处于积极开发阶段,尚未稳定,但即将发布稳定版本。通过全部 30,895 个测试用例(跳过 1,823 个可选/未支持案例)。暂不支持模式感知和类型化数据功能以及全文扩展。无图形界面或网页端,专注将 XQuery 转化为可扩展的 Erlang 应用。所有代码需预编译,模块必须预先编译,依赖项自底向上处理。通过特定函数实现数据加载和删除。基于 rebar3 构建,未来计划包括发布包和索引等附加功能。欢迎贡献代码、文档、教程及社交媒体推广。
Listen to Database Changes Through the Postgres WAL6 months agohttps://peterullrich.com/listen-to-database-changes-through-the-postgres-walPostgres WAL(预写式日志)记录数据库的所有变更,是复制、备份和变更数据捕获(CDC)的核心组件。NOTIFY/pg_notify可用于响应数据库变更,但存在单队列瓶颈、大小限制和缺乏重试机制等局限性。WAL机制允许Postgres延迟数据页写入磁盘,从而提升性能并支持复制和时间点恢复等功能。监听WAL变更需将Postgres配置为wal_level='logical',并创建发布和复制槽。复制槽可分为临时型(断开连接自动清理)和持久型(为离线监听者保留消息)。Elixir中的Postgrex.ReplicationConnection可用于监听WAL变更、解码消息并处理心跳检测。WAL消息包含BEGIN(事务开始)、RELATION(模式信息)、INSERT/UPDATE/DELETE(数据变更)和COMMIT(事务结束)。需特别注意重复消息处理,因Postgres在崩溃后可能重发未确认的消息。Walex、Cainophile和Supabase Realtime等工具可基于WAL实现变更数据捕获功能。
Show HN: YaraDB – Lightweight open-source document database built with FastAPI6 months agohttps://github.com/illusiOxd/yaradbYaraDB 是一个智能的、内存优先的文档数据库,支持 WAL 持久化。支持通过 Docker 部署,提供 Linux/macOS 和 Windows 的命令示例。包含 docker-compose.yml 示例文件,便于快速搭建服务。可通过 git clone 和 Python 虚拟环境进行安装。功能特性包括:乐观并发控制、WAL 持久化、软删除、数据完整性、O(1) 快速读取、RESTful API 和 Docker 支持。可使用 curl 或浏览器测试服务器响应状态。遵循 SSPL 许可证,欢迎贡献代码。
Show HN: UnisonDB – B+Tree DB with sub-second replication to 100+ nodes6 months agohttps://github.com/ankur-anand/unisondbUnisonDB是一款专为边缘AI和边缘计算设计的日志原生实时数据库它结合了B+树存储与基于WAL的复制机制,提供强一致性和持久性支持多模态存储(键值/宽列/大对象)、流式复制和实时通知功能针对边缘优先架构优化,显著降低延迟并实现实时响应通过命名空间隔离实现多租户支持,数据与服务共置确保即时响应采用可插拔存储后端设计,支持BoltDB和LMDB引擎基准测试显示其性能优于BadgerDB和BoltDBWALFS作为核心组件,提供高效的随机访问和复制能力引擎层整合WAL日志、内存表和B树结构实现高效读写基于WAL的复制机制支持从任意偏移量进行流式同步和追赶支持原子化多键事务及具备事务保证的大对象处理列感知复制技术可高效同步宽列数据更新UnisonDB无需额外消息总线系统,统一实现存储与流处理功能
$5 PlanetScale is live6 months agohttps://planetscale.com/blog/5-dollar-planetscale-is-herePlanetScale现提供每月5美元的单节点Postgres数据库服务开发分支价格从每月10美元降至5美元单节点数据库可按需垂直扩展可选择切换至具备副本的高可用模式未来将通过Neki(分片式Postgres解决方案)实现水平扩展PlanetScale支持从初创公司到大型网络工作负载的弹性扩展
Waiting for SQL:202y: Group by All6 months agohttp://peter.eisentraut.org/blog/2025/11/11/waiting-for-sql-202y-group-by-allGROUP BY ALL通过自动按非聚合列分组来简化SQL查询SQL标准工作组已接受GROUP BY ALL语法,正式规范尚待发布GROUP BY ALL会扩展为选择列表中的非聚合元素,但无法处理复杂表达式潜在风险包括修改选择列表时可能导致非预期的查询变更Oracle数据库和PostgreSQL已实现GROUP BY ALL功能,PostgreSQL的版本尚待发布
Comparing Integers and Doubles6 months agohttp://databasearchitects.blogspot.com/2025/11/comparing-integers-and-doubles.ht...在系统中比较不同数值类型时,由于精度损失可能导致传递性比较失败。示例SQL查询展示了一个情况:a=b和a=c为真,但由于双精度限制导致b=c为假。哈希连接和优化器可能因这些比较问题产生不同行为,从而导致不一致性。正确的比较方法需要将整数转为双精度浮点数,检查相等性并处理精度损失。Python和SQLLite能正确处理这类比较,而许多其他系统和语言则不能。提出的`cmpDoubleInt64`函数为整型/双精度浮点数的精确比较提供了解决方案。
Branching with or Without PII: The Future of Environments6 months agohttps://neon.com/blog/branching-environments-anonymized-piiNeon推出匿名分支功能,用于在开发环境中屏蔽敏感数据。分支功能允许开发者通过单次点击或API调用创建与生产环境隔离的镜像环境。传统的非生产环境维护方式耗时且易错,常导致数据漂移和模式不匹配问题。Neon的架构将计算与存储分离,实现了高效且经济的分支创建。匿名分支采用静态脱敏技术,用虚拟值替换敏感数据,同时保持引用完整性。未来计划引入动态脱敏以降低存储成本并提升效率。通过Neon API或GitHub Actions可实现分支流程自动化,优化开发和测试流程。
Data-at-Rest Encryption in DuckDB6 months agohttps://duckdb.org/2025/11/19/encryption-in-duckdbDuckDB v1.4 引入了使用 AES-GCM-256 和 AES-CTR-256 算法实现静态数据加密的数据库加密功能。加密范围涵盖数据库主头文件、数据块、预写日志(WAL)及临时文件。密钥管理采用从用户提供密钥派生的安全密钥,并安全存储于内存中。加密对性能影响极小,尤其在使用支持硬件加速的 OpenSSL 时。DuckDB 支持对现有数据库加密、新建加密数据库以及数据库重加密操作。该加密功能显著提升了 CDN 分发和云存储等部署模式的安全性。
Show HN: Onlymaps, a Python Micro-ORM6 months agohttps://github.com/manoss96/onlymapsOnlymaps 是一个使用原生SQL查询进行数据库交互的Python微型ORM库通过Pydantic提供同步/异步查询执行与细粒度类型提示支持主流数据库:PostgreSQL、MySQL、MariaDB、MS SQL Server和SQLite具备连接池和自定义连接工厂功能包含exec、fetch_one、fetch_many和iter等多种查询执行方法支持使用Pydantic模型或其他Python类型进行查询结果的类型验证自动处理事务,并为批量操作提供显式事务支持参数处理包含JSON转换和批量操作功能支持单列/多列查询的多种数据类型,包括复杂类型
B-Trees: Why Every Database Uses Them6 months agohttps://mehmetgoekce.substack.com/p/b-trees-why-every-database-uses-themB树是数据库用于高效查找磁盘数据的基础数据结构,因为磁盘访问速度远慢于内存访问二叉搜索树(BST)在磁盘上效率低下,因为每个节点访问都需要磁盘寻道,I/O开销过高B树通过高扇出特性(每个节点包含多个子节点)解决BST的缺陷,降低树高度并最小化磁盘寻道B树具有自平衡特性,其节点大小设计为匹配磁盘块(通常4KB到16KB),从而优化磁盘I/O性能B树操作(查找/插入/删除)具有对数时间复杂度,能高效处理大规模数据集MySQL、PostgreSQL、SQLite和MongoDB等主流数据库采用B树(或其变种B+树)作为索引结构B树通过有序键值和叶子节点链表高效支持范围查询B树的权衡点包括节点分裂/合并时的写放大问题,以及缓存节点带来的内存开销对于写入密集型场景LSM树更优,而内存数据库通常选择哈希索引或跳表凭借性能、效率与范围查询支持的完美平衡,B树仍是磁盘存储领域的主导结构
Why Strong Consistency?6 months agohttps://brooker.co.za/blog/2025/11/18/consistency.htmlAWS最初在EC2控制平面中使用基于语句复制的MySQL数据库,面临高成本操作和最终一致性问题。Aurora MySQL等托管数据库简化了运维,但最终一致性仍是扩展读操作时的挑战。最终一致性会导致应用程序员遇到'时间倒流'等问题,迫使他们采用复杂低效的临时解决方案。应用开发者面临类似问题,最终一致性会引发工作流错误并降低只读副本的有效性。最终一致性使只读副本在读取-修改-写入操作中效果降低,从而增加了扩展难度。Aurora DSQL通过基于日志的系统跟踪更新并同步副本,确保所有读取操作的强一致性。DSQL的强一致性消除了处理最终一致性的复杂性,简化了应用开发流程。虽然最终一致性有其适用场景,但由于引入的复杂性,通常不适合服务或API场景。
SQLite as an Application File Format6 months agohttps://sqlite.org/appfileformat.htmlSQLite数据库文件因其多功能性和高效性,成为优秀的应用程序文件格式应用程序文件格式用于持久化应用状态或在程序间交换信息三种常见应用格式类别:完全自定义格式、多文件集合格式、封装多文件格式SQLite提出了第四种类别:将SQLite数据库文件作为应用程序文件格式使用SQLite数据库能以单个文件高效存储复杂数据结构采用SQLite作为应用文件格式的优势包括:简化开发、单文件文档、高级查询语言支持SQLite提供可访问内容、跨平台兼容性和原子事务特性增量更新、可扩展性和性能优化等特性使SQLite更具优势SQLite支持多进程并发访问和多种编程语言调用使用SQLite能构建更优质的应用程序,其数据结构清晰、简洁且定义明确
Show HN: DB Pro – A Modern Desktop Client for Postgres, MySQL, SQLite and LibSQL6 months agohttps://www.dbpro.app/DB Pro 是一款现代化的桌面数据库管理应用,拥有直观的用户界面。功能包括可视化变更审查、内联数据编辑、原生SQL编辑器以及完整的数据库活动日志。可视化模式探索器和自定义表标记功能,帮助用户导航和组织数据库。支持多种数据库,如PostgreSQL、MySQL、SQLite、Supabase、Turso、MongoDB、MariaDB、Microsoft SQL Server、Redis和Neon。产品路线图包含更多功能和改进计划。提供三种方案:免费版、个人版和团队版,具有不同的功能和支持级别。免费版本可供下载,无需提供信用卡信息。
DuckDB 1.4.2 LTS6 months agohttps://duckdb.org/2025/11/12/announcing-duckdb-142DuckDB 1.4.2 LTS版本发布,包含错误修复与性能优化修复了数据库加密漏洞并新增可选日志记录器/分析器功能通过Iceberg扩展实现完整写入支持Iceberg扩展现已支持insert/update/delete语句日志改进包括记录HTTP请求耗时及访问分析器输出分析器新增深度查询执行分析指标性能优化包含WAL索引删除缓冲及加速数据库分离新增Linux/macOS系统对Vortex文件格式的支持修复了多个安全漏洞、崩溃问题、内部错误、错误结果及功能退化
Plinko PIR Tutorial6 months agohttps://vitalik.eth.limo/general/2025/11/25/plinko.html私有信息检索(PIR)允许客户端查询数据库而不暴露其读取内容Plinko协议将PIR的通信量和服务器计算开销从O(N)降至O(√N)经典双服务器PIR方案依赖数据子集的异或运算,需信任至少一个服务器Plinko协议包含生成提示的初始化阶段和利用可逆PRF提升效率的查询阶段备份提示机制通过防止提示复用和允许数据集更新来保障隐私具体效率分析展示了Plinko在以太坊状态树等大型数据集的应用价值TreePIR作为替代方案,使用可穿刺PRF实现对数级通信复杂度PIR协议的理论下限表明服务器端计算仍存在优化空间
Free Database with 4B+ reverse DNS records6 months agohttps://ip.thc.org/docs/bulk-data-access数据库每月以CSV和Parquet格式发布推荐使用Parquet格式,因其解压后体积更小最近数据更新于11月30日总记录数:47.5亿条压缩后大小:Parquet格式(37GB),CSV格式(27GB)解压后大小:Parquet格式(55GB),CSV格式(187GB)