有哪些数据库支持 Protocol Buffers?

37

是否有任何数据库在SQL或NoSQL领域支持协议缓冲区?(支持可能意味着各种各样的事情,但希望包括能够在协议缓冲区字段上建立索引。)


花了15分钟在谷歌上搜索,没有找到任何积极的结果。Hadoop HBase在服务通信中使用协议缓冲区,并具有Thrift客户端API,但在数据存储层面上没有任何东西。Hadoop Avro与PB处于相同的领域,也许我们将来会看到它与HBase集成? - mdma
为什么不使用关系型数据库(将每个值放入其自己的列中,而不是所有值都放在一列中)? - Brendan Long
@Brendan:当然,那是一种方法。我大多数的惊讶是没有任何一个noSQL数据库有一个开箱即用的解决方案,尽管有些像MongoDB一样存储类似的二进制blob。 - Rob Lachlan
1
你是通过考虑对数据模型进行版本控制而不是删除来满足这个需求的吗?我正在考虑这样做。如果不是,那是因为HBase行可以有任意数量的列,这种情况下Protocol Buffers非常适合。尽管如此,我打算以编程的方式实现这一点。 - Ravindranath Akila
@RavindranathAkila 不,我没有考虑数据模型的版本控制,但这是一个很好的观点。更多的是,我在寻找一种可移植的数据交换格式,如果数据库本身支持这一点那就太好了。 - Rob Lachlan
3
由于它是专有的,所以它并不能真正地帮助你,但是谷歌的F1数据库支持像您设想的Protocol Buffers。我不确定是否有任何公共数据库实现了类似的东西。 - dimo414
5个回答

8

ProfaneDB:http://profanedb.gitlab.io

“ProfaneDB是协议缓冲区和RocksDB之间的gRPC接口”

P.S: 虽然这个问题是10年前提出的,但我仍然认为它非常相关,特别是随着gRPC的崛起。希望这能有所帮助。


5

我不知道是否有类似的解决方案(并不是说它们不存在,只是我不知道),但也许值得讨论一种替代策略以及其优缺点。

通常情况下,您需要存储协议缓冲区的序列化版本,并以某个特定键(例如唯一标识符)进行索引。然后,您可以为指向该唯一标识符的其他有趣字段构建二级索引。这样做的想法是,您需要像这样的显式索引才能扩展超出提供任意索引的系统。这显然会带来一系列新问题(例如陈旧的任意索引)。


2
为什么有人想要将键和其他实体打包到protobuf中,而不是让任何语言都可以使用原始类型进行数据库索引等操作。它在其目的上运行良好,但这并不意味着它应该被用于任何不合理的地方。 - mamu
如果您想在多台计算机上使用数据库,您可能需要自己处理辅助索引,而不是依赖某些数据库软件来为您完成。 - allenporter
GCP BigTable支持基于键/值的索引,可用于protobuf情况下,在这种情况下,您可以在特定行键(唯一标识符)上进行索引(如果这是您要寻找的解决方案)。 - Anamika Modi

3

ClickHouse最近增加了对protobuf消息的支持。


2

2
你在哪里看到的?Google内部的Spanner支持Protobuffers,但Cloud Spanner团队表示他们目前没有支持原生Protobuffers的计划。 - normmcgarry

2

是啊,我也不知道为什么它被放弃了。 - Ravindranath Akila

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接