MongoDB2.6 新特性
MongoDB 2.6 已经在今天发布,当然,关注MongoDB的同志自然知道这个消息。
整个MongoDB2.6,个人觉得认证系统是一个重新设计的系统。当然,MongoDB 2.4.6开始,就已经在尝试新的基于Role的认证方式了,但是真正的成熟还是在2.6.0这个版本。
什么是基于角色Role的认证系统?
在以往的MongoDB中,官方一直推荐MongoDB应该在一个Trust的环境下运行,对于认证和安全性上的考虑是不充分的。
(MongoDB的安全性和读写的完整性以前一直被人诟病,WriteConcern解决了写数据的安全性,这次的RoleBase的认证机制,在一定程度上提高了MongoDB的安全性)
现在在MongoDB中创建的User,除了有用户名,密码等传统属性之外,还有一个Role的概念。
每个Role的操作权限是不同的,而且,根据细化的配置,可以将每个Role的权限定义的非常详细,
Role可以查询,修改某个数据库,某个数据表,都可以做到小粒度的定义。
每个用户可以同时拥有多个Role,这样的话,管理员可以对于各个用户的权限做到非常精确的控制了。
MongoDB的 具体实现 Role:
每个Role可以有多个Privilege,每个Privilege指定了可以访问的资源(可以指定数据集,数据库,精确到具体的某个数据集)
对于资源的可以执行的操作(Action),例如 数据集的查找 或者 更新。对于各种的操作已经做到非常小的粒度的细化了。
例如 添加用户 和 删除用户 已经是两个操作了(Action),而不是通常理解的,增删改是同样的操作。
(当然,可能也有人认为如此细化对于管理者来说也是一种负担。不过一个Role一旦精心设计之后,就可以分配给不同用户,一劳永逸了)
TextSearch全文检索
这个功能在 2.4.6里面就有的功能,这次的变化是,将这个TextSearch的放入了Aggerate里面了。
换句话说,原来的全文检索的结果是孤立的,现在可以作为聚合检索的一个部分了,文本检索的结果可以作为其他聚合操作的输入数据。
作为MongoDB5年里程碑的这个版本,还有其他很多对以往功能的增强。
作为一个长期观察MongoDB的人来说,我个人认为,现在是大家可以尝试MongoDB的一个时间点了。
2.6.0以前的版本的确有很多诟病,除了前面说过的读写的安全之外,还有很多设计上的问题。
经过2.4的很多演化后,很多东西都定型了:
主从(Master-Slaver)模型 被 Replication模型代替
加入基于Role的认证后,可以自定义角色(当然,系统也有一些内置的角色)
全文检索(很遗憾,不支持中文)的强化 具有特色的 地理聚合(很多处理地理坐标的内置函数)
TLL数据集(数据集里面的记录会慢慢自动删除掉,有点缓存的意思)Capped数据集(固定大小的数据集,在存储和读写上提高效率,牺牲灵活性)
Sharding支持了ShardKey
索引的内容丰富了不少,特别是有了text属性的索引,对于全文检索的帮助很大
最后,我想找个喜欢研究 C# MongoDB 的人,能够用业余时间和我一起将 MongoDB 的管理工具做下去
https://github.com/magicdict/MagicMongoDBTool
如果大家都愿意参与开发,我可以找台服务器,运行一些MongoDB的数据库做测试用。
据说在国外MongoDB的DBA很热,国内的情况不乐观,学好英语,如果有机会可以去国外找个机会。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架