MongoDB的schema验证

MongoDB、INM语法分析的区别

简单分为insert、query。

插入

MongoDB的语法分析只需要分析当前操作为插入;数据部分为bson格式,可以直接通过K/V存储。

而INM不同,语法分析首先分析出插入操作,然后需要将插入的数据内容分析成对应数据结构,再临时插入到对应的缓冲区,并更新索引。

查询

MongoDB的语法分析也只需要分析出查询操作,数据部分交给存储引擎去处理。

而INM: query expressions construct xxx
MongoDB的schema验证

MongoDB运用schema验证

如果保留INM的语法层,意味着数据会被分析成数据结构;

那么肯定需要序列化成bson的过程;

如果想要去掉序列化->从一开始就插入bson格式的数据。

插入

上述分析下,我们直接插入bson格式的数据。

在考虑MongoDB的模式验证下,有两种方案,都是基于scheme,生成document instance的。

1.validator 通过对collection预先设置来规范文档实例。
2.noje.js的mongoose 是一种对象模型接口,定义了schema、model、instance的方法。

查询

此时数据格式已经是bson了,原来INM语法层那套是根据缓冲区的path或者名字索引数据库,肯定不能沿用那套。

那么query construct那套就得对应MongoDB重新编写语法分析。将INM的查询语法对应到MongoDB的查询方法。