V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

猿们,还记得前几年火热的 nosql 吗?

  •  
  •   mb135 · 3 天前用 Android 发布 · 7327 次点击
    那时候多少招聘都要求 nosql,好像带上 nosql 不能彰显公司的逼格,简历也同样。多少网站的 CTO 出来现身说法,控诉吃人的 SQL 旧社会,一把鼻涕一把眼泪的分享换成 mongodb 的美好新生活。

    现在呢?还不是乖乖的换回传统的 sql 数据库。nosql 有他的优点,但不是革命者,只是点缀。现在炒的火热的前端框架同样如此
    第 1 条附言  ·  3 天前
    当年 xml 不管要革 HTML 的命,还要革 sql 数据库的命,当时好多博客论坛程序标榜无数据库,使用 xml 储存数据,sql 的命好苦,好多新技术要革他的命
    79 回复  |  直到 2018-01-16 08:51:22 +08:00
        1
    mb135   3 天前 via Android   ♥ 5
    xml+xslt 革 HTML 的命听说过没? CSDN 还真这么做过,那时候打开帖子都是 xml 后缀的网址,当时感觉逼格好高啊。

    生成真静态听说过没?那时候连论坛这种高交互性的网站都把生成真静态当成卖点,仿佛数据库就是原罪,sql 数据库倒了八辈子霉,整天被人革命。

    还有缓存热,恨不得把整个页面都给缓存了,程序员开个博客也使用各种缓存,大缓存套小缓存,搞得打开一篇文章都得卡半天,计算资源全耗在缓存上了。

    现在又有个人博客程序拿大前端 spa 当卖点的,是不是很熟悉的味道?哦,对了,在十年前这叫胖客户端
        2
    dtysky   3 天前 via Android   ♥ 8
    这叫螺旋上升,条件有了,以前做不好的就可以做好了

    至于理念么,工程界玩的大都是学界上个阶段的东西,没什么好说的,很多年翻来覆去也很正常

    需求才是一切,需要什么用什么
        3
    chenqh   3 天前
    现在大部分公司也是用的 nosql 吧,毕竟用 mysql 来搞海量数据很多公司都搞不定的吧,至于 newsql,现在还在发育阶段吧,反正我看着 mysql 分库分表,真的一点想法都没有,完全不知道怎么搞
        4
    WinMain   3 天前 via iPhone   ♥ 8
    现在 nosql 不是没人用,而是用的太多。。。以至于没必要在要求里面写了,我觉得是。😄
        5
    mb135   3 天前 via Android
    @chenqh nosql 只是点缀,没有革掉 sql 的命,只是用来存储数据量大逻辑性不强的东西。业务的总体架构,还是围绕着 sql 数据库进行
        6
    WispZhan   3 天前
    都是一群别有用心和半瓢水的人。

    说别有用心,是想乘火打劫。
    说半瓢水,是什么实际应用场景不考虑,只想蹭热度,盲从追新。
    ---
    和这几年微服务和容器不一样的么?!
    连自己的应用规模都不考虑,就直接上µ。
    连监控和部署都没有,就直接跳µ。
    连业务领域都没有正确划分就想上µ。
    ---
    发现很多公司或者某些人,平时连设计都没有,整天就想蹭热度,涨身价。特别是创业公司和小公司特别多。
        7
    codermagefox   3 天前   ♥ 13
    我是萌新,我赞同楼主的观点,但是不同意楼主的态度.
    在技术上楼主肯定比我高很多个层级,我也没法评判 SPA 是不是就是未来,但是 SPA 这种新技术的出现是有意义的.
    不管什么行业,什么技术,都需要足够的试错.
    你说 nosql 从火热变得无人问津,这说明还是已经有人做出了改变,尝试过,不行,才换回去的.
    你说 xml+xslt 革 HTML 的命,CSDN 也已经尝试过,不行,才换回去的.

    新技术的产生你可以说是炒作,可以说是过热,但是我反对你说业界纯粹是拿它当卖点.

    你又怎么能确定这波大家都换 SPA 之后还会不会换回去?

    最典型的例子,你可以看看,SVG1.1 在 2003 年就被确立为 W3C 标准,但是它最后还是被 CSS 干掉了,近几年才重新火起来.

    CSS 当初提出"流"的概念,那个时候会不会也像我们今天的讨论一样,有些人会说流完全是热点,是炒作?

    我不懂,但是我保持敬畏.
        8
    chenqh   3 天前
    @mb135 但是 nosql 已经替换掉 sql 一部分了,没有完全替换这种事情的,就好比 c->cpp->java,java 也只是替换了一部分领域而不是全部
        9
    WispZhan   3 天前
    @WispZhan 另外对于 nosql 是对 sql 的补充不是代替。在 sql 不适合的领域才会有 nosql 的使用场景。想代替?那只是某些人根本没理解应用场景。
        10
    lovescar   3 天前
    谁知道啥火呢,反正都有可能吧
        11
    dan2001go   3 天前 via Android   ♥ 2
    Nosql 还在吧,现在就是被分成了问 Redis 的一些底层问题了。

    现在面试基本上稍微讲点技术的公司都会问微服务。一堆专业术语,仿佛你没有接触到微服务的这些内容你就不懂程序一样。还有 RPC 方面的内容。

    另外一个热潮就是问原理,问算法和基础。这个大概是和人多起来有关系。本来是用来卡那些培训班出来的人的。不过大概没想到的是这个已经被当成了培训班的一个新的卖点拿来授课了…反而会卡死一些平常写业务代码比较多的人。

    比较奇怪的是文档型数据库面试的时候问的非常少。Mongodb 和 Elasticsearch 目前都没有碰到任何人问过。

    这些热潮其实对被面试者来说,也没有什么可以揶揄的了,毕竟话语权掌握在别人手里,别人想怎么问就怎么问。你答不出就可以不选择你。没反抗的余地,只能顺应。
        12
    ivechan   3 天前
    经常看到招聘要求里有 redis,mangodb 的,应该算 nosql 的一部分吧。。。
        13
    mdluo   3 天前   ♥ 17
    有的人,总觉得这个世界上一定要有一个造物主,制定好一切规则,绝不允许人打破。还喜欢嘲笑那些在创新路上摸爬滚打的人说,你看你们折腾这么半天最后还不是走了造物主制定好的老路...

    看到上面有人提 CSS,想起《 CSS Secrets 》引言部分的一段话,大概意思是:你们以为 W3C 标准好像是一群研究员抓耳挠腮写出来的,然后浏览器厂商再根据这些标准去做实现。其实才不是呢,制定标准的人 88% 都是浏览器开发商、主流网站 的公司的人,他们在制定的过程中要不断的撕逼和妥协,标准也是要经历 6 个阶段最终定稿。

    最近我在做浏览器内核里某个功能的移植,发现这一部分功能的 W3C API Specification 不过是 WebKit 内核里这部分功能的实现的 API 说明文档。所以哪有什么安排好一切的造物主、制定好一切细则的标准,而不断摸爬滚打的人们总结下来的经验而已。

    倒置因果和幸存者偏差是我们经常犯的错误。
        14
    WuwuGin   3 天前 via Android
    与其用 NoSQL 模拟关系型数据库,还不如直接用关键型数据库。
        15
    Phariel   3 天前 via Android
    NoSQL 需求的资源太大 而且并没有 SQL 型这么高效稳定 所以大家碰的壁踩的坑都差不多了自然关注度就小了 NoSQL 当当缓存还是不错的
        16
    q397064399   3 天前
    @mdluo #13 问题是绝大部分创新是没必要的,而且人是社会化下的赋予的属性,,很容易盲目跟风,
    NoSql 也是 NotOnlySQL 不是要革命,毕竟底层算法跟需求摆在那里,MVCC 多版本并发控制 在很多场景就是很有效啊,数据库还带事务,Redis 可不支持事务。
        17
    mdluo   3 天前   ♥ 5
    @q397064399 #16

    《高性能 MySQL 》作者写的这篇博文:

    https://www.xaprb.com/blog/2014/12/08/eventual-consistency-simpler-than-mvcc/

    (译文: http://www.jdon.com/forum/messageList.shtml?thread=46910

    摘抄一下译者的个人评论:

    现在进入多核时代,只要是运行在多核上多用户同时读写都回避不了分布式和并发这两个课题。我们不能因为我们熟悉关系数据库,就对之产生 100%信任,其实 MySQL 这些关系数据库在处理分布式 并发以及一致性上非常复杂,而且有问题在其中,会打折扣。

    比如缺省设置 READ COMMITTED 隔离级别其实并不能带来真正高一致性,而 REPEATABLE READ 类似于串行序列化,拒绝并行计算,严重浪费多核资源。

    所以,这些数据库其实要么是使用类似加锁技术实现事务,这种类似 Java 中同步锁等应用一样,这种锁的多线程并发很差;要么是使用一种类似最终一致性的 READ COMMITTED,也并不能给你真正高一致性。

    与其接受传统关系数据库教廷式的洗脑,不如打开这个盒子,实现 Out-of-box,NoSQL 是这种尝试,DDD 和 CQRS 也是这种尝试,将分布式和并发主动权掌握在开发人员自己手里,而不是打破脑袋搜集各种关系数据库资料,拜山各种关系数据库牛人,这种行为才是真正封建迷信呢。

    什么是真正封建迷信?就是自己无法或不愿主动研究自然的秘密,期待牛人大牛为自己指点迷路,迷信于一些牛人的神奇“智力”,缺乏对自己的自信。
        18
    changlers   3 天前
    我觉得还是看自己的需求吧,总不能因为喜欢 nosql 而用 nosql,技术还是为产品服务
        19
    fulvaz   3 天前
    楼上有些人啊....

    MVC 当年不"炒作"? 设计模式不"炒作"? SSH? 还有那群抛弃 Netbean 的人?

    尝试就是炒作? 布道也是炒作?
        20
    BXIA   3 天前 via iPad
    最近在写的项目在用 DynamoDB …感觉已经跟不上时代了
        21
    dan2001go   3 天前 via Android
    感觉正方和反方都在围绕不同的点争。
    其实一个是认为不应该过度炒作,滥用技术。
    一个是觉得不应该墨守陈规,死抱着老思想不放。

    说到底就是一个适度的问题。程序界的争吵由来已经,谁也说服不了谁。
        22
    zhujiulin   3 天前   ♥ 1
    NOSQL 现在只是逐渐成熟了。
    mongo 其实用起来不错的,很多项目换成 mongo 效率提升很多
        23
    Wicked   3 天前 via iPhone
    各有各不同的应用场景,没法相互替代
        24
    tyrealgray   2 天前
    nosql 现在有的很多啊,只是可能楼主你没感觉到而已。
        25
    pathbox   2 天前 via iPhone
    现在 NewSQL 来了。现在数据库没有说谁格谁的命的时候,不同需求有使用不同数据库的情况
        26
    Richardweii   2 天前
    这没什么值得讨论的,业务决定选择
        27
    q397064399   2 天前
    @mdluo #17 绝大部分项目 ,还不值得去 拆解这个黑盒,然后自己实现一套吧,,题主说的 是那些面向简历编程的家伙,,如果你项目到了 那种需要拆解黑箱 自己玩一套的时候,,那是另外一回事了
        28
    MiskoLee   2 天前   ♥ 1
    1. 现在不讨论,不代表不火热。哪个系统现在多多少少没有用到 NoSQL 来做业务。计数器场景,中间结果传递等。你看现在有人谈论电灯吗?
    2. 大家谈论的都是新事物,一旦稳定下来就没有八卦的意义。
    3. 不同的技术有历史生命周期。
    4. 任何新事物的诞生总有大惊小怪的标题党。
        29
    wzw   2 天前
    NoSQL 用得真舒服
        30
    levon   2 天前
    这么多年了,你还没把内存数据库用起来
        31
    otakustay   2 天前
    黑人问号……现在有哪个大型系统没个 redis 能安安心心跑的?
        32
    tairan2006   2 天前
    new sql 的时代即将到来,tidb 算是先行者吧,历史是螺旋上升的
        33
    jadec0der   2 天前
    看来 lz 混的不咋地,没做过高并发系统吧?
        34
    zlfzy   2 天前
    我们公司主要都是 MongoDB 集群和 Redis 集群,并没有多少数据在 MySQL。

    前几年火热? 难道现在你们都不用了?
        35
    wizardforcel   2 天前
    nosql 本来就有其应用场景,比如滴滴的位置存取服务,你以为用的是啥?离线数据分析,不用 nosql 用啥??

    至于缓存嘛。。咱别说大型网站了,到了一定规模,你敢不用缓存??真以为 Web 还是以前那种一台机子打天下的时代??

    真 *** 日了狗了。
        36
    mb135   2 天前
    @wizardforcel 真尼玛日了 X 了,不谢
        37
    watzds   2 天前 via Android   ♥ 1
    应该是不火热,nosql 成常态了
        38
    wizardforcel   2 天前
    @dtysky 学术界只负责把组件造出来,并不负责指导你怎么用组件。

    架构模式用于指导这些东西,但学术界并没有这样一个模式,只有用于单机软件的设计模式。并且设计模式也是在大量实践中总结出来的。
        39
    chengzhoukun   2 天前 via Android
        40
    sunwei0325   2 天前
    nosql 是 not only sql, 又不是 no sql
        41
    neoblackcap   2 天前
    压根就不是这样的,说真的,绝大多数人或者公司都是跟风的。当年 nosql 是怎么起来的,谷歌三篇分布式论文当中的 bigtable,自 bigtable 之后,很多 nosql 就起来了。大多数这个时候的 nosql 都或多或少参考了 bigtable 的设计。至于现在的 newsql 怎么起来的呢?最近几年谷歌发表了 F1/spanner 的论文,其实给 nosql 做一个 sql 的兼容层问题也不大。于是现在 newsql 又开始了。
    其实大家并没有什么围绕 sql 系统来走,只不过是业务规模上去了,单机解决不了问题了。谷歌又恰逢其时提出震惊业界的成果,大家拿来主义而已。你说 nosql 好不好? Google 当然是觉得好啊,解决了 sql 一些不合理的地方,铺平了水平拓展的路。但是大家不买账啊。大家就是喜欢 sql,所以牺牲点优势换取大家的使用,这问题也不大。要不然现在的 newsql 怎么还不做存储过程呢?
    因此 sql, nosql, newsql 其实关系都不大。火不火肯定火,只不过我们大多数情况用不着,试问,多少人的数据库每天能有上千万的数据呢?现在的硬件跟 10 年前的也一样吗?真正遇到问题的唯有指数增长的业务部门才能遇到。至于 80%的程序员也是用用 mysql 就可以了。那么多学校或多或少提起的 Oracle 又有多少人真正的在工作中遇到,一个道理罢了
        42
    Tink   2 天前 via iPhone
    现在 redis 不就是 nosql 的子类吗
        43
    zachguo   2 天前 via Android   ♥ 1
    水平堪忧,已 block。
        44
    49gd   2 天前
    @neoblackcap 感觉你说的最中肯了
        45
    marlboros   2 天前
    借 41 楼一句话:因此 sql, nosql, newsql 其实关系都不大。
    再补充一句话:某些人 TMD 的连尝试都不敢尝试!就开始叨叨 B !
        46
    lights   2 天前 via iPhone
    还有图数据库
        47
    NUT   2 天前
    人不都是这样么,买到一个新的锤子,看啥都是钉子。
    另外 newSql 的这样趋势我认为就是趋势,你瞧 pingcap 不是搞得挺好的么
        48
    EricFuture   2 天前
    不知道你想表达什么,redis、mongodb、hbase 这些不都是 nosql 么?
        49
    cout2013mr   2 天前
    不管火不火,现在 redis 起码普及开了。
    不管是 sql 还是 nosql 都是数据持久化的一个支撑点,哪怕性能需要也硬是不采用 nosql 就是真的头铁了。
    业务单据或者复杂查询的放 sql 数据库还好,要是并发极大的读写,nosql 甩了 sql 多远啊,技术都是为了产品服务。
    至于现在的前端框架,这个确实诟病很多,但是主流都还是 html + js + css,只是 js 和 css 有些便于使用的框架。架构上应该是偏向于前端页面资源化,服务化吧。前端往后退,能变回啥样子? jquery ?还是 jsp/asp 那种需要动态编译的?
        50
    zh5e   2 天前
    应用场景越分越细,选择越来越来多不好么
        51
    skywolf   2 天前
    作为曾经总想着不要被时代淘汰而研究过所谓新技术的表示:所谓的新技术只是通过逻辑的打包,让你觉得工作变得很便捷,更多的是作为上一个技术产品的辅助作用。这一类新技术并没有像当年汇编、B ( VB )、C ( VC )、Java ( CSharp )一般从本质上改进 01 电位的处理逻辑问题。我们从过程到对象可以说是一场变更,对象到对象个人的理解更多的还是一场因为场景不同所需要的各种不同的工具而已,只是有的工具更加适应你当前处理的场景。
    思维无止境,技术无止境。但我用原始社会的工具可以不可以去实现今天的东西,必然是可以的,因为我们处理的本质 01 尚未改变,只是那样我们的学习成本将会变高, 程序开发人员的边际会变高。来自一个从不盲目迷信新技术的原始人。
        52
    misaka19000   2 天前
    说实话 感觉 V 站现在这种垃圾帖子越来越多了
        53
    RorschachZZZ   2 天前
    建议楼主多看书,接触一下稍微有点并发的项目。工作接触不到的话,可以去找俩开源项目研究下。你每天写管理后台当然用不到 nosql 了
        54
    zhangsen1992   2 天前
    mongo redis ES Neo4j 不是大部分公司都在用吗
        55
    deadEgg   2 天前
    不仅仅楼上的 case,物联网领域用的也很多

    我来举一个 case,比如 timeline 对齐的 db,物联网领域用的相对多一些,因为方便做数据分析。
        56
    janxin   2 天前
    也不是,lz 你了解的太片面了...
    不过我觉得可以黑黑 MongoDB 和 Neo4j XD
        57
    qiyuey   2 天前 via Android
    MongoDB 目前基本在换回 MySQL,不过 Redis 的发展很不错
        58
    Felldeadbird   2 天前
    用过 NOSQL 才知道 SQL 的好。也许是我懒得原因吧。不过在 速度上,NOSQL 真的很爽。
        59
    lbp0200   2 天前
    人工智能和大数据
        60
    iugo   2 天前
    只是 NoSQL 成熟了, 我觉得大家项目中多多少少都会用到唉. 甚至有新项目都想直接放到 Firebase 上去.
        61
    jhdxr   2 天前
    @RorschachZZZ LZ 是观点没有问题啊,哪怕像淘宝这种量级的项目,商品库之类的不还是乖乖用 RDBMS。本身场景就不同,noSQL 给自己加上一点 SQL 的功能就以为能拯救天下了?
        62
    Sypher   2 天前
    Redis 和 HBase 的发展还是不错的
        63
    MushishiXian   2 天前
    反正就要根据需求选用就好,有些人用了 MongoDB 之后各种吹,然后说 MySQL 这样子不行那样子不行,甚至想把一个管理后台的 RBAC 都想着把 MySQL 改成 MongoDB,nosql 有自己的优势,用对地方就好,不要过分夸大其作用就好,nosql 不是万能药
        64
    aksoft   2 天前
    装逼奶是人生一大快事
        65
    sgissb1   2 天前
    用过 mongo,用过 mysql 和 sqlserver。
    典型的 nosql 和 sql 的代表。因为不是专业 dba,或者相关工作的。说说我的体会。

    纯粹的 crud,nosql 比较便于开发,因为不需要新学一套语法和语言。

    但如果做数字计算的话,那么可能 sql 会比 nosql 好一些。假设人事要计算每个月的薪酬发放,只要 dba 写好 sql,一在数据库执行即可,什么锁表都不需要非 sql 代码参与。

    轻量级开发,nosql 是很好的东西。如果是一个较为有要求和规模的产品,sql 是比较好的。他的好在于分工比 nosql 方式细化,另外就是时间沉淀的积累。
        66
    eurokingbai2   2 天前
    楼主好好了解下 CAP 原理再来想想这个问题。不同业务模式,CAP 有不同的倾向!
        67
    huangunic0rn   2 天前 via Android
    @mb135 CSDN。。传说中明文记录密码的大厂(滑稽
        68
    leavic   2 天前
    不同的业务需要不同的数据库,这个没什么的,一个个人博客使用 xml 可能还真比 mysql 好用。
        69
    online2offline   2 天前
    只是多一种选择而已,用什么看业务场景,团队内部对技术的掌握程度,未来规划等很多因素。
        70
    sampeng   2 天前
    工具而已。。有这么纠结么。。。。。
    人,事,钱,哪个资源多就倾向哪个,都齐全就是什么都可以,无所谓,看 leader 倾向,看 cto 倾向,看老板倾向
        71
    SoulSleep   2 天前
    LZ 是来秀无知的吗?现在 nosql 更流行了!
        72
    xwhxbg   2 天前
    目前观察的结果是,nosql 上面弄一层 sql 兼容的解释器不是难事,比如我就做了一个用 sql 来操作 dynamoDB 的工具,dynamo.cli 可以上 GitHub 看到。
    即使不是兼容 sql,弄个 orm 也是简简单单,所以不要纠结是不是 sql,只要符合业务场景解决问题,就可以采用。
        73
    arraysnow   2 天前
    自从 lz 在 1 月 12 号注册 V2EX 以来,每一篇水文都是满满的文革风,没有半点干货,上次狂吹 jq 的也是你吧?

    block
        74
    wps353   2 天前
    场景不一样罢了。
    NoSQL 用来做缓存还是很好的,qps 杠杠的。
    SQL 主要是用来 OLTP 的,保证数据的一致性。
        75
    cllgeek   2 天前
    楼主,不管从后端,还是从前端都表现出无知啊,认真看看书,好好学习,赶上时代的发展
        76
    liangweijia6000   2 天前
    别闹啊,现在也大把啊
        77
    evlos   2 天前
    Nosql 和 Sql 应用场景不一样,老有不懂的人瞎用瞎喷
        78
    8355   2 天前
    现在 nosql 已经不算新技术了 所以没人提了.
    但没人提不代表没人用了.
    村通网系列.
        79
    purejs   1 天前
    至少传统企业级应用开发,SQL 的地位是无法替代的,现在只需要写 SQL 就可以直出 WEB 系统了:enhancer.io
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2198 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 81ms · UTC 11:22 · PVG 19:22 · LAX 03:22 · JFK 06:22
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1