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

这个需求选择什么数据库比较好呢?

  •  
  •   slogon · 2015-07-03 02:19:26 +08:00 · 5409 次点击
    这是一个创建于 3192 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主要目标:存取每天的成交订单信息到库里,比如订单标题,价格等商品信息,供用户查询。
    用户查询时,最主要的就是通过订单标题查询(商品详情暂时不考虑),用户输入关键字,能在订单标题中查询到所有相关的订单。
    每天增量10w左右。
    mysql怕量大了会慢,然后最关键的是查询,简单的like查询满足不了需求,希望像全文搜索那种,相关的都能被查到,而不是字符串完全一样才能被查到。。。
    看了MongoDB的全文索引,可是不支持中文。。。
    大家帮忙看看,用啥比较好呢?

    26 条回复    2015-07-04 10:27:08 +08:00
    Septembers
        1
    Septembers  
       2015-07-03 02:40:05 +08:00
    PostgreSQL
    Septembers
        2
    Septembers  
       2015-07-03 02:47:32 +08:00
    (MySQL 单表1亿行 不分区连表都打不开
    (PS:由于数据源/数据结构/硬件参数等问题 此回答仅供参考
    xlrtx
        3
    xlrtx  
       2015-07-03 03:13:25 +08:00
    不是很在行, 不知道用solr好不好..
    xlrtx
        4
    xlrtx  
       2015-07-03 03:15:50 +08:00
    @xlrtx 只是学过一些理论, 大型商用数据库最好用nosql, 方便做OLAP数据分析
    xlrtx
        5
    xlrtx  
       2015-07-03 03:21:13 +08:00
    @xlrtx 完全说了, 无视上面的答案吧~
    yangqi
        6
    yangqi  
       2015-07-03 03:52:36 +08:00
    这种量肯定要设计成分布式的吧,不然不管什么数据库迟早会遇到问题
    line
        7
    line  
       2015-07-03 07:36:47 +08:00 via Android
    如果频繁的like,还是全放内存好了
    mringg
        8
    mringg  
       2015-07-03 07:37:28 +08:00 via Android
    感觉分表就可以,一个月一张表
    wy315700
        9
    wy315700  
       2015-07-03 07:49:11 +08:00
    @Septembers
    一亿条数据还到不了MySQL的瓶颈
    innodb 毫无压力。
    zhicheng
        10
    zhicheng  
       2015-07-03 08:00:08 +08:00 via Android
    MySQL + ES 毫无疑问的。
    beneo
        11
    beneo  
       2015-07-03 08:05:26 +08:00
    MySQL + ElasticSearch,还要简单上阿里云吧
    est
        12
    est  
       2015-07-03 10:21:57 +08:00
    @Septembers 谁说的?QQ群那个表我就mysql 跑的。avg() 全表,10多亿行,30秒出结果。
    yakczh
        13
    yakczh  
       2015-07-03 10:33:26 +08:00
    mysql 2000万条 秒查,再往上就要考虑分表
    mozartgho
        14
    mozartgho  
       2015-07-03 10:49:32 +08:00
    MySQL InnoDB完全满足你目前的需求,再大了可以考虑下Redis集群
    albertlee
        15
    albertlee  
       2015-07-03 10:57:27 +08:00
    可以使用hbase来做,可以支持lz所说的场景
    realpg
        16
    realpg  
       2015-07-03 11:02:32 +08:00
    Mysql存数据, Elasticsearch做搜索引擎
    hkbarton
        17
    hkbarton  
       2015-07-03 11:15:46 +08:00
    (My/Postgre)Sql + ElasticSearch/Solr
    lilydjwg
        18
    lilydjwg  
       2015-07-03 11:21:36 +08:00
    @Septembers MySQL 这么弱啊,难怪大家都在讨论 MySQL 分表分库呢。就没见 PostgreSQL 这么折腾。

    PostgreSQL + ElasticSearch,虽然是 Java 的。推荐用 bigram 做索引,别折腾分词了。
    slogon
        19
    slogon  
    OP
       2015-07-03 11:24:24 +08:00
    @mozartgho mysql查询这部分怎么解决呢?
    caoyue
        20
    caoyue  
       2015-07-03 11:27:25 +08:00
    我觉得 MySQL + ElasticSearch 应该够了
    历史数据可以分表
    查询所有数据的应该相对比较少,比如淘宝京东都是默认查三个月内的订单
    slogon
        21
    slogon  
    OP
       2015-07-03 11:27:42 +08:00
    @zhicheng
    @beneo
    @realpg
    @hkbarton
    多谢几位,就选MySQL + ElasticSearch了
    slogon
        22
    slogon  
    OP
       2015-07-03 11:32:05 +08:00
    也谢谢其他给意见的朋友
    hkbarton
        23
    hkbarton  
       2015-07-03 11:34:11 +08:00
    @slogon MySQL的话可以看看这个版本: https://www.percona.com/software/percona-server/ps-5.6 比原生的community的版本好一点,而且percona也有很多配套的mysql运维工具
    hkbarton
        24
    hkbarton  
       2015-07-03 11:36:16 +08:00
    percona toolkit: https://www.percona.com/software/percona-toolkit mysql ops 很常用的
    Ashitaka4
        25
    Ashitaka4  
       2015-07-03 16:00:30 +08:00
    oracle?
    iyangyuan
        26
    iyangyuan  
       2015-07-04 10:27:08 +08:00 via iPhone
    mysql按月分表就可以了,就是统计起来比较麻烦,至于全文检索,可以用solr索引标题,可以每个mysql表对应一个solr的core。估计系统能坚持30年以上,才会有性能问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3308 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:41 · PVG 08:41 · LAX 17:41 · JFK 20:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.