V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
shade
V2EX  ›  Python

如何应对数据库中的表结构经常变动的业务情况,主要会增加列数?

  •  1
     
  •   shade · 2014-09-03 08:28:40 +08:00 · 6869 次点击
    这是一个创建于 3769 天前的主题,其中的信息可能已经有所发展或是发生改变。
    14 条回复    2016-10-16 20:31:21 +08:00
    zjgsamuel
        1
    zjgsamuel  
       2014-09-03 08:37:07 +08:00   ❤️ 1
    默认定义多个自定义列那 使用的时候用不就是了
    guoqiao
        2
    guoqiao  
       2014-09-03 08:41:50 +08:00   ❤️ 1
    django的话, 用 south 修改数据库规格非常方便. 不知道你用的什么技术, 应该也有类似的东西.
    shakoon
        3
    shakoon  
       2014-09-03 08:58:30 +08:00   ❤️ 1
    同意一楼说的预留多个自定义列。但也要反思为什么表会经常变结构,这是明显的架构设计失误。
    tobyzw
        4
    tobyzw  
       2014-09-03 09:21:59 +08:00   ❤️ 2
    两个字段,key value
    字典表
    value自定义,XML,json都可以
    dong3580
        5
    dong3580  
       2014-09-03 10:45:59 +08:00
    如果是.NET写的话,就直接映射数据库实体,每次数据库加了字段,只需要更新一下实体映射就行了,点几个按钮。
    woshifyz
        6
    woshifyz  
       2014-09-03 10:58:24 +08:00   ❤️ 1
    在定义的时候就要考虑表的scheme,像这样经常变动的情况,可以抽出相关字段做成json
    wy315700
        7
    wy315700  
       2014-09-03 11:10:17 +08:00   ❤️ 1
    MongoDB 适合你
    zeayes
        8
    zeayes  
       2014-09-03 11:14:47 +08:00   ❤️ 1
    NOSQL
    jamiesun
        9
    jamiesun  
       2014-09-03 12:00:21 +08:00   ❤️ 1
    扩展表嘛,以前见过中移动一张表150多个字段外加扩展表几十个字段.
    lecher
        10
    lecher  
       2014-09-03 13:37:32 +08:00   ❤️ 2
    json这种格式最合适
    不用mongodb的话就存json序列化的数据,要用再解析。
    如果你是有经常变动的字段需要搜索的,mongodb了,如果是普通的sql,还是考虑一下重构的问题了,在搜索上面出现需要索引额外添加字段的问题,什么样的业务场景才会出现这样的需求?
    pi1ot
        11
    pi1ot  
       2014-09-03 13:47:56 +08:00   ❤️ 1
    把列换成行。
    akira
        12
    akira  
       2014-09-03 15:36:34 +08:00   ❤️ 1
    开发期考虑不周全,偶尔变一下可以接受。
    天天变就要考虑换个人来做设计了
    ryancao
        13
    ryancao  
       2014-09-03 15:51:53 +08:00   ❤️ 1
    SQL:
    * 核心表+扩展表, 参照 wordpress (posts, post_meta)
    * 更加低效but强大的办法EAV(Entity, Attribute, Value), 参照 Magento(eav_xxx)

    NoSQL:
    * MongoDB欢迎你,虽然是shemaless的,不过建议还是维护一份schema数据并基于schema维护数据,比如集成Json Schema?
    buxingjie
        14
    buxingjie  
       2016-10-16 20:31:21 +08:00
    @lecher 加入某个业务对象有 100 个业务参数(实际未知),部署到 A 企业需要 1-10 ,部署到 B 企业需要 11-17 ,关系型数据库怎么办,而且上线后也要可修改
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2765 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:32 · PVG 22:32 · LAX 06:32 · JFK 09:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.