gpt4 book ai didi

java - 哪种键/值对序列化格式最适合在 RDBMS 中进行索引?

转载 作者:行者123 更新时间:2023-12-02 08:37:29 33 4
gpt4 key购买 nike

我有一个存储在数据库中的特定对象类型。此类型现在获取与其关联的附加信息,这些信息在实例之间的结构会有所不同。尽管对于实例组来说,信息的结构是相同的,但该结构仅在运行时才知道,并且会随着时间的推移而改变。

我决定只向表中添加一个 blob 字段,并以某种序列化格式存储键/值对。根据您的经验,哪种格式最可取?

在我的应用程序上下文中,存储空间是次要的。我希望有一个特定的操作能够快速进行,即查找给定的一组键/值对的正确实例(因此它是一种可变字段复合键)。我想这意味着,是否有一种格式特别适合典型的数据库索引?

此外,我可能有兴趣寻找一组共享同一组键的实例(如果您愿意,可以是一个临时“类”)。

我用 Java 编写此内容,并将其存储在各种类型的 SQL 数据库中。我关注的是 JSON、GPB 和 native Java 序列化,更喜欢跨语言格式。我可以想到两种基本策略:

  • 将值集存储在表中,并将外键添加到包含该组键的单独表中
  • 将键/值对存储在表中

最佳答案

如果您的目标是利用数据库索引,则将非结构化数据存储在 BLOB 中不会有效。从 RDBMS 的角度来看,BLOB 本质上是不透明的。

我从您的描述中了解到,数据的非结构化部分采用与对象关联的任意一组键值对的形式,对吧?好吧,如果所有键的类型相同(例如它们都是字符串),我建议简单地创建一个包含(至少)三列的子表:键、值和父级的外键对象在其表中的行。由于键将作为常规列存储在数据库中,因此可以有效地对它们建立索引。索引还应包含父表的外键。

一种完全不同的方法是查看“无模式”数据库引擎,例如 CouchDB ,它是专门为处理非结构化数据而设计的。我对此类系统的经验为零,并且我不知道应用程序的其余部分是否适合这种替代存储策略,但可能值得研究。

关于java - 哪种键/值对序列化格式最适合在 RDBMS 中进行索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1147391/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com