V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WildCat
V2EX  ›  数据库

2016 年 7 月,关系型数据库如何选择? PostgreSQL/MariaDB/MySQL,后端: Rails

  •  
  •   WildCat · 2016-07-28 16:48:07 +08:00 · 2014 次点击
    这是一个创建于 3044 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有个小项目,短期未来可能涉及全文搜索。另外用户资料等一些信息也想用 JSON 字段存储。
    MySQL/PostgreSQL 都添加了不错的 JSON 、全文搜索支持,隔壁帖子《站内全文搜索采用什么方案比较快?》 里有说 MySQL 很不错,我搜到一篇 MySQL Developer Team 的中文博客,看了下好像 MySQL 中文分词的配置极其简单,的确有点心动。

    另外即使不用数据库做全文搜索,从 Ruby China 的经历 来看,Rails 集成 ElasticSearch 并不难。

    MariaDB 都说性能很好,但是不清楚现在能超越 MySQL 多少?很多问题搜 MariaDB ,结果却是 MySQL 的,感觉好尴尬。

    大家有什么建议呢?

    31 条回复    2016-07-31 15:07:10 +08:00
    Immortal
        1
    Immortal  
       2016-07-28 17:58:48 +08:00
    分词 搜索 可以考虑上 es
    我觉得灵活才是最主要的 每个数据库有自己的特点和擅长 不一定要一棵树上吊死
    jimmy0017
        2
    jimmy0017  
       2016-07-28 18:01:28 +08:00
    个人看起来数据库 rails 还是用 PostgreSQL 比较多。
    搜索貌似大家都是 elasticsearch
    自己做的话,就看你习惯啥了。还有看看 deploy 的环境。(比如 heroku 就是 PostgreSQL )
    lightening
        3
    lightening  
       2016-07-28 18:07:57 +08:00
    我现在是肯定不会再用 MySQL/MariaDB 了。 PG 各方面都比 MySQL 好,实在找不出不用 PG 的理由。

    https://www.postgresql.org/docs/current/static/pgtrgm.html
    pathbox
        4
    pathbox  
       2016-07-28 20:49:04 +08:00
    PG....................................
    Kilerd
        5
    Kilerd  
       2016-07-28 20:51:36 +08:00
    现在自己写的项目已经全面用 Mongo , 没有原因 ,就是那么任性。
    jackysc
        6
    jackysc  
       2016-07-28 20:52:37 +08:00 via iPhone
    我记得 pg 有结巴分词的扩展
    zhx1991
        7
    zhx1991  
       2016-07-29 00:05:23 +08:00
    @Kilerd 大规模下 mongo 似乎坑相当多
    Kilerd
        8
    Kilerd  
       2016-07-29 00:08:00 +08:00
    @zhx1991 记得 mongo 作者写过一篇文章,就是说那些操不来 mongo 就说 它坑多的。
    hyzjshwo
        9
    hyzjshwo  
       2016-07-29 00:09:21 +08:00
    MariaDB/MySQL 吧,我们很后悔用 PG 了。。
    shiny
        10
    shiny  
       2016-07-29 00:10:39 +08:00
    @Kilerd 用 SQL 的想法去用 MongoDB 就会觉得坑;没有用过 MongoDB 的人应该谨慎。
    zhx1991
        11
    zhx1991  
       2016-07-29 00:13:48 +08:00
    @Kilerd https://engineering.meteor.com/mongodb-queries-dont-always-return-all-matching-documents-654b6594a827#.6e8y22c68

    看这个, 我认为这种场景出现在一个数据库上是不可思议的.
    zhx1991
        12
    zhx1991  
       2016-07-29 00:25:23 +08:00
    真的建议用 mysql

    业界非常成熟
    wh1012023498
        13
    wh1012023498  
       2016-07-29 00:28:12 +08:00
    还是觉得用 ElasticSearch 比较好
    Kilerd
        14
    Kilerd  
       2016-07-29 00:34:37 +08:00
    @zhx1991 它的文章都说了 it is a rare condition. you can find it if you are lucky.

    它还说 数据要足够大,而且还要执行 100K 次,一些天之后才有可能遇到。

    我还能说什么,只能说 我不够 lucky [:doge:]
    zhx1991
        15
    zhx1991  
       2016-07-29 00:41:27 +08:00
    @Kilerd 所以我说大规模下是个坑, 而且文中说的那种情况在实际高并发场景下并不是 rare.
    Layne
        16
    Layne  
       2016-07-29 00:44:35 +08:00
    晚上刚看到一篇文章,说 Uber 从 Postgres 切换到 MySQL 了…
    ZGLHHH
        17
    ZGLHHH  
       2016-07-29 00:48:27 +08:00
    fy
        18
    fy  
       2016-07-29 00:55:20 +08:00
    @hyzjshwo 为啥后悔呢。。
    hyzjshwo
        19
    hyzjshwo  
       2016-07-29 01:16:38 +08:00
    @fy 当时用 PG 是为了解决以后地理位置检索的需求,然后 1 年后,我们其实没有使用 PG 任何有优势的特性,反而因为学习曲线的问题,遇到了索引加不上,性能等问题。所以我们出于对项目质量和成本的考虑,以后方案都选熟悉的,上手快的。
    fy
        20
    fy  
       2016-07-29 01:45:36 +08:00
    @hyzjshwo 原来如此。不过 PG 提供的 array 、 JSON 字段之类倒是非常实用呀,而且再也不用纠结 innodb 和 myiasm ,个人还是挺喜欢的。也许没有表面看起来那么美好?
    haoc
        21
    haoc  
       2016-07-29 02:33:42 +08:00
    uber 不是刚从 postgres 切回 mysql ?主要看场景吧。
    moult
        22
    moult  
       2016-07-29 09:02:40 +08:00
    在 PostgreSQL 和 MySQL 的选择上,主要还是看业务和数据结构需求,当然更要看技术和运维的实力,有调校能力情况下,两者的差距没想象中那么大。
    然后 MySQL 衍生版本的选择上, MariaDB 、 Percona 都在原版本上加上自己的特征,如果这些特征都用不到的话,那就看个人喜好或者掷骰子吧!
    songjiaxin2008
        23
    songjiaxin2008  
       2016-07-29 09:03:21 +08:00 via iPhone
    建议用 PG 吧,对于 Rails 已经是标配了,搜索交给专业的人来做(ES)。
    WildCat
        24
    WildCat  
    OP
       2016-07-29 09:05:45 +08:00
    @moult 运维差的话, MySQl 还是 PostgreSQL 呢?
    dodo2012
        25
    dodo2012  
       2016-07-29 09:41:46 +08:00
    全文检索就用 es 吧,和 rails 结合完美, db 一直用 pg 的,现在 rails 也主推 pg
    strwei
        26
    strwei  
       2016-07-29 13:56:58 +08:00 via iPhone
    必须 PG 啊
    gemini767
        27
    gemini767  
       2016-07-29 13:59:58 +08:00
    uber 刚刚弃用了 pg 改 mysql
    https://eng.uber.com/mysql-migration/
    xiaowangge
        28
    xiaowangge  
       2016-07-29 17:48:54 +08:00
    MySQL + Redis + Memcached 。
    wujunze
        29
    wujunze  
       2016-07-29 18:59:52 +08:00
    MySQL 吧 成熟
    WildCat
        30
    WildCat  
    OP
       2016-07-29 23:33:14 +08:00
    @xiaowangge 有 redis 为何还要用 memcached ?
    xiaowangge
        31
    xiaowangge  
       2016-07-31 15:07:10 +08:00   ❤️ 1
    @WildCat 我是游戏行业,用得腾讯云。

    Redis 用来做各种排行榜等功能。

    腾讯云的 CMem ( memcached )当成数据库 + 缓存来用。

    MySQL 极少用到,充值、竞技场、帮派功能会用到。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:31 · PVG 05:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.