NoSQL数据库在服务器端是如何存储数据的?
NoSQL数据库底层存储逻辑与Firestore实现说明
核心疑问直接解答
你提到的「NoSQL数据像.txt文件一样只是换成.json/.xml格式存储为普通文本文件」是典型的入门认知误区。所有生产级NoSQL数据库都不会采用这种方式存储实际业务数据,纯文本格式的读写性能、压缩率、索引支持能力完全无法满足高并发、大数据量的数据库使用需求。
通用NoSQL数据库底层存储逻辑
- 主流NoSQL数据库都会采用自定义的二进制格式存储数据,相比纯文本格式,二进制格式的读写速度快数倍到数十倍,存储空间占用仅为纯文本的几分之一,同时还能支持更高效的索引结构和事务特性
- 数据库落地到磁盘的不是单文件,而是一整套文件组,通常包括:主数据文件、写前日志(WAL)文件、索引文件、元数据管理文件、临时运算文件等
- 部分轻量型NoSQL工具会支持
.json/.csv等格式的导入导出,但这只是数据交换的格式,运行时读写的仍然是优化后的二进制文件
以常用的开源文档型NoSQL MongoDB为例,默认使用WiredTiger存储引擎,落地到磁盘的是
.wt后缀的二进制文件,直接打开无法看到可读的JSON结构,数据实际以二进制JSON(BSON)格式编码存储
Firebase Firestore 底层存储机制
作为谷歌托管的云原生NoSQL数据库,Firestore的存储逻辑是分层设计的,对外不暴露底层文件细节,公开可验证的底层逻辑如下:
- 底层存储底座:Firestore构建在谷歌自研的Spanner分布式存储系统之上,数据以多副本分片的形式存储在谷歌全球数据中心的磁盘集群中,采用Spanner自定义的二进制KV存储格式,支持全局强一致性
- 逻辑模型映射:开发者使用的集合、文档是上层逻辑抽象,单个文档的字段、类型、值会经过编码后写入底层Spanner的KV结构中,不会为每个文档生成独立的
.json文件 - 备份与归档:Firestore自动生成的冷备份数据采用谷歌内部的归档存储格式存放,同样不会以纯文本格式存储
- 端侧缓存:客户端SDK生成的本地离线缓存也是二进制格式文件,不会直接存储可读的JSON结构
内容的提问来源于stack exchange,提问作者q.q
相关产品推荐
相关产品推荐

