我是你常用的关系型数据库。1970年,IBM研究员E.F.Codd将我的理论带到了这个世界,而我已经快50岁了。我的家人住在世界各地的强大服务器中,保存着你们人类的许多宝贵数据,从你的银行余额到你的购物清单,我们负责保存几乎每一笔在线交易。我是如此重要,以至于几乎每个软件从业者都需要努力学习。很多时候我就是存储大量数据的***。您所要做的就是选择我的家庭成员,例如:Oracle、MySQL、Db2、SQLServer家伙。对了,还有一个小巧玲珑的SQLite,是手机开发离不开的。在瞬息万变的IT世界里,一项技术能够存活这么久,真是不可思议。也许有人会想到这样一个问题:你是怎么活这么久的?简单地拍拍脑袋想,也许我可以大规模地保存和检索数据?但是也可以直接使用文件系统吗?为什么需要数据库?还有“关系”?不,我能活这么久,是因为我有一些独特的秘密。1.我有扎实的数学基础。这不是我吹牛。我的身体充满了高贵的数学:域、关系、笛卡尔积。关系代数:选择、投影、连接……顺便问一下,你知道什么是“关系”吗?如果面试官问你,你应该如何回答?事实上,所谓的关系在数学中被定义为笛卡尔积的一个子集。比如有两个集合:s1={a,b}s2={1,2}s1和s2的笛卡尔积为:s1×s2={(a,1),(a,2),(b,1),(b,2)}那么S的任何子集都是一个关系:{(a,1),(a,2)}是一个“关系”{(a,2),(b,1),(b,2)}是另一种“关系”{(b,2)}也是一种关系……如果你竖着看s1和s2,把s1看成x列可以的一组值take,s2被认为是y列可以取的一组值。(x,y)不就是一张表吗?我还有一个很漂亮的属性:关系(表)计算出来后,select,join,where,intersection,union,difference,结果还是一个关系(表)!你觉得我的数学基础很扎实吗?2.我很直觉,至少表面上是这样。如果你要给非计算机专业的人解释数据库,你可以跟Excel对比一下,看他能不能看懂:你看,这不就是一张表吗,有行有列。3.易用这里不得不说说SQL,一个优秀的抽象层,完全屏蔽了底层的实现细节。您不必考虑底层文件如何存储,只需发出SQL:SELECT......FROM。.....哪里...就好了。与早期复杂的层次和网络数据库相比,SQL过于简单。不仅是开发人员,您的业务人员只要稍加培训就可以编写SQL。我清楚地记得,一个业务分析师经常去数据库查数据,然后告诉程序员数据不对,有bug,搞得程序员很头疼。4.对数据完整性的支持很好。我的每个字段都有一定的类型,你也可以查看数据的长度和取值范围。我的主键和外键共同保证数据的准确性和一致性,防止数据丢失。5.我支持商业!这可能是我成功的关键。ACID对于核心系统数据(例如银行帐号)极为重要。不难想象一个不完整的传输操作的影响。6.范式如果要使用我们的关系型数据库,就必须遵守一定的规则,而这些规则就是“范式”。***Paradigm是基本要求,即每一列都是一个不可分割的数据项。连这个都满足不了,那就睡吧。第二范式要求实体属性完全依赖主键,不能部分依赖主键。第三范式是一个表不能包含其他表中包含的非主键信息。笼统地说,这个表只包含其他表的ID。一般来说,你会遵循***和第二范式,但是为了性能和避免过多的join,有时候会违反第三范式,有些字段的信息会冗余,这个我可以理解.7、大家用我做“数据集成”这是DanielMartinFowler提出的观点:企业级应用存在于丰富的生态系统中,它需要与其他应用协同工作,而那些程序是由不同的团队管理开发出来的的合作。不同的应用程序经常使用相同的数据,一个应用程序更新数据后,必须让其他应用程序知道数据发生了变化。通过“共享数据库集成”,多个应用程序将数据存储在一个数据库中,所有应用程序都可以轻松地使用彼此的数据。8.遗留数据几十年来,我在这里积累了大量的应用数据。市长虽然换了,但是访问关系数据库的应用程序换了几次,编程语言也换了几次。然而,关系型数据库中的数据静止不动,其生命周期远远超过应用程序的生命周期,数据成为企业的宝贵资产。但是世界上没有完美的东西。虽然我有很多优点,但我也有很多缺点。在互联网时代,这些缺点在高并发、大流量的背景下显得尤为突出:对分布式系统支持不好,难以形成集群,难以横向扩展。复杂类型(XML、JSON等)不易表达。仅仅处理来自互联网的海量请求是不够的。......为了处理这些问题,你们人类可以说想了很多办法,比如什么NoSQL数据库,什么分库分表,比如说你们发展了BASE理论,不追求ACID中的强一致性,只要做到“基本可用”,最终一致性就够了。但是不得不说,对于核心数据,交给我自己保管才是正确的做法。我都快50岁了,不知道还能不能再活50年,但我觉得再活20年还是可以的,建议你好好学习。【本文为专栏作家“刘欣”原创稿件,转载请通过作者微信获取授权公众号coderising】点此查看该作者更多好文
