我在数据库中存储一个表示一组属性的JSON字符串。在后面的代码中,我导出它并将其用于某些自定义逻辑。基本上,我只将它用作存储机制。我理解XML更适合这种情况,但我读到JSON更快,更受欢迎。
如果不打算在客户端使用字符串,那么使用JSON是一个好习惯吗?
答案 0 :(得分:8)
JSON是存储结构化数据的完美有效方式,比XML更简单,更简洁。我不认为使用它是一种“不好的做法”,因为只要你理解并且可以使用XML,就会有人使用XML。
答案 1 :(得分:5)
这是不是很好的做法我不能说,但它让我感到奇怪。在SQL数据库中拥有XML字段至少是可查询的(SQL Server 2000或更高版本,MySQL和其他),但通常是元数据的最后手段。
JSON通常是JavaScript和后端之间的载体,而不是存储本身,除非你有一个JSON后端document orientated database,例如CouchDB或SOLR,因为JSON非常适合自己存储文件。
不是说我不同意将JSON用作XML上的简单(即,不是序列化引用)数据序列化程序,但我不会仅仅为了它而进入JSON vs XML rant :)
如果您没有使用JSON在两种语言之间的可移植性,并且您是肯定的,那么您永远不会从SQL查询数据,您最好使用.NET的默认序列化。
答案 2 :(得分:4)
您不是唯一一个使用JSON进行数据存储的人。 CouchDB是一个面向文档的数据库,它使用JSON存储信息。他们最初将该信息存储为XML,然后切换到JSON。查询是通过良好的旧HTTP完成的。
顺便说一句,CouchDB最近受到了一些关注,并得到了 IBM 和 Apache Software Foundation 的支持。它是用Erlang编写的,并且承诺很多(恕我直言)。
答案 3 :(得分:2)
是的,我认为JSON很棒。它是一个开放标准,可以被任何编程语言使用。大多数编程语言都有库来解析和编码JSON。
答案 4 :(得分:2)
JSON只是一种像XML这样的标记语言,由于其规范性更强,因此规模更小,生成和解析速度更快。因此,从这一方面来说,如果您需要特殊的结构化标记(并且您绝对确定无法使用表和/或最佳解决方案),则可以在数据库中使用。
但是,您没有说明您正在使用的数据库。如果是SQL Server 2005或更高版本,则数据库本身在处理XML时具有广泛的功能,包括XML数据类型,XQuery支持以及作为执行计划的一部分优化XQuery表达式的能力。因此,如果是这种情况,我会更倾向于使用XML并利用数据库的设施。
答案 5 :(得分:1)
请记住,JSON具有XML作为后端数据存储所具有的所有相同问题;也就是说,它决不会取代关系数据库甚至是固定大小的二进制格式。如果您有数百万行并且需要随机访问,那么您将遇到与使用XML的JSON相同的基本性能问题。我怀疑你是否打算将它用于这种数据存储方案,但你永远不知道......已经尝试过陌生的东西:)
答案 6 :(得分:0)
JSON更短,因此它将在数据库中占用更少的空间。我可能会使用它而不是XML或编写我自己的格式。
另一方面,搜索匹配会很糟糕 - 你将不得不使用“json喜欢'%somevalue%'”这将会非常缓慢。这与任何其他文本存储策略(包括xml)的限制相同。
答案 7 :(得分:-1)
您不应使用JSON或XML在关系数据库中存储数据。 JSON和XML是序列化格式,可用于将数据存储在文件中或通过网络发送。
如果要存储一组属性,只需为其创建一个表,每行都有一个属性。这样您就可以使用普通的SQL查询数据。