MongoDB的schema验证
MongoDB、INM语法分析的区别
简单分为insert、query。
插入
MongoDB的语法分析只需要分析当前操作为插入;数据部分为bson格式,可以直接通过K/V存储。
而INM不同,语法分析首先分析出插入操作,然后需要将插入的数据内容分析成对应数据结构,再临时插入到对应的缓冲区,并更新索引。
查询
MongoDB的语法分析也只需要分析出查询操作,数据部分交给存储引擎去处理。
而INM: query expressions construct xxx
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的查询方法。