作为架构师或者开发人员,面对业务方提出的数据结构变化的需求总是很头痛的,今天让你加个描述字段,明天让你再加个什么标记,后天又需要增加一个时间戳,千奇百怪,层出不穷,实在头痛。但是,我们不能随意的指责什么,因为业务在发展,而且我们不能也不应该因为技术或者实现的原因去否决一些业务变化,毕竟技术是什么?真正产生价值的还是业务!
那,在实践中,我们如何面对这种无法避免而且往往很难预期的数据结构变化呢?
第一种方法,预留字段
既然很难加字段,就预先留好一些备用,比如加上10个Date,20个VARCHAR,10个Number之类的,虽然看起来猥琐了点,而且没那么灵活,其实还是很实用的,生产中也有不少人使用,不过因为预先留的字段一般是没什么含义的,需要有额外的信息来描述他,COL1是什么含义,COL2是什么含义,演变到后来有的就干脆更极端,所有字段都是无意义的名字,全靠外部的meta信息来描述,这种用法据我所知至少有三个地方在使用,两个是我亲自听到设计者描述的,另一个是别人告诉我的
不管怎样,预留字段的方式还是很解决很多问题的,而且基本不影响性能,除了额外的meta信息描述外,也没有其他的负担。
第二种方法,使用复杂字段
这个应用的场景不是很多,在某些特殊要求下还是很有用的,比如,某个业务实体(某张表),有一些标记位,都是true/false之类的标记,可以理解为这个实体的一些属性,经常需要添加,这种情况,在生产中我们使用过用一个数字,按位来表示这些标记的,比如第三位表示他是不是付费用户,第四位表示他是合作方来的用户还是自己注册的,等等。还有一种情况,需要更复杂的属性列表,属性个数经常变,可以考虑使用一个文本字段,保存结构化的数据,比如自己定义一个xml的格式
使用复杂字段的好处就在于比较灵活,同一类型的数据可以放在一起(实际上相当于把应该是一个关联表的数据放一个字段里了),操作的性能也不错,但是复杂字段里面的内容查询比较困难
还有一种方法,将数据的存储和索引(需要查询的内容)分开存放,相当于主表就一个key-value,value就是一个大的xml(或者其他的一坨),把需要查询的字段放到其他单独的表里去,可以参考friendfeed如何使用mysql,这是一个实际的例子。实际上在02-03年的时候,老是面对这样的问题,我就在考虑这样的方案,我当初的想法是,用bdb来存储数据(就是那个key-value)了,要检索的数据放到lucene里去,但是因为那个系统对实时性的要求而没法实施,但是并不是每个系统都要求这么实时的,在有些地方还是可以考虑使用的
另外,还有column based db,也可以很好的解决这个问题,实际上他就本本回避了加字段的问题,不过现在似乎没有性能很好的实现
上面这些方案的,都有局限性,选用的时候要看场景的,而且有可能今天作出的决定是对的,过了两年就变的不适合了,事情总是在变化的嘛...
分享到:
相关推荐
是不是要修改表结构了呢?我是不想改的,还是用角色绑定的方法来处理,增加一个“张三专用角色”,这个角色是“隐藏”的,不和其他的角色一样的管理,需要通过对“张三”来管理。这个好像说不太清楚,先这样吧,呵呵...
随着便携式终端设备和网络社交媒体的普及,表达民意的障碍越来越少,导致民意领域发生了巨大的结构变化。 因此,政府的在线舆论监督已经在工作方法,管理理念和数据分析技术方面发生了巨大变化,以与时俱进。 为此,...
由于web2.0的普及和深入,用户的主观能动性在网络信息传播中的重要性大大提升,为了对以微博为...最后通过某微博网站的实际数据,观察用户参与度的变化规律,得到应对突发网络舆情应从关键人物入手以舆论影响舆论的结论。
当前有各种各样的语言结构,代表着教育和世代相传的态度中的社会遗产,其目的是成功地应对现实,以行为的方式提出生活和生活本身的概念。 本报告涵盖以下几个方面:作为一种社会互动形式的社会继承,特别是通过谚语...
在人脸识别算法的选择上,该项目采用了先进的深度学习模型,通过大量的训练数据优化模型参数,使得系统能够应对各种复杂场景和人脸变化。无论是光照、角度还是表情的变化,系统都能准确识别出参会人员,确保签到的...
系统结构 面板表由作为前级的检测头加上后级的A/D模数转换与LED数字显示部分组合而成。按照以往的技术,前级检测头只能采用大电流互感器以检测大电流的变化,然而不但体积大、功耗大、成本高、误差大,而且只适用于...
帮助企业应对市场的不确定性,及自身管理的发展变化。 企业信息化构建之初,通过 CAP 可快速定制符合企业业务管理特征和诉求的信息 化系统,高适用、低成本、易调整、见效快,让管理思想、管理方法能够精准落地;...
1 系统总体结构确认 对系统组成、逻辑结构及层次进行确认,对应用系统、支撑系统及各自实现的功能 进行确认,细化集成设计及系统工作流程,特别要注意因软件的引进造成的系统本身结 构和公司其他系统的结构变化。...
通常情况下,大数据可以 分成三种类型:一是结构化数据,即行数据,存储在数据库里,可以用二维表结构来实现 的数据。甲骨文、微软都有这样的数据库管理,用以分析和研究。二是半结构化数据, 这种数据包括电子邮件、...
最后,报告提出了一系列具体的实施步骤,包括时间表、资源分配和监控机制,确保创业活动能够有序进行,并及时调整策略以应对市场变化。综上所述,这份报告不仅是大学生创业计划书的重要组成部分,也是指导大学生如何...
风险评估章节详细列出了可能面临的风险,如资金不足、法规变化、市场波动等,并为每一种风险提出了应对策略。财务预测部分则通过成本分析和收益预测,为项目的经济效益提供量化的数据支持。最后,项目实施步骤详细...
最后,报告将以实施计划作为收尾,概述项目建设的时间表、关键里程碑、团队构成及管理结构等操作细节。整体而言,这份报告旨在为大学生的创业项目提供一个全面而深入的分析框架,确保项目在实际操作中的可行性和成功...
本文详细分析了 CHDNet的不同组件对分类性能的影响,针对PCANet的局限性,设计了非线性变化层、多尺度特征池化层,以提高分类性能。将CHDNet应用在医学图像分类中,包括基于Kinect深度图像的人体生理机能自动检测和...
注意此类视频的特点是相对于前景目标,背景结构较稳定,变化幅度较小,可充分利用该信息实现模型与算法设计。 请你们查阅相关资料和数据,结合视频数据特点,回答下列问题: 问题1:对一个不包含动态背景、摄像头...
,S010、S011,,,,, D006,索 引,理想的状态是数据库的执行计划恰好根据设计者的意图执行,所以除了设计良好的数据结构外,恰当的索引设置是提升系统性能一项至关重要的工作。虽然,系统后期可能不断对系统优化而调整...
周期性规划,战略目标制定,业务增长点 预测,消费结构升级… 难以量化 难以捉摸 难以预测 数据要解决的瓶颈问题 数据要解决的瓶颈问题 IT中心的瓶颈 IT集权下疲于应对 IT放权下数据管理混乱 需求多,响应慢 熬夜...
数据库的设计: 根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作: 概念结构设计的E-R图 数据库逻辑结构设计是以表格的形式说明数据库中有几个表,每个表的...
大数据时代已经悄然到来,如何应对大数据时代带来的挑战与机遇,是我们当代大学生特别是我们计算机类专业的大学生的一个必须面对的严峻课题。大数据时代是我们的一个黄金时代,对我们的意义可以说就像是另一个"80年代...
大数据讲座学习心得(1)全文共2页,当前为第1页。...银行也同样拥有丰富的数据矿藏,不仅存储处理了大量结构化的账务数据,而且随着银行渠道快速渗透到社交网络、移动端等媒介,海量的非结构化数据也在等待被收集和分析