V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mhtt
V2EX  ›  问与答

开发还可以怎么优化?

  •  
  •   mhtt · 2016-05-20 07:22:30 +08:00 via iPhone · 2324 次点击
    这是一个创建于 3113 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前我们用 PHP+Mysql 来开发,因为需求一些变化, Mysql 中会不断的增加表,在一些表中增加键值,除了上 NOSQL 外,还有什么办法优化解决这一痛苦?
    19 条回复    2016-05-20 16:31:04 +08:00
    WildCat
        1
    WildCat  
       2016-05-20 07:25:01 +08:00
    migration?
    hpeng
        2
    hpeng  
       2016-05-20 07:34:29 +08:00 via iPhone
    MySQL 我是用 Json 加虚列。然而痛苦并没有减少多少。
    yyfearth
        3
    yyfearth  
       2016-05-20 07:45:58 +08:00
    用 EAV 模式可以从一定程度上解决这个问题 不过会导致整体复杂度大幅增加
    而且没办法用外键约束 join 起来也麻烦很多
    说白了就是吧 MySQL 当作 NoSQL 用

    @hpeng 用 Json/xml 可以保存一些不重要不需要索引的列 否则就一定要增加新列了
    JSON 里面的数据普通的查询都没办法 更不要说排序索引了
    mhtt
        4
    mhtt  
    OP
       2016-05-20 07:46:38 +08:00
    @WildCat nosql?
    @hpeng 嗯。
    dxwwym
        5
    dxwwym  
       2016-05-20 07:50:00 +08:00 via iPhone
    @mhtt 魔性的头像
    hpeng
        6
    hpeng  
       2016-05-20 08:11:12 +08:00 via iPhone
    @yyfearth 你肯定没用过 5.7 以上的
    yyfearth
        7
    yyfearth  
       2016-05-20 08:30:06 +08:00
    @hpeng 不要说 5.7 了 生产环境还是 5.3 少数 5.4 PHP 还是 5.2.x 的
    就算有新功能也不能用啊
    jarlyyn
        8
    jarlyyn  
       2016-05-20 08:34:07 +08:00 via Android
    Json
    armoni
        9
    armoni  
       2016-05-20 09:11:20 +08:00
    开发过程中就加,正式上线后还增加字段就用自定义字段的办法去做
    sujin190
        10
    sujin190  
       2016-05-20 09:19:57 +08:00
    其实我想知道, nosql 中没有固定格式,你们数据读出来之后如何知道当前数据格式呢?难道要判断版本然后一版本一版本兼容?多改几个版本你们还记得最早的数据结构为什么是这样的么?
    mahone3297
        11
    mahone3297  
       2016-05-20 09:41:16 +08:00
    加就加呗,问题在哪里?
    Evovil
        12
    Evovil  
       2016-05-20 12:37:33 +08:00
    @sujin190 so 你可以使用一些可以向下兼容各种版本的序列化方案 :- > Google Protobuf.
    或者自己做向下兼容的序列化方案(比如反射)
    fork3rt
        13
    fork3rt  
       2016-05-20 13:04:43 +08:00 via iPhone
    遇到同样问题,最后是 MySQL+MongoDB
    sujin190
        14
    sujin190  
       2016-05-20 14:26:22 +08:00
    @Evovil 这是存数据库的。。你这样搞怎么查询,怎么用索引
    changwei
        15
    changwei  
       2016-05-20 14:57:52 +08:00
    @hpeng 你还要考虑到 php 在进行 json_decode 的效率损失啊,本身 php 执行这种字符串操作运算效率就不是很高
    hpeng
        16
    hpeng  
       2016-05-20 15:25:58 +08:00 via iPhone
    @changwei 我没写过 php 噢,写 java 的。
    cxbig
        17
    cxbig  
       2016-05-20 15:54:02 +08:00
    正常不过,你要是玩过 Magento 就知道,新装 300+table ,其中经常打交道的 150+。
    mhtt
        18
    mhtt  
    OP
       2016-05-20 16:05:28 +08:00
    @fork3rt 主要是我不想用 nosql 的想法太强烈了
    @cxbig 难道这样,不感觉痛苦?
    cxbig
        19
    cxbig  
       2016-05-20 16:31:04 +08:00
    @mhtt
    RDBMS 虽然表会很多,设计上需要花的心力也多,但是数据操作比较稳定。
    NoSQL 在数据结构上自由度很高,但是一些特定条件的键值搜索计算上,性能还不及 RDBMS
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.