关系型数据库(关系型数据库的基本原理)
数据库这个领域,给我的感觉,在国外这些年的发展,基本上是停滞的。去任何一个seminar,你不会看到有老外在关系型数据库上,有什么交流。
ppt上不会写这些东西,但是你很容易找到nosql的内容,比如netflix就很喜欢讲cassandra的使用经验,还有hbase这些
这种感受是很明显和直接的,如果你没有在国外生活或者工作过。老外根本就没有在数据库上继续投入和研究。就像老外现在都在搞flutter,我们在搞微信小程序。
这么多年了,老外做了什么新的数据库出来?不管是mysql还是pg,都多少年的历史了,还有那些商用的数据库,是不是都是上个世纪90年代的产物?oracledb,ibm的db2,sybase那些,哪个不是00年之前就有的?相比之下,那些nosql,哪个不是00年之后才做出来的?
国内程序员还在鼓吹数据库,是因为那些老程序员,他们只会数据库,所以只能跟你们讲这些东西,nosql他们又不会,英语又看不懂,能讲出什么东西来呢?然后国内外包什么再跟你卷一下,前途是非常悲观的。
被海外力量垄断长达20年之久的数据库终于迎来了翻身之日,我们中国人自己的云上数据库正在将傲慢的甲骨文在中国的数据库市场逐一吃掉。
根据IDC数据显示,在目前的中国关系型数据库市场份额排名中,昔日频繁霸榜的甲骨文已经风光不再,取而代之的则是中国云厂商们出色的市场份额成绩!其中阿里云凭借将近30%的市场份额稳占第一,直接甩了昔日王者甲骨文将近10个点,而紧随其后,腾讯云、华为云也在紧紧追赶,亦有超越甲骨文的潜力。
甲骨文作为昔日关系型数据库市场中的行业翘楚,曾经的辉煌表现毋庸置疑,但是如今甲骨文所遭遇的滑铁卢,也正是对其当年的傲慢行为付出了代价,要知道当时我们决心自研云的时候,甲骨文创始人埃里森甚至还傲慢的表示“云计算就是一派胡言”,正是因为甲骨文忽视了云技术转型的必要性,而在意识到问题的时候已然错失了先机。
而与甲骨文后知后觉的脚步推进不同,如今中国的云生态已然逐渐完善,甚至中国云市场已经成为全球规模最大、增速最快的市场。由此可见,在科技赛道的角逐上,没有永远的王者,不进则退的道理值得每一个国家的所有企业所深思,抓住先机、把握机遇、不畏挑战,才能够在这场没有硝烟的科技角逐战中站稳一席之地,而显而易见的是,我们的中国科技力量正在这场战争中披荆斩棘,勇创佳绩。
关系型数据库的“关系”本质是什么?你肯定想不到。我们通常觉得这种联系是软件架构师分析出来的。其实编程的本质就是翻译,哪会分析出什么新东西来呢?这种关系(联系)都是世界中事物所固有的,在人类语言里,除了词汇就是语法,关系其实是一种词,其实就是及物动词。
我们常常把数据库分为关系型数据库和非关系型数据库。在Codd定义的关系数据库中,指的是实体之间的相互联系。实际上,这种联系是世界中事物所特有的。我们经常说世界上的万事万物都是联系的,事物之间或内部要素互相连接,互相依赖,互相影响,互相作用,互相转化的关系。
我们在生活中感受着联系,都是直接的联系。但是事物通过联系,往往能构成一张巨大的网络,这种联系往往是有条件的,而且也会经常发生变化。
我们的思想都是用语言进行反应,这种联系也反映在语言里,就是及物动词。
举个例子:大学上课,老师,学生,教室和课程都是实体,他们的关系如下:
老师教授课程,这里“教授”就是一个关系,一个老师可以教授多门课程,一门课程可以由多个老师教授,这个关系就是多对多的关系。
教室和课程有关系,叫“占用”,一门课程只能占用一个教室。
学生与课程有关系,叫“选择”,一个学生可以选择多门课程。
教授、占用和选择都是及物动词,后面的宾语就意味着被联系的实体。
与实体一样,关系也可以有属性:“教授”关系有授课方式的属性(现场授课、网络授课)等。“选择”关系上成绩(分数)的属性。
了解了这个语言的小秘密,大家就可以去分析实体关系了。
深入理解面向对象的思想 软件架构师必读:面向对象编程思想(OOP)的由来与本质
#程序员# #Java##数据库#
只能说自己不会用mongodb。传统关系型数据库除了有完善的事物支持,其实在性能、扩展、灵活等方面都比不上nosql。你之所以觉得文档无法控制,很大原因是习惯性了关系表的设计。其实mongo提倡的是数据内聚和适度冗余,用这种方式避免对表join的操作,只要设计得合理用起来就舒服,所以不舒服第一时间应该考虑是不是设计有问题而不是数据库有问题
互联网老兵20年不要使用mongoDB做主数据库。 最近一客户项目无法升级了找到我们,原系统是Java+mongoDB,mongoDB的数据结构比较随意,几乎可以说文档数据了,灵活任性得无法控制了。 我们接手后重构系统,调整为MySQL数据库,无论可维护性、还是可扩展性都要更好。
变化才是唯一不变的东西。这种业务和需求上的变化,对传统的软件开发,尤其是以关系型数据库为基础的软件开发,发出了致命一击。 无代码平台要像人的思维一样灵活,就不能用关系型数据库。 #程序员# #Java# #程序#
博士聊IT现在的程序员已经不会用面向对象的方法了。拿着面向对象工具,写着面向过程的程序。很多程序员从来不用继承关系,这里面既有没弄清楚面向对象的基本理论,包括面向对象和人类自然语言的关系,也有使用了开发框架有所限制的问题。 例如企业做报销系统,发票有打车票、餐饮票、火车票、飞机票和住宿票等等,发票有共同的属性,如开票单位,开票时间,开票金额。但每一种票都不一样的属性,例如打车票有出发时间、到达时间、车牌号;住宿票有入住人数,入住时间和退房时间;火车票有出发城市、达到城市、席位等级。共性和个性的属性交织在一起。怎么办? 在面向对象的分析中是可以设定分类的,父类是发票,子类是各种票,这样属性就继承下来,父类的数据可以动态聚合。但数据库的问题又来了,数据库分成各类明细发票的表,属性都在树叶表上。数据库不支持面向对象,数据库讲究的是关系代数,连接运算。面向对象就搞不下去了,这个叫做对象关系阻抗不匹配。 https://www.toutiao.com/article/7022163867690107431/ 光是属性查询搞起来就累了,这么多发票表,都需要有汇总查询的方法,你说累不累。 方法也是一样的,发票有个方法叫做作废,超过六个月的各种发票都要自动作废。没有继承关系,就这么一句话的需求,够程序员忙活半天的。 程序员就在这种互相矛盾的概念夹缝中生存,还过得挺好,一会Java一会SQL,忙得不亦乐乎,但其实本质效率不高啊。 #Java##程序员##程序#
图数据库(Graph Database)是一种以图结构进行存储和查询的数据库。
随着互联网不断地发展,传统的关系型数据库如Oracle、MySQL已经难以支撑现下大数据量、高并发的场景了。于是,NoSQL横空出世,有像Cassandra这样的column-based,像MongoDB这样document-based。今天聊的是graph-based的数据库,也就是图数据库。
图数据库产品可以分为原生和多模两类。原生指专门针对图数据存储和计算研发的产品,包括Neo4j、JanusGraph等,多模指多个大厂推出的数据库产品中能够兼容处理图数据。多模形态产品的主要问题是针对图谱数据做兼容处理,用于适配其底层的存储机制。原生图数据库在技术的专注度上会更加集中,包括图计算引擎实现和图存储算法。
Neo4j是比较流行的高度可扩展的本地图数据库(用Java编写)之一。Neo4j的Graph平台经过优化,可以存储,映射,分析和遍历连接的数据网络,以发现不可见的上下文和隐藏的关系。Neo4j带有2个版本:社区版和企业版。
JanusGraph作为一款开源产品,JanusGraph主要定位是做图数据的实时检索。特性支持动态扩展、良好的性能指标、支持TinkerPop框架、支持Gremlin语言及技术栈、支持多种底层存储。
阿里又出“风头”了。刚听说,阿里自研的含光800大规模应用在了今年的双十一,支持了淘宝搜索、推荐等业务。
说实话,阿里这些年真的交出了好几个不错的成绩单,先后推出了自研云计算飞天、云原生关系型数据库PolarDB、神龙架构,前阵子的云栖大会上还推出了新的操作系统龙蜥等,如今双11淘宝主搜100%的AI算力由平头哥提供,这些技术阿里不但做到了自研,还逐渐实现了大规模应用、甚至部分开源。
但我觉得,这些并不完全是阿里的功劳。说实话,阿里能走到今天这个地位是必然的。这主要是因为我们国家处在这样一个快速发展的时代。特别是近十几年,中国大力搞科技崛起,对互联网科技企业创造了很好的环境。
可以说,互联网公司崛起的背后都离不开国家经济、科技的发展,特别是阿里,它的云技术发展离不开12306、双11这样大规模高并发的复杂场景的试炼。如果阿里不是中国的互联网企业,绝不可能发展这么快的。
有一句话说,没有马云的时代,只有时代的马云。我觉得很有道理!所以阿里踏踏实实搞自研科技,多攻克一些技术难题,才是对国家最好的回报!
俄乌战争刚一开打,有三件事值得思考:
第1件事:甲骨文Oracle用3个小时“屏蔽”了俄罗斯的所有用户,甲骨文拥有全球最大的关系型数据库,占据俄市场半壁江山。
第2件事:全球统一金融结算系统SWIFT系统将俄罗斯许多银行从中移除,在金融上切断俄罗斯对外贸易。
第3件事:SpaceX创办人马斯克宣称启动“星链”在乌克兰的服务系统,乌克兰可以通过“星链”卫星连接上因军事行动而被中断的互联网。
这三件事有一个共同的特点,都是“根”力量展示。
数据库是互联网技术的“根”,SWIFT是金融系统的“根”,星链是通信系统的“根”。
OLAP 根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP。
ROLAP表示基于关系数据库的OLAP实现(Relational OLAP)。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了“星型模式”。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为“雪花模式”。ROLAP的典型代表是:Doris、ClickHouse、Presto、Impala、Greenplum、Elasticsearch、Hive,Spark SQL等等。
《Apache Doris 轻松入门和快速实践》技术专栏包括Apache Doris架构介绍、环境搭建、入门操作实例和演示项目源代码。技术专栏从实战出发,通过基础介绍入门-环境搭建-项目实践,让初学者快速掌握Apache Doris分析型OLAP数据库开源产品。
MOLAP表示基于多维数据组织的OLAP实现(Multidimensional OLAP)。以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成“立方块(Cube)”的结构,在MOLAP中对“立方块”的“旋转”、“切块”、“切片”是产生多维数据报表的主要技术。MOLAP可选Kylin、Druid等开源产品。
HOLAP表示基于混合数据组织的OLAP实现(Hybrid OLAP)。如低层是关系型的,高层是多维矩阵型的。这种方式具有更好的灵活性。特点是将细节数据保留在关系型数据库的事实表中,但是聚合后的数据保存在Cube中。查询效率比ROLAP高,但低于MOLAP。
果然,突破关键核心技术只是时间问题,只要我们肯踏实做下去,就能看到成效!事到如今,不管像IBM、甲骨文这些在内的海外企业是否愿意承认,但结果就是中国对数据库技术的依赖度在越来越小!从IDC公布的“中国关系型数据库市场厂商市场份额2020”报告显示,国内企业阿里云、腾讯云、华为云均榜上有名,阿里云甚至还高居榜首,超第二名甲骨文10个点!看到这份成绩单后,我们确实应该为国产数据库的崛起而鼓掌,因为这条崛起之路走的坎坷且艰难。当初面临甲骨文在国内数据库市场的垄断,中国人想要拥有自己的数据库无异于“天方夜谭”,但最终我们开辟了一条全新的方向,通过云上建立数据库的方式来打破甲骨文传统数据库的垄断。但在云上建数据库的前提是攻破云计算这个大难关,而国内当时在云计算领域又是0基础,即便阿里做得早,也是靠10年冷板凳搞出来的核心技术。如今,云数据库越来越多进入到大众视线中。Gartner此前就做出预测,到2022年,75%的数据库要跑在云平台之上。如今2年要到了,也是时候试验国产数据库真正成果的时候了!
科技企业赚到钱不仅要做公益,更要搞研发。阿里这几年真的想得很明白,所以一心花钱找人才、搞研发。
前不久,中国电子学会正式颁发了科学技术奖,其中,阿里云主导的“云原生分布式关系型数据库PolarDB”项目获得了科技进步一等奖。重要的是,我们的数据库已经达到了国际领先水平,早在2018年,Gartner全球数据库魔力象限七强中,我们就占了一席之地。阿里云已经与微软、Oracle、SAP、AWS、Google、IBM同台竞技了。
而到了2020年,国际知名行业研究机构Gartner公布2020年度全球数据库魔力象限评估结果出来,阿里云首次挺进全球数据库第一领导者象限。
为什么是阿里云?
从最近的财报来看,2020年前两个季度的研发投入,阿里巴巴以328亿位居第一位。国产数据库的突围证明了,中国科技想要有重大突破,必须要有广泛的投入与关注。不管是国家、高校还是企业,大家都应该出钱、出力,好好在基础技术、底层科研上下功夫,提升我国在高精尖技术领域的竞争力。
特别是互联网科技企业,更要带头,因为互联网经济要想高速发展,离不开技术。所以互联网科技企业就应该加大投入,找人才、搞研发,拿着钱努力搞科技。
这两年,阿里在这方面的确没少下功夫。达摩院发起的数学大赛可谓是全球最难的数学竞赛之一,每年都有来自世界各地的数万人报名参加。阿里这么做,明显是为了寻找更多的科研人才。
希望未来有更多企业能加入搞科研的大业中,让我们真正从经济大国走向科技强国!
自研才是硬道理!在这个技术领域,我们能跟世界巨头掰手腕了。
第十五届中国电子信息技术年会上正式颁发2020年中国电子学会科学技术奖,阿里云自研的“云原生分布式关系型数据库PolarDB”项目获得科技进步一等奖。在飞天云操作系统之后,阿里云又一次获得了该殊荣。
要知道,这个奖项的含金量还是相当高的。评奖是由多位院士组成的专家组负责,PolarDB数据库技术被专家组一致认为复杂,且研发难度很大,达到国际领先水平,才获得了这一奖项。
2017年,阿里云推出自研关系型数据库POLARDB,如今, PolarDB数据库技术已经实现了规模化市场应用。2018年10月,Gartner全球数据库魔力象限出现了7强格局:微软、Oracle、SAP、AWS、Google、IBM和阿里云。
去年11月,国际知名行业研究机构Gartner评估显示,作为中国云厂商的代表,阿里云首次挺进全球数据库第一阵营——领导者(LEDERS)象限,这是中国自研数据库的里程碑式突破!
事实上,从阿里云成立以来,其在自研技术上已经拿下了不少的成果。就拿上次获得此奖项的自研“飞天”云操作系统来说,现在的飞天系统已经具有连接百万级别服务器的能力,抗住了全球最大的互联网流量洪峰。
今天,以阿里云为代表的中国自研技术不断突出重围,我国整体技术实力与日俱增。未来,相信会有更多的科技公司加大科研投入,我们掌握的自研技术一定会越来越多!
扬眉吐气,中国又一技术击败外企,市场份额相差10个百分点!最近看到IDC发布的一则数据,很是惊讶也很兴奋。在中国关系型数据库市场厂商中,甲骨文市场份额第一的辉煌已经不再,取而代之的是阿里、腾讯、华为等中国厂商。其中阿里以市场份额占比28.08%排第一,比排第二的甲骨文多了超过10个点。看到这里千万别以为是甲骨文技术不行了,情况恰恰相反,这些年甲骨文技术还在日益完善。中国云厂商们能取得这样的成绩,完全是硬着头皮上,因为不仅要拿回利润,更要争一口气。一位通信行业老教授曾讲过一段辛酸历史,那几年由于国内没有先进的数据库技术,大家基本采用了外国产品。等需要更新换代时,才发现公司辛苦赚的钱,却要分出去一大半。例如在2007年的时候,联通如果要升级到最新版本的产品,就必须先缴纳6000万的Licence罚款。一些厂商因为费用太贵,选择用了盗版的数据库,最后还是难逃被起诉的结果。但是现在好了,咱们的云技术开始走在了前列。在前不久结束的世界云计算大会上,中国的云企业们也能和西方云巨头讨论未来云计算发展方向。我们不应该忘记,这不是西方巨头眷顾我们,而是中国企业很多年前迎难而上争取来的。信号已经越来越强了,过去在一些科技领域我们确实落后过,但在中国企业们的齐心协力下,这一切正在被改写!





