首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数据库中存储Dictionary<string,string>

在数据库中存储Dictionary<string,string>
EN

Stack Overflow用户
提问于 2014-01-10 19:02:46
回答 3查看 10.7K关注 0票数 7

在我的代码中的某个时候,我正在创建一个类型为Dictionary<string, string>的字典,我想知道在数据库中存储它的最佳方法是将它转换为字符串,然后再返回到字典中。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-10 19:06:05

如果您确实希望将整个字典存储为单个字符串,那么可以将字典序列化为JSON (或XML),并将结果存储到数据库中。

票数 4
EN

Stack Overflow用户

发布于 2014-01-10 19:14:04

这里有许多选择。

  • 您可以走规范化路线,使用带有键/值对列的单独表。
  • 有些数据库为您提供了与您所需的数据类型类似的数据类型。PostgreSQL有一个hstore类型,您可以在其中保存任何键值对,而MS有一个XML数据类型,也可以在插入之前对数据进行简单的调用。
  • 如果没有这类特定于数据库的帮助,您只需使用文本或BLOB列并使用DB友好格式(如JSON、XML或特定于语言的序列化格式)序列化字典。

所作的权衡如下:

  • 带有键/值列的单独表可以进行昂贵的查询,而且通常是一个PITA,但是您可以获得最大的查询灵活性,并且可以跨数据库进行移植。
  • 如果使用数据库驱动的字典类型,则在查询中得到支持(即“选择存储在字典中的属性与特定条件匹配的行”)。否则,您将选择程序中的所有内容并进行筛选,但是
  • 除非您编写了一个中间层,将其抽象出去,否则您将失去数据库的可移植性,而且您的代码中的数据操作也会变得容易(因为“工作”就像数据库中有一列包含了这些数据一样)。

NoSQL数据库是"文献导向“,它正是用于这种类型的存储的。根据您正在做的事情,您可能需要考虑一些选项。MongoDB是一个很受欢迎的选择。

正确的选择取决于对数据的查询模式和其他非功能问题,如数据库支持等。如果您扩展了需要实现的功能,我可以扩展我的答案。

票数 8
EN

Stack Overflow用户

发布于 2014-01-10 19:13:56

你有几个选择。您可以像@M4N所提到的那样,将对象序列化为XML或JSON。您还可以创建至少两个列的表:一个列表示键,另一个列表示值。

这实际上取决于您的域模型是什么样的,以及您需要如何管理数据。如果字典值或键发生变化(IE重命名、更正等),并且需要在许多依赖于数据的对象中反映,那么创建一种直接映射到字典的查找表可能是最好的。否则,序列化数据将是性能最好的选项之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21052318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档