这个问题 MongoDB 官网上自己就有说明:https://www.mongodb.com/resources/basics/unstructured-data以下内容纯属个人观点。结构化和非结构化数据确实是客观存在的,但这个所谓“更适合”其实只是一个商业口号,你会发现它举的那些例子,表面上看是非结构化的,但最后存储的时候还是得转换为某种结构 —— 不然你打算怎么读取?你可以说传统的 RDBMS 的二维表的形式存在一些弊端(比如说对扩展不利),但非得像 MongoDB 宣传的那样说只有“二维表才叫结构化”那就有点儿扯淡了。换而言之,现实中确实存在非结构化的数据,但除非你是原封不动的单纯存储,否则但凡你要在程序中做处理、做分析、做运算,那么势必得把它转换成某种固定结构,哪怕这种结构它不是二维表,它也一定是有结构的。做 Spider/ML/LLM 的同行们应该都熟悉一个步骤,叫“数据清洗”,这里面很重要的一点就是把非结构化数据转换为结构化数据,不然后续的流程就没法做了。这种转换也未必都是转换成二维表的形式(即 MongoDB 所宣传的“结构化”),但总归是有结构的。当然了,这个问题 MongoDB 自己也意识到有点儿牵强了,所以它整了个新名词叫“半结构化”。
这个问题 MongoDB 官网上自己就有说明:
以下内容纯属个人观点。
结构化和非结构化数据确实是客观存在的,但这个所谓“更适合”其实只是一个商业口号,你会发现它举的那些例子,表面上看是非结构化的,但最后存储的时候还是得转换为某种结构 —— 不然你打算怎么读取?
你可以说传统的 RDBMS 的二维表的形式存在一些弊端(比如说对扩展不利),但非得像 MongoDB 宣传的那样说只有“二维表才叫结构化”那就有点儿扯淡了。
换而言之,现实中确实存在非结构化的数据,但除非你是原封不动的单纯存储,否则但凡你要在程序中做处理、做分析、做运算,那么势必得把它转换成某种固定结构,哪怕这种结构它不是二维表,它也一定是有结构的。做 Spider/ML/LLM 的同行们应该都熟悉一个步骤,叫“数据清洗”,这里面很重要的一点就是把非结构化数据转换为结构化数据,不然后续的流程就没法做了。这种转换也未必都是转换成二维表的形式(即 MongoDB 所宣传的“结构化”),但总归是有结构的。
当然了,这个问题 MongoDB 自己也意识到有点儿牵强了,所以它整了个新名词叫“半结构化”。