从二进制转换为字符串然后查询int值

时间:2016-06-10 08:15:55

标签: json mongodb binary

我知道从二进制转换为字符串是一种缓慢且昂贵的操作。

我们的项目需要在大数据解决方案上密切建模,将采用传入的二进制数据流。

大多数大数据解决方案建议使用NO SQL数据库,如Mongo或Raven,并将数据解析为JSON,以便以后更容易查询......这就是我感到困惑的地方。我认为它仅适用于非结构化数据的JSON。

传入的数据已经是半结构化的,但忽略了这一点,如果我将其转换为JSON,那么肯定是二进制到字符串转换,并且在发生这种情况时我会承受延迟的惩罚吗?如果我想查询int值,现在是字符串,我必须再次将它们转换回来。

据我所知,JSON将比转换更快地映射可能的值。

如果我将二进制数据转换为JSON以便于处理(可读性/维护等),但随后需要查询数值(最初以二进制格式查询),那么我肯定要进行两次转换(二进制到字符串,然后字符串回二进制)?或者,当我们在JSON中查询数字值时,是不是将其转换回二进制文件?

2 个答案:

答案 0 :(得分:2)

MongoDB实际上使用BSON数据进行通信,因此它已经是二进制数据。您可以在应用程序中显式读取它,而无需“正确”解析JSON。 然而,即使你愿意,我相信“惩罚”足够小,可以忽略不计。

记住 - Premature optimization is the root of all evil - 你现在确实这样做了。

答案 1 :(得分:0)

与互操作性和查询的增益相比,序列化/反序列化的成本很小。

例如,如果您要使用Azure DocumentDB(https://azure.microsoft.com/en-us/services/documentdb/),将二进制属性转换为其代表性的JSON类型(int,string)将使您能够更好地查询它(范围查询,空间查询)等) - https://azure.microsoft.com/en-us/documentation/articles/documentdb-sql-query/

(完全披露我在微软的DocumentDB上工作 - 很高兴随时与1对1聊天!)