
对于第一个问题,设计一个schema->(messageID,likedCount),记录每条微博的点赞数。messageID是微博的编号,likedCount是该微博的点赞人数。但是这里有两个问题需要解决,第一是并发,第二是数据量。
每条微博都有可能有很多人同时点赞,为了保证点赞人数精确就需要保证likedCount是原子 *** 作,这个可以由应用程序来实现,也可以用redis的事务来实现(如果redis有事务机制或者自增功能的话),但是我觉得为了性能考虑,也可以不用实现原子 *** 作,具体原因就不展开了。
每天都上亿可能更多的微博内容产生,这样就会有上亿个新的(messageID,likedCount)生成,这样的数据量是比较大的,单机数据库比较难提供高效的服务,所以需要采取sharding的功能(有时候也叫分表分库),可能根据messageID把这些schema分散到十个或者更多的shards上(据说,sina微博有600个节点,如何三个节点组成一个shard,就有200个shards),这样每个shard处理的请求就只有原来的十分之一,从而就能提高服务的性能。
关于点赞人列表的设计,一般来说,可能想到的schema是(messageID,userID),但是这样的设计有一个小问题,就是有些大发的微博可能会得到几十万的点赞,这样就会产生几十万个条数据,这样数据有点多,读取起来可能也慢。所以可以用这样一个schema(messageID,partID,userIDs),让一个messageID对于多个userID,同时比对应太多的userID,所以加入一个新的partID,一个part存1000个userID,这样几十万个点赞,只需要存几百条数据。这样做还有一个好处,用户点赞人时的,一般都不是完全显示所有点赞人,而是一批一批显示,这样可以一次只读一条数据,就可显示一批点赞用户信息。
数据库
data base
为满足某一部门中多个用户多种应用的需要,按照一定的数据模型在计算机系统中组织、存储和使用的互相联系的数据集合。
带有数据库的计算机系统,除具备一般的硬件、软件外,必须有用以存储大量数据的直接存取存储设备、管理并控制数据库的软件——数据库管理系统(DBMS)、管理数据库的人员——数据库管理员 (DBA)。这样的数据、硬件、软件和管理人员的总体构成数据库系统。数据库仅是数据库系统的一个组成部分。
数据库系统的功能和特征 数据库系统由文卷系统发展而来。与文卷系统相比,这种系统具有数据、体系和控制三个方面的主要特征。
数据特征 在文卷系统中虽然程序与数据之间可用存取方法进行转换,但文卷还是与应用程序对应的,即数据仍面向应用。每一应用各自建立自己的一组文卷。不同的应用若涉及相同的数据,则这些数据分别纳入各自的文卷之中。文卷的各种记录之间没有建立联系,因而数据冗余度大。增加新的应用,必须同时增加新的文卷。因此,文卷系统中的文卷是无结构的、不易扩充的信息集合。数据库则不仅描述数据本身,而且描述数据之间的联系。它的数据结构反映了某一部门的整体信息结构,数据冗余度小、易于扩充新的应用,因而是面向数据总体结构的信息集合,可为多个用户共享。
体系特征 一切数据都有逻辑和物理两个侧面。在数据库系统中,数据逻辑结构的描述称为逻辑模式。逻辑模式又分为描述全局逻辑结构的全局模式(简称模式)和描述某些应用所涉及的局部逻辑结构的子模式。数据物理结构的描述称为存储模式。这两种模式总称为数据库模式。
数据库系统中,用户根据子模式编制程序。子模式与模式模式与存储模式之间有软件进行映射。因此,程序与数据之间具有两级独立性:物理独立性和逻辑独立性。数据的存储模式改变,而模式可以不改变,因而不必改写应用程序,这称为物理独立性。模式改变时,子模式可能不改变,也就不必改写应用程序,这称为逻辑独立性。由于数据库系统具备比较高的程序与数据的独立性,可以使程序员在编制应用程序时集中精力考虑算法逻辑,不必过问物理细节,而且可以大大减少应用程序维护的工作量。
控制特征 数据库数据数量庞大,结构复杂,又为多个用户所共享。因此,必须由数据库管理系统在定义、建立、运行以及维护时进行统一管理和控制,以保证数据库数据的安全性、完整性和并发 *** 作的一致性。此外,还必须有数据库管理员专门负责对数据库的管理、控制监督和改进。
由于数据库系统具有上述特征,它的出现使信息系统的研制从围绕加工数据的程序为中心,转变到围绕共享的数据库来进行。这便于数据的集中管理,有利于应用程序的研制和维护。数据减少了冗余度和提高了相容性,从而提高了作出决策的相容性。因此,大型复杂的信息系统大多以数据库为核心,数据库系统在计算机应用中起着越来越重要的作用。
研究课题 数据库研究的课题,主要涉及三个领域。
数据库管理系统软件的研制 DBMS是数据库系统的基础。研制DBMS的基本目标,是扩大功能,提高性能和可用性,从而提高用户的生产率。70年代以来,研制的重点是探索关系数据库管理系统的设计,内容包括关系数据语言、查询优化、并发控制和系统性能等。另一类课题是对DBMS标准化的研究,即研究一个统一的DBMS体系结构的规范。
数据库设计 这是在计算机系统具有的数据库管理系统的基础上,按照应用要求以及计算机系统所提供的数据模型和功能,设计一个结构良好、使用方便、效率较高的,以数据库为核心的应用信息系统。这一领域主要的研究课题,是数据库设计方法学和设计工具的探索。例如,运用软件工程的方法和工具指导数据库设计;研究数据库设计各个阶段中完备的方法和工具;以关系数据库的规范化理论为指南进行数据库逻辑设计等。
数据库理论 主要研究关系数据库理论。关系数据库理论研究的意义,一方面在于它为数据库学科奠定了理论基础;另一方面它为数据库设计提供了判别标准,从而成为数据库设计的有力指南。研究的主要内容是关系的规范化理论。关系规范化理论已应用于数据库设计的各个阶段。
发展 数据库技术是计算机科学中发展最快的领域之一,新的领域越来越多。
分布式数据库系统 随着70年代后期分布计算机系统的发展,相应地研究成功分布式数据库系统。分布式数据库系统是一个在逻辑上完整,而在物理上分散在若干台互相连接的结点机上的数据库系统。它既具有分布性又具有数据库的综合性。这是数据库系统发展的一个重要方向。分布式数据库系统结构复杂,其中最复杂的是分布式数据库管理系统。
数据库机器 新的计算机系统的体系结构。它把由中央处理器包办的数据库 *** 作分散给一些局部的部件来执行,或转移到一个与主计算机相连的专用计算机去执行,以提高并行性。数据库机器的发展,包括智能控制器和存储器,专用处理机和数据库计算机。
数据库语义模型 数据库的数据模型基本上属于语法模型,语义体现很不完备,不能明显地含有现实世界的意义。因此,用户只能按照DBMS所提供的数据 *** 纵语言访问数据库。语义模型能准确地描述现实世界中某个部门的信息集合及其意义,使用户能基于对现实世界的认识或用类似于自然语言的形式来访问数据库。这方面的研究已发展为数据语义学。
数据库智能检索 数据库技术和人工智能相结合,根据数据库中的事实和知识进行推理,演绎出正确答案,这就是数据库的智能检索。这涉及到自然语言用户接口、逻辑演绎功能和数据库语义模型等问题,如70年代末所开始的知识库管理系统和演绎数据库的研究。
办公室自动化系统中的数据库 研究在办公室自动化系统中数据库技术的应用,其中主要研究对各种非格式化数据如图像、声音、正文的处理,以及面向端点用户的高级语言接口。
数据库系统
database systems
由数据库及其管理软件组成的系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。计算机的高速处理能力和大容量存储器提供了实现数据管理自动化的条件。
数据库系统一般由4个部分组成:①数据库,即存储在磁带、磁盘、光盘或其他外存介质上、按一定结构组织在一起的相关数据的集合。②数据库管理系统(DBMS)。它是一组能完成描述、管理、维护数据库的程序系统。它按照一种公用的和可控制的方法完成插入新数据、修改和检索原有数据的 *** 作。③数据库管理员(DBA)。④用户和应用程序。对数据库系统的基本要求是:①能够保证数据的独立性。数据和程序相互独立有利于加快软件开发速度,节省开发费用。②冗余数据少,数据共享程度高。③系统的用户接口简单,用户容易掌握,使用方便。④能够确保系统运行可靠,出现故障时能迅速排除;能够保护数据不受非受权者访问或破坏;能够防止错误数据的产生,一旦产生也能及时发现。⑤有重新组织数据的能力,能改变数据的存储结构或数据存储位置,以适应用户 *** 作特性的变化,改善由于频繁插入、删除 *** 作造成的数据组织零乱和时空性能变坏的状况。⑥具有可修改性和可扩充性。⑦能够充分描述数据间的内在联系。
数据库计算机
database computer
实现数据库的存储、管理和控制的一种专用计算机系统。它能十分快速而有效地完成各种数据库 *** 作,并能适应大型数据库的管理。
由于微处理机技术和简约指令集计算机(RISC)技术的飞速发展,使高档微机和各种工作站(见计算机工作站)的价格越来越低,而处理能力和存储容量却越来越高。可以说,通用处理机在这方面的发展在较大程度上降低了人们对数据库机的进一步研究的积极性,使得数据库机的发展在一定程度上处于停顿状态。面对这种严峻形势,它的进一步发展必须解决成本太高和使用太专等问题,以争得用户。数据库机的未来发展概括起来大概有以下几方面:①充分利用大规模集成电路技术、并行处理和其他先进硬件技术,提高数据库机的性能/价格比。②研究新的数据库机体系结构和相应的并行 *** 作算法和软件,提高整机系统的性能,使它能适应一些特殊应用中对海量数据库进行管理的需求。③将它与人工智能技术结合,做出有一定智能的数据库机,使这种机器不但能对数据进行管理和控制,而且能支持对知识的加工和运用,从而在知识处理领域发挥作用。④充分利用分布数据库技术,发展面向通用硬件和软件的能在网络环境下使用的数据库机,提高数据库机的通用性。
持续一个月的数据库实训,让我参与了软件工程化的开发过程
其中体会最深的便是我们这个实训网的几个之最:一.项目最大:项目大是因为我们这个事业起点网站涉及到用户众多-高校,企业,学生,老师,专家,第二个原因是网站的功能多-用户管理,网上实习,网上竞赛,毕业实习设计,项目管理,人才库管理,人才推荐,搜索
项目大很容易造成系统范围的泛滥,在我们的开发初期,由于需求不太明确,功能实现没有重点,造成了需求范围的扩大,给项目开发进度造成了严重的滞后性
然后我们召开了会议讨论了这个问题,一致认同先把项目的基本功能实现,将网站的基本架构搭建起来,最后再在这个基础上继续增加我们网站的其他功能
因此在这个过程中,我深刻体会到了软件工程初期阶段的需求分析以及概要设计的重要性,这两个文档是指导我们后期开发的最重要的依据
二.数据库表最多:如此庞大的系统,就需要庞大的数据库来支持,所以项目大的直接后果就是我们的数据库表特别多,而且表与表之间的依赖关系也复杂,实体类之间的关系众多,设计起来有一定的难度
数据库的另外一个问题是-数据表的属性,数据表属性的设计完全是依赖于我们刚开始做的需求分析文档,如果需求分析不完整的话,就会造成数据库表属性的缺失,从用户的角度看,就会觉得你的系统提供的数据不够全面,信息量小
三.开发团队最大:我们团队一共有十四个人,这个对于我们的项目经理来说,是一个相当严峻的问题,毕竟十四个人的团队相当于其他几个小组加起来的人数总和,管理起来有相当大的难度
对于我们这些小组成员来说,由于沟通渠道太多,造成了我们项目中遇到问题,不知道去跟哪个小组成员沟通
为了解决这个问题,我们在团队中又选出了三个小组长,小组成员遇到问题,先去咨询小组长,然后小组长提供反馈信息
四.项目各个模块间藕合度高:网站涉及的各个功能模块之间的联系紧密,模块之间的接口设计的好坏是项目最终集成成功与否的最重要因素
用户管理这一个部分要为每个模块提供接口,主要是用户的编号以及用户的类型等
每个页面之间的链接也是其中重要的模块接口
这个问题由于我们前期做好了充分的沟通以及按照概要设计中的接口说明去设计自己的模块,所以后期的模块整合没有遇到什么太大的不兼容性等问题
接下来就谈谈我这一个月中的工作:需求分析阶段:需求分析阶段我完成了网上竞赛模块的需求分析,其中遇到的主要问题是阅读材料后发现网上实习,网上竞赛,毕业设计指导这几个模块的功能是类似的,提取需求分析后不够明确,经过几次跟汤老师的交流后,确定了这几个模块之间的具体差别,网上竞赛模块的基本需求也大致确定了,网上竞赛模块的基本功能就是学生通过网站报名参加竞赛,企业审核通过后,专家对作品进行评分,排名
概要设计阶段:在需求分析的基础上,对网上竞赛模块进行了比较具体的概要设计,流程图(IPO图以及用例图);这个阶段的主要难点是对网上竞赛业务流程的描述,如何实现学生报名,企业发布,专家评审的步骤 *** 作,与及跟其他模块对该模块的限制
数据库设计阶段:我负责整合初步数据库设计说明书,分配组员按照各自的功能模块的具体需求设计自己模块需要的数据表,然后对这些数据表进行整合
在这个过程中遇到的问题就是数据库实在是太大了,最后下来一共有30多张表,表与表之间的关系复杂,关联性大,需要设置的外键较多,很难将所有的属性字段给提取出来,属性的类型设置也是一个问题,采用数值型还是采用字符串性在数据库设计中尤为重要,因为在后台搜索方面,数值型比较快捷,而在数据显示方面,字符串型又有直接读出不用转换的好处
每个表的主键我们采用了用实体的编号去标记它,因为这样实体间关联起来会更加简单
数据库的设计关键是要对整个项目的整体的把握,并且要细化对每个实体类的具体属性要求
详细设计阶段:我觉得是最重要的一个方面,一个完整的详细设计说明应该可以帮助程序员完成具体的实现,程序员可以不用考虑模块之间的耦合问题,只需要将单一的功能按照逻辑顺序编写出来就可以了
网站整体构架搭好了,我们就可以在里面填充自己的功能了
但是因为时间太仓促了,我们这个阶段也就缩水了,带来后面的问题就是后期代码编写的时候比较混乱,函数接口较难统,界面风格多样化
这个阶段,我的主要工作是跟队友一起设计出了网上竞赛模块的学生,企业,管理员,高校以及专家的界面
编码阶段:我们是用ASP
net开发的,主要任务就是从工具中选出你想要的控件,然后在控件响应函数中填充代码,完成相应的事件响应
这里遇到的最大问题是页面的排版问题,因为自己是第一次开发网站,造成了自己设计的界面风格单调,不太美观,现在就尽量做到页面的整齐
这个阶段主要做的就是:写代码→编译→调试→写代码
这一个月中我学到了很多东西,技术方面就是学会了用ASP
Net编写网站,最重要的是让我经历了软件工程化的所有阶段,让我对整个软件工程有了感性的认识,而且将大学三年所学到的知识进行了一次系统的串联,更重要的是学会了如何跟项目团队中的成员沟通问题,这是一个宝贵的实践经验
数据库系统的软件主要包括:
(1)数据库管理系统,DBMS是为数据库的建立、使用和维护配置的软件。
(2)支持DBMS运行的 *** 作系统。
(3)具有与数据库接口的高级语言及其编译系统,便于开发应用程序。
(4)以DBMS为核心的应用开发工具。
(5)为特定应用环境开发的数据库应用系统。
2.整个数据库系统对硬件资源提出了较高的要求:
(1)为了存放 *** 作系统、DBMS的核心模块、数据缓冲区和应用程序,需要足够大的内存。
(2)要有足够大的磁盘等直接存取设备存放数据库,有足够的磁带(或软盘)用于数据备份。
(3)系统要提供较高的通道能力,以提高数据传送率。
3.DBA的重要职责是保证数据库的安全性和完整性。因此DBA负责确定各个用户对数据库的存取权限、数据的保密级别和完整性约束条件;DBA还有一个重要职责就是监视数据库系统的运行情况,及时处理运行过程中出现的问题。比如系统发生各种故障时,数据库会因此遭到不同程度的破坏,DBA必须在最短时间内将数据库恢复到正确状态,并尽可能不影响或少影响计算机系统其他部分的正常运行,DBA要定期对数据库进行重组织,以提高系统的性能;当用户的需求增加和改变时,DBA还要对数据库进行较大的改造,包括修改部分设计,即数据库的重构造。
4.系统分析员负责应用系统的需求分析和规范说明,要和用户及DBA相结合,确定系统的硬件软件配置,并参与数据库系统的概要设计。
数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。在大多数情况下,数据库设计人员就由数据库管理员担任。
应用程序员负责设计和编写应用系统的程序模块并进行调试和安装。
5数据库管理系统的功能有:(1)数据定义;(2)数据 *** 纵;(3)数据库运行管理;(4)数据组织、存储和管理;(5)数据库的建立和维护;(6)数据通信接口。
6.DBMS由以下几个部分组成:(1)数据定义语言及其翻译处理程序;(2)数据 *** 纵语言及其编译(或解释)程序;(3)数据库运行控制程序;(4)实用程序。
在关系模型中,实体以及实体间的联系都是用关系来表示的。例如导师实体、研究生实体、导师与研究生之间的一对多联系都可以分别用一个关系来表示。在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
关系模型的数据结构
关系数据库模型是如今最流行的数据库模型,其流行源于它结构的简单性。在关系模型中最重要的数据结构就是关系。构建关系模型下的数据库,其核心是设计组成数据库的关系。
关系设计中涉及到一些术语包括:
关系就是一张表,设计关系就是设计一张表;
元组是表中的一行;
属性是表中的一列,属性名是给属性起的名字;
关键字是表中的某个属性组,唯一确定一个元组;
关系模式是对关系的描述,一般表示为关系名(属性1,属性2,···,属性n);
外键是关系中不是该关系的关键字或只是关键字的一部分的某个属性或属性组合,但它同时是另一个关系的关键字;
主表是以外键作为主键的表;
从表指外键所在的表。
在为数据库设计关系时,必须为每个关系指定一个关键字或主码,并且在该关系中,关键字的值不能为空,即关键字的值为空的元组在关系中是不允许存在的。在有些关系中关键字是由单个属性组成的,在另一些关系中关键字是由若干个属性的组合而构成的,即这种关系中的元组不能由任何一个属性惟一表示,必须由多个属性的组合才能惟一表示。关系模式是稳定的,而关系是随时间不断变化的,因为数据库中的数据在不断更新。
以上就是关于新浪微博「点赞功能」数据库如何设计的全部的内容,包括:新浪微博「点赞功能」数据库如何设计的、38.什么是数据库、数据库实验心得体会等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)