V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shyrock
V2EX  ›  程序员

分库分表以及联合查询有现成的工具吗?

  •  
  •   shyrock · 2014-07-17 11:55:21 +08:00 · 5753 次点击
    这是一个创建于 3817 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我之前的项目用的Oracle和MySQL,都是单数据库(+RAC)。存在的问题是扩展性很差,要扩大规模的时候,需要备份数据整体升级后再恢复数据。而且RAC作为高可用的代价太高。

    现在构思一个新的系统,想做到数据规模、并发性能可以做到平滑升级,而且以较低的代价解决高可用问题。看了一些资料,目前觉得基于MySQL做分库分表貌似是一个成本较低且成熟度较高的方案,但是似乎分表分库后的查询都需要应用层做查询分拆和数据合并,想知道有没有现成的工具比如数据库引擎完成了这部分功能呢?让分库分表对应用层透明。

    请高手指教。
    9 条回复    2014-07-18 08:52:44 +08:00
    NCE
        1
    NCE  
       2014-07-17 14:42:21 +08:00   ❤️ 1
    MySQL有很多中间件,大部分都是解决这个问题的。
    shyrock
        2
    shyrock  
    OP
       2014-07-17 14:55:01 +08:00
    @NCE 能举个例子吗?谢谢
    canesten
        3
    canesten  
       2014-07-17 15:02:12 +08:00
    NoSql大法好
    技术上Hold的住的话可以换个NoSql数据库
    shyrock
        4
    shyrock  
    OP
       2014-07-17 15:12:04 +08:00
    @canesten NoSql也看过,但是感觉一下子转过去跨度太大,担心没有想透,遇到大的技术限制再改架构的损失伤不起。弄个KV做cache可以考虑,持久化的核心数据目前还是考虑放在RDB里面。
    canesten
        5
    canesten  
       2014-07-17 15:17:57 +08:00   ❤️ 1
    可以先从MongoDB开始实验
    MongoDB还是可以支持大部分类似RDB的花式查询
    只要注意到某些特定类型的查询在特定环境下性能可能出问题就可以了
    MongoDB的官方文档也算比较健全
    对于MySql类的应用来说过渡还是挺适合的
    shyrock
        6
    shyrock  
    OP
       2014-07-17 15:57:56 +08:00
    @canesten 谢谢,研究一下MongoDB
    88250
        7
    88250  
       2014-07-17 16:01:21 +08:00   ❤️ 1
    这个可能会有帮助: https://github.com/alibaba/cobar
    shyrock
        8
    shyrock  
    OP
       2014-07-17 23:09:58 +08:00
    @88250 这个cobar是ali自己公布的还是泄露的?感觉直接用有版权问题吧,不过文档实在太棒了,很有参考价值,谢谢了
    88250
        9
    88250  
       2014-07-18 08:52:44 +08:00
    这个是阿里巴巴的正式开源项目,不会有版权问题(Apache License Version 2.0)。

    嗯,里面的几篇文档还是很不错的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2772 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:41 · PVG 15:41 · LAX 23:41 · JFK 02:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.