V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
xing393939
V2EX  ›  MongoDB

把 mongo 当作主数据库的疑问

  •  
  •   xing393939 · 2017-09-20 23:08:22 +08:00 · 5339 次点击
    这是一个创建于 2654 天前的主题,其中的信息可能已经有所发展或是发生改变。
    新公司主数据库基本是 mongo,用了一段时间感觉有这个问题(对比 mysql ):

    不能清晰知道表结构,mysql 则一目了然,mysql 相当于有了表定义的文档。而 mongo 数据机构可以是多维、多数据类型,每条记录字段可多可缺,这样感觉维护性很差,非得靠强硬的团队规范来保证数据结构的一致。

    不知道大家对这个有什么看法呢
    10 条回复    2017-09-21 11:21:58 +08:00
    a87150
        1
    a87150  
       2017-09-20 23:10:22 +08:00
    期待 yinwang 拯救世界。
    xiaxiaokang
        2
    xiaxiaokang  
       2017-09-20 23:30:21 +08:00   ❤️ 1
    作为一个不是后端开发的说下看法,关系型数据和非关系型数据的使用具体看场景,例如资讯型平台 mongo 绝对是最佳选择,而电商则不太适合,而且对于 mysql 新增字段必须修改表结构而 mongo 则不需要。现在互联网需求变更及其快,使用关系型就会对表结构不断的修改挺麻烦,当然关系型和非关系型是相互依存关系,而并非二选其一的情况,从性能角度来讲,多表操作和单结构体操作性能可想而知,不要排斥到底使用那个作为数据库,而多考虑业务场景选择那种数据库! 作为前端理解只能到这里,有不对可以指正
    a342191555
        3
    a342191555  
       2017-09-20 23:51:43 +08:00
    1、mongo 本身是为了非结构化数据而准备的,如果需要范式化的数据,我感觉用关系型数据库会更好。

    2、mongo 有[Document Validation]( https://docs.mongodb.com/manual/core/document-validation/)实现了一定程度上字段的固定功能,在某些方面(例如字符串的约束等)比 MySQL 做得更多。

    3、在一些可视化工具中,如[MongoDB Compass]( https://www.mongodb.com/products/compass)和[Studio 3T]( https://studio3t.com),可以以 Table 形式组织和显示数据。
    a342191555
        4
    a342191555  
       2017-09-20 23:55:21 +08:00
    回复中不能用 markdown 么?😳

    格式错乱😂
    willhunger
        5
    willhunger  
       2017-09-21 08:07:32 +08:00
    @a342191555 不可以
    nullcc
        6
    nullcc  
       2017-09-21 09:23:37 +08:00
    原来一个长期的项目我们团队也是用 mongodb 做主力开发,不过后来还是觉得关系型数据库做主力,NoSQL 类的做辅助,放一些诸如 log 的简单数据比较好。
    EricFuture
        7
    EricFuture  
       2017-09-21 09:47:59 +08:00
    你的转变成 nosql 的思维,刚开始从 mysql 转 mongo 也是各种不适应,现在感觉 mysql 反而用得不顺手了。两种数据库各有各的长处,主要看需求吧
    Immortal
        8
    Immortal  
       2017-09-21 09:52:53 +08:00
    同意 6L
    非关系数据库有些需求的数据查起来简直不要不要的
    还是不太建议 mongo 当主库 把一些数据量大,查询简单,有归档性质的放 mongo 里比较不错

    目前我负责的项目主库还是 mysql
    hantsy
        9
    hantsy  
       2017-09-21 11:20:27 +08:00
    拿 Mongo 与 RDBMS 比就没办法了。

    NOSQL 越来越流行,特别在互联网应用中。使用 NOSQL,首先要转换 RDBMD 的关系思维,如果什么都是以关联关系去想,NOSQL 根本就用不起来。

    三年前一个程序中就开始用 Mongo 用作主要数据库,另外配合 ElasticSearch 作产品搜索,Hazecast 作缓存共享之内的。

    现在的项目开发中,基本都用到多种数据库混合,Redis,Neo4j, Mongo,ElasticSearch,Cassandra,RDBMS ( MSQL,PostgreSQL ) 等,根据场景需要选择合适数据库,但不得不说,用 RDBMS 的情况越来越少。
    gosky
        10
    gosky  
       2017-09-21 11:21:58 +08:00
    这有什么
    不是一个结构的,不放一个集合不就行了
    难道你还想把它当 sql 数据库用?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1255 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:00 · PVG 02:00 · LAX 10:00 · JFK 13:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.