cnodejs.org 目前用的数据库是什么?
mongodb
@coolicer 那我可以理解为 Mongodb 优于 Redis吗?
Mongodb 主要做数据持久化, Redis 主要做程序外部缓存。并不具有可比性~
楼上正解
@x-web 明白了,谢谢!
redis:从功能上来说是一个纯粹的key-value存储(不可以对value进行搜索),另外有一些pub/sub的功能,另外由于它有很强的事务操作能力(比如mulit().set(…).expire(…).exec() ,可以原子化执行一系列操作),还有自动timeout存储的功能(可以设置一些key在多少时候expire),因此它非常合适一些缓冲和临时存储。
mongodb:它是最接近sql的一种nosql,虽然也是key-value,但它有强大的搜索value的功能,可以对value的各种字段查询进行各种方式的查询(比如:摸个数组属性里面有某个值等等),还可以进行集合操作,map/reduce操作,很多sql种很难进行的查询,在mongodb中可以轻松搞定。但是它最大的缺陷是: 1、没有事务:只能使用mongodb只带的很多原子的update语句,比如update({_id:’’}, {$inc: {…}, {$push:{…}}}),在一个collection范围内尽量做成原子操作,但是跨collections就不可能。 2、不能join,每个collection(相当于sql中的表)都是一个独立世界,collection之间没有办法交流。 所以我的理解就是,mongo对于原型系统或者不严肃系统(不和钱打交道)非常合适,和nodejs是绝配,尤其是它的查询表达式就是js的对象,这对写查询语句非常方便,但是不太合适比较严肃的电子商务系统就不合适。
以上个人观点,供参考。:)
现在是 mongodb,其实 mongodb 没有带来什么优势。正经的开发还是用 mysql 吧
@ron-liu 非常感谢这么详细的解答,学习了🙏🏻
其实我觉得mongodb的好处之一就是可以把sql操作变成js对象的操作,学习成本低,好入门
来自炫酷的 CNodeMD 越来越喜欢material design😁
@XGHeaven 我反而觉得mysql好入门,毕竟如果大学是计算机相关专业都学过数据库这门课,当然,可能我学得不深,基本的做增删改查还是可以的
@kgent 不能比呀
@alsotang mysql 的orm,视乎没有比mogoose好用吧。
@XGHeaven 真的,你去学下sql,要不了多少时间,常用的mysql,资料多,坑少,至于mongo我用过1,2次就不想用了,可能鼓吹前端js全栈都是高手吧,用了下mongo并没有感觉js在这里有什么方便和让我愉悦之处,搞了半天都在解决坑去了,如果你爱折腾当我没说吧
@artisan 好吧,你说的也是对的。用mongo可能更多的还是一种新鲜感,而且配置比较简单。SQL确实也挺简单的,只能说这更多是要看个人的喜好了~~
redis适合一层的kv结构和队列 mysql适合多个互相关联的平面规整的数据结构,就是传说中的二维表 mongodb适合嵌套的多层次结构的不规整的数据, 比如分级权限设置