数据库是否使用自己的二进制编码将数据存储在磁盘上?为什么不使用 Google Protobuf?
Do databases use their own binary encodings to store data on disk? Why not use Google Protobuf?
- SQLite 3、MySQL、PostgreSQL 等数据库使用哪些二进制编码将数据保存在磁盘上?
- 如果 Google Protobuf 很好,为什么不使用它来编码并将数据存储在磁盘上?
- GoogleProtobuf / Facebook Thrift 是否只对微服务到另一个微服务的网络通信有用?
- 为什么我们不使用这些第三方二进制编码库在磁盘上存储数据?
[此博客] 讨论了 Protobufs 如何在响应时间上击败 JSON。
我很困惑像protobuf、Avro、Thrift这些二进制编码库是不是只用于网络通信而不用于存储数据到磁盘?
“好”是上下文相关的; protobuf 对于 x-plat 通用数据表示是“好的”,其中数据需要支持 round-trip 意外字段等;这些与数据库面临的问题不同。数据库通常使用基于行布局的自定义 data/memory 布局 - 最快的序列化方法是仅使用 磁盘上完全相同的布局 - 也许使用 mmap; protobuf 不是一个好的候选者,因为它是可变大小的;数据库通常需要恒定大小(ish),因此行在页面内是确定的。添加到事务性等...
另外:protobuf 可以并且已经用于在磁盘上存储数据;只是;通常不作为 RDBMS 的一部分。
- SQLite 3、MySQL、PostgreSQL 等数据库使用哪些二进制编码将数据保存在磁盘上?
- 如果 Google Protobuf 很好,为什么不使用它来编码并将数据存储在磁盘上?
- GoogleProtobuf / Facebook Thrift 是否只对微服务到另一个微服务的网络通信有用?
- 为什么我们不使用这些第三方二进制编码库在磁盘上存储数据?
[此博客] 讨论了 Protobufs 如何在响应时间上击败 JSON。 我很困惑像protobuf、Avro、Thrift这些二进制编码库是不是只用于网络通信而不用于存储数据到磁盘?
“好”是上下文相关的; protobuf 对于 x-plat 通用数据表示是“好的”,其中数据需要支持 round-trip 意外字段等;这些与数据库面临的问题不同。数据库通常使用基于行布局的自定义 data/memory 布局 - 最快的序列化方法是仅使用 磁盘上完全相同的布局 - 也许使用 mmap; protobuf 不是一个好的候选者,因为它是可变大小的;数据库通常需要恒定大小(ish),因此行在页面内是确定的。添加到事务性等...
另外:protobuf 可以并且已经用于在磁盘上存储数据;只是;通常不作为 RDBMS 的一部分。