数据库程序员面试分类真题2.docx
数据库程序员面试分类真题2筒答题1. DBA的职责是什么?正确答案:DBA负责全面地管理和控制数据库系统。具体职责包括:决定数据库的信息内容和结构;决定数据库的存储结构和存取策略:定义数据的(江南博哥)安全性要求和完整性约束条件:监督和控制数据库的使用和运行:改进和重组数据库系统。考点数据库系统的组成与结构2. 系统分析员、数据库设计人员、应用程序员的职责是什么?正确答案:系统分析员负贡应用系统的需求分析和规范说明,他们要和用户及DBA相结合,确定系统的硬件、软件配置,并参与数据库系统的概要设计。数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。在很多情况卜.,数据库设计人员就由数据库管理员担任。应用程序员负责设计和编写应用系统的程序模块,并进行调试和安装。考点数据库系统的组成与结构3. 试述数据、数据库、数据库系统、数据库管理系统的概念。正确答窠:D数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音等。现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。数据与其语义是不可分的,例如,100这个数字可以表示一件物品的价格是100元,也可以表示一段路程是100公里,还可以表示一个人的体重为100fo2)数据库(DalaBase,DB):数据库是长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。3)数据库系统(DataBaSeSystem,DBS):数据库系统是指在计算机系统中引入数据库后的系统构成。数据库系统和数据库是两个概念。数据库系统是一个系统,数据库是数据库系统的个组成部分。但是,在日常工作中人们常常把数据库系统简称为数据库。4)数据库管理系统(DataBaSeManagementSystem,DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS是一个大型的夏杂的软件系统,是计克机中的基础软件。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。目前,专门研制DBMS的厂商及其研制的DBVS产品很多。著名的有美国IBV公司的DB2关系数据库管理系统和IMS层次数据库管理系统、美国OraClC公司的OraCle关系数据库管理系统、美国微软公司的SQ1.Server等。考点数据库系统的组成与结构4. 定义并解释概念模型中的以下术语:实体,实体型,实体集,属性,码,实体联系图(E-R图)。正确答案:D实体:客观存在并可以相互区分的事物叫实体。2)实体型:相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。3)实体集:同型实体的集合称为实体集。4)属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。5)码:唯一标识实体的属性集称为码。6)实体联系图(E-R图):实体联系图提供了表示实体型、属性和联系的方法。实体型用矩形表示,矩形框内写明实体名;属性用椭圆形表示,并用无向边将其与相应的实体连接起来;联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、l:n或m:n)o考点数据库系统的组成与结构5. 什么是数据库系统的型和值?正确答案:型(TyPe)是指一类数据的结构和属性的说明,值(ValUe)是型的一个具体赋值。例如:记录型:(学号,姓名)记录值:(08450226,李多多)考点数据库系统的组成与结构6. 什么是数据库镜像?它有什么用途?正确答案:数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。数据库镜像的用途有:1)用于数据库恢熨。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBVS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。2)提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。考点数据库系统的组成与结构7. 什么是口志文件?为什么要设立口志文件?正确答案:口志文件让用来记录事务对数据库的更新操作的文件。设立口志文件的目的是进行事务故障恢豆;进行系统故障恢复:协助后备副本进行介质故障恢复。考点数据库系统的组成与结构8. 在登记日志文件时为什么必须先写日志文件,后写数据库?正确答案:把时数而修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,那么以后就无法恢夏这个修改了:如果先写日志,但没有修改数据库,那么在恢复时只不过是多执行一次UnClO操作,并不会影响数据库的正确性。所以一定要先写口志文件,即首先把口志记录写到口志文件中,然后写数据库的修改。考点数据库系统的组成与结构9. 数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?正确答案:数据库系统中可能发生各种各样的故障,大致可以分为事务内部的故障;系统故障;介质故障;计算机病毒。其中,事务故障、系统故障和介质故障影响事务的正常执行:介质故障和计算机病毒破坏数据库数据。考点数据库系统的组成与结构10. 什么是数据库的再组织和重构造?为什么要进行数据库的再组织和重构造?正确答案:数据库的再组织是指按原设计要求重新安排存储位置、回收垃圾、减少指针链等,以提高系统性能。数据库的重构造则是指部分修改数据库的模式和内模式,即修改原设计的逻辑和物理结构。数据库的再组织是不修改数据库的模式和内模式的。进行数据库的再组织和重构造的原因:数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低了数据的存取效率,数据库性能下降,这时DBA就要对数据库进行重组织。DBVS一般都提供用于数据重组织的实用程序。数据库应用环境常常发生变化,如增加新的应用或新的实体,取消某些应用,有的实体与实体间的联系也发生了变化等,使原有的数据库设计不能满足新的需求,需要调整数据库的模式和内模式。这就要进行数据库市构造。考点数据库系统的组成与结构11. 什么是数据库的完整性规则?正确答案:数据库完整性(DatabaSeIntegrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计。不管是SQ1.SCrVer还是MySQ1.,它们都是关系型数据库,既然是关系型数据库,就要遵守“关系型数据库的完整性规则”。关系型数据库提供了三类完整性规则,分别是实体完整性规则、参照完整性规则和用户自定义完整性规则。在这三类完整性规则中,实体完整性规则和参照完整性规则是关系模型必须满足的完整性的约束条件,称为关系完整性规则,它们适用于任何关系型数据库系统,主要是针对关系的主关键字和外部关键字取值必须有效而做出的约束。用户自定义完整性规则是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。这约束机制一般不应由应用程序提供,而应由关系模型提供定义并检验,用户自定义完整性主要包括字段有效性约束和记录有效性。考点关系型数据库完整性规则12. 三级模式和二级映像有哪些优点?正确答案:三级模式和二级映像有如卜的优点:1)数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性。2)数据和程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由DBMS管理,用户不必考虑存取路径等细节,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。考点三级模式结构和二级映像13. 什么是RDBMS?它有什么特点?正确答案:RDBMS(RelationalDatabaseManagementSystem,关系型数据库管理系统)是E.ECOdd博士在其发表的论文大规模共享数据银行的关系型模型基础上设计出来的。关系型数据库是将数据组织为相关的行和列的系统,而管理关系型数据库的计弊机软件就是RDBMS。它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据。自关系型数据库管理系统被提出以来,RDBMS获得了长足的发展,许多企业的在线交易处理系统、内部财务系统、客户管理系统等大多采用了RDBMSo关系型数据库,顾名思义是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。结构化查询语言(StrUCtUredQuery1.anguage,SQ1.)就是一种基于关系型数据库的语言,这种语言执行对关系型数据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成.°截至2017年,业界普遍使用的关系型数据库管理系统产品有OraCIe、MySQ1.、DB2以及SQ1.SerVer等。RDBMS的特点包括:数据以表格的形式出现;每一行存储着一条单独的记录:每个列作为一条记录的一个属性而存在;许多的行和列组成一张表:若干的表组成数据库。考点关系型14. 请列举一些你所知道的关系型数据库。正确答案:若按照大小来分类,则关系型数据库可以简单分为如下几类。1)小型数据库:Access>foxbase,SQ1.iteo2)中型数据库:MySQ1.,SQ1.Server、Informix.3)大型数据库:OracleDB20考点关系型15. 请简述OraCIe、MySQ1.和SQ1.SerVer数据库。正确答案:OraCIe数据库,又名OraCIeRDBMS,或简称OraCIe,是甲骨文公司的一款关系型数据库管理系统。它是数据库领域一宜处于领先地位的产品。可以说OraCle数据库系统是目前世界上流行的关系型数据库管理系统,系统可移植性好、使用方便、功能强大,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好、适应高吞吐量的数据库解决方案。MySQ1.是一个关系型数据库管理系统,由瑞典MySQ1.AB公司开发,目前是OraCle旗下公司。MySQ1.是最流行的关系型数据库管理系统,在WCb应用方面,MySQ1.是最好的RDBMS应用软件之一。SQ1.ServCr是由MierOSOfl开发和推广的关系型数据库管理系统,最初是由Microsoft-.Sybase和AShtOn-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。SQ1.SerVer是一个全面的数据库平台,使用集成的商业智能(BUSineSSIntel1igcnce.BD工具提供了企业级的数据管理。SQ1.SerVer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,从而可以构建和管理用于业务的高可用和高性能的数据应用程序。考点关系型16. 什么是内存数据库?正确答案:内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能帽极大地提高应用的性能。典型的内存数据库有SQ1.ite、MenlbaSe和TimesTenoSAP公司专门开发了一款大型的内存数据库HANA,并且在逐步占领市场,而传统的数据库巨头OraCIe公司开发的TimesTen也是一款内存数据库。可以预见,内存数据库将会是未来的一个发展趋势。内存数据库适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。考点内存数据库17. 请列举一些常见的内存和非内存数据库的代表数据库及其适用场兔。正确答案:见下表。非内存数据库内存数据库代表数据OracleMySQ1.SQ1.ServerDB2SQ1.iteTimesTen库瑞典1992始于惠普实验室研开发公司甲骨文MySQ1.AB公司开发,后被微软IBM目,1996年D.RichardHippTimesTen公Oracle收购立,2005年被Orac1e收购最新SQ1.Server版本12CR2MySQ1.5.72016vi°5SQ1.ite312.1.0.3.0软件1.inux、1.inux、Windows,1.inux、1.inux、1.inux、支持AIX.AIX.平台WindowsWindows1.inUX版IX.SQ1.WindowsWindowsAIX、Windows用景装大适场安包小移安业如、联公型,信、统大务电动通系I)Web网站系统2)目志记录系统3)数据仓库系统4)嵌入式系统免费,适用于小型企业nJ用要动算主移计嵌入式数据库项目、需要数鲁I剂臼而响应时间极库的小型桌面软回的系纺件、需要数据尔次库的手机软件>2GB300MB内存数据库3GB500MB5MB200MBServer预览版已发布18. 什么是OraCIeTimeSTen内存数据库?正确答案:OracleTiIneSTen内存数据库是一款内存优化的关系型数据库。该产品可使应用大幅提高响应速度和乔吐量来满足当今有实时需求的企业,尤其适合电信、金融、互联网、旅游、在线游戏、保险等行业的企业。部署在应用层的TimeSTen数据库是一款可设入式或者独立的数据库。它完全驻留在物理内存中,通过标准SQ1.接M进行数据库操作。此外,该产品还包括复制技术来进行实时事务在TimesTen数据库之间的复制,进而实现高可用性和分担负载的目的。考点内存数据库19. 当节点宕机时,由于是内存数据库,TimeSTen是如何恢复的?正确答案:当整个数据库驻留内存时,TimeSTen仍旧有事务日志和检查点文件存放在磁盘上。当系统重启或者意外宕机时,内存数据库可以从检查点文件和事务口志中得到恢复。另外,用户还可以通过配置复制技术来提高可用性。考点内存数据库20. NoSQ1.兴起的原因有哪些?正确答案:大数据技术近儿年发展十分迅速,在互联网公司以及传统公司都得到了广泛的应用。传统的关系数据库在应付IWb2.O网站,特别是超大规模和高并发的SNS(SocialNetworkSite.社交网)类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库NoSQ1.(NotOnlySQ1.,泛指非关系型的数据库,意即“不仅仅是SQ1.”)则由于其本身的特点得到了非常迅速的发展,NoSQ1.数据库的产生就是为了解决大规模数据集合以及多重数据种类带来的挑战,尤其是大数据应用难题。NOSQ1.的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。NOSQ1.的兴起原因主要是随着Heb20时代的到来,关系型数据库越来越不能满足互联网应用的需求,从而产生了NoSQJ这些需求包括:数据的高并发读写:数据的高可用性;海量数据存储:海量数据的实时分析等。考点NoSQ1.21. 大数据技术都包括哪些?它们和NOSQ1.的关系是什么?正确答案:大数据技术很多,占据主流地位的大数据技术有HadOop、Storm.SPark等,它们又是由很多更具体的技术组成。比如组成Hadoop大数据平台的技术有HDFS.YARN、MapReduceAmbari、AVro、CassandraChUkWa、HBaseHive、MahOUt、Pig、Tez、ZOoKeePer等。大数据技术是对海量的结构化和非结构化的数据进行提取、管理、处理、分析、存储等的技术,所以,大数据技术和NOSQ1.的关系是包含关系。NoSQ1.技术主要是面向结构化数据和非结构化数据进行存储和管理的技术。所以,N。SQ1.只是大数据的个方面,大数据技术中,涉及存储的还可以是关系数据库,以及分布式文件系统等。考点NoSQ1.22. 常见的NoSQI.数据库有哪4类?各有哪些代表数据库?正确答案:NoSQ1.数据库大约有四大分类:键值(Key-ValUe)数据库、列存储数据库、文档型数据库和图形(GraPh)数据库,见卜.表。S键值数据库列存储数据库文档型数据库图形数据库主要使用到一个哈希表,这个简表中有一个特定的键和介一个指向特定数据的指针。Key-Value模通常是用来应对分布式存储的海量数据,键仍然存在,但是它们的特点是键指对于文档型数对于图形据库,其灵感(GraPh)数据来自库,它与于1.OtUSNotes其他行列以办公软件,而及刚性结构且它与的SQ1.数据型对于信息系统来说,向了多个列第一种键值存库不同,它其优势在储类似。这种使用灵活的于简单、易部署,但是类型的图形模型,如果只对数据模型是版并且能够扩部分值进行查询或更本化的文档,展到多台服新,那么键半结构务器上。值数据库就显得效率低化的文档以特NoSQ1.数据库下了。键定的格式存没有标准的值数据库特点包含以键储,例如查询语言为索引的JSON0文档型(SQ1.),因存储方式,访问速度极数据库可以看此,进行数快作是键据库查询需值数据库的升要制定数据级版,允许它模型。许多们之间NoSQ1.数据嵌套键值,而库都有REST且文档型数据式的数据接库比键口或者查值数据库的查询效率更高询APl以节点、关系、属性为以列相关存面向集合存基础存储以键为索引的存储方储架构进行数储,模式自数据,善于式,访问据存储,适合由,使用处理大量复速度极快于批量数据处高效的二进制杂、互连理和即席查询数据存储等接、低结构化的数据Redis、1.eVeIDB、RocksDB.CouchDB>Neo4J、RiakKV、OracleBetkelevDBHBasexMongoDB>InfoGrid,CassanclraxSequolaInfinite(OracleBDB)、Accumulo-,DB、Graph、HyperTablexCouchBase'OrientDIk1<1V1k-rt>1.、EhcachexMemCaChed、Druid、VerticaMark1.ogicArangoDIkClusterpointMapGraph特点数据库举例Cabinet/Tyrant、Dynamo、FoundationDIkMemcacheDBxAerospike,Voldemort典型应用场景内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等,高读取、快速检索分布式的文件系统,适合于批量数据处理和即席查询数据模型Key指向ValUe的键值以列柒式存对,通储,将同一列常用哈希表来实现数据存在一-起Web应用(与Key-Value类似,Value是结构化的,不同的是社交网络,数据库推荐系统能够了解ValUe等,专注于的内容),适用构建关系图于数谱、社会关据变化较少,系、公共交执行预定义查通网络、地询,进行数据统计的应用程序以及需要提供数据版本支持的应用程序Key-Valuc对应的键值对,Va1ue为结构化数据图及网络拓扑图结构查找速度快查找速度快,可扩展性强,更容易进行分布式扩展数据无结构化,通常只被当作字符串或者二进制数据功能相对局限数据结构要求不严格,表结构可变,不像关系型数据库一样需要预先定义点结构查询性能不高,而且缺乏统一的查询语法利用图结构相关算法,比如最短路径寻址、度关系?5找等很多时候需要对整个图做计算才能得出帘要的信息,而且这种结构不太好做分布式的集群方案下表总结了MongoDB¼RiakKVHyPerTabIe和HBaSe这四个产品的主要特性。特性MongoDBRiakKVIlyperTableIIBase逻辑数据模型文档键值(Key-Value)列存储列存储CAP支持CAAPCACA动态添加删除节点支持支持支持支持多DC支持支持多种特定语言不支持支持支持接口APl(Java、Python、PerhC#等)HTTP之上的JSONREST,ThriR,JavaC+,Thrift持久化模型磁盘磁盘内存加磁盘(nJ调的)内存加磁盘(可调的)相对性能更优(C+编写)最优(ErIang编写)更优(C+编写)优(JaVa编写)商业支持BashoTechnologiesHypertableIncCioudera考点NoSQI.23. 试比较TimeSTen和Redis数据库。正确答案:从如下几点进行比较:1)在速度上,吞吐量TimesTen优于Rediso2)RediS不支持复杂逻辑查询,不适合项目要求,而TimeSTen支持标准SQ1.e3)它们都支持分布式。4)RediS开源,TimeSTen不开源。考点NoSQ1.24. 行存储和列存储有哪些区别?正确答案:将表放入存储系统中的方法有两种:行存储(RoWStorage)和列存储(CoIUmnStorage),绝大部分数据库是采用行存储的。行存储法是将各行放入连续的物理位置,这很像传统的记录和文件系统,然后由数据库引擎根据每个查询提取需要的列。列存储法是将数据按照列存储到数据库中,与行存储类似。列存储是相对于传统关系型数据库的行存储来说的,简单来说两者的区别就是如何组织表,列存储将所有记录中相同字段的数据聚合存储,而行存储将每条记录的所有字段的数据聚合存储。列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询时,只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩或解压算法。应用行存储的数据库系统称为行式数据库,同理,应用列存储的数据库系统称为列式数据库。随着列式数据库的发展,传统的行式数据库加入了列式存储的支持,形成具有两种存储方式的数据库系统。传统的关系型数据库,如OraCIe、DB2、MySQ1.、SQ1.SerVer等采用行式存储法,当然传统的美系型数据库也在不断发展中。随着OraCIe12c推出InMemory组件,使得OraCle数据库具有了双模式数据存放方式,从而能婚实现对混合类型应用的支持:传统的以行形式保存的数据满足O1.TP应用;列形式保存的数据满足以查询为主的O1.AP应用。新兴的HbaSe、HPVertica、EMCGreenplum等分布式数据库采用列存储,当然这些数据库也有对行式存储的支持,比如HPVCrtica。随着传统关系型数据库与新兴的分布式数据库不断发展,列式存储与行式存储会不断融合,数据库系统会呈现双模式数据存放方式,这也是商业竞争的需要。行存储NSM(N-aryStorageMode1)按行存储,把一行数据作为一个整体来存储没有索引的查询使用大具体而言,行存储和列存储的区别见卜表。项目列存储彳储模DSM(Decompositiox1StorageModel)存储数按列存储,一行数据包含一个列或者多个据的方歹J,每个列以单独一个Cell式来存储数据索引数据即索引使用场合优点适用于O1.AP、数据仓库、数据挖掘等查询密集型应用,不适合用在O1.TP,或者更新操作,尤其是插入、删除操作频繁的场合1)每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,大幅降低系统的I/O,尤其是在海量数据查询时,1/0向来是系统的主要瓶颈之据C-SIOre、MonetDB的作者调查和分析,查询密集型应用的特点之一就是查询一般只关心少数几个字段,而相对应的,SM中每次必须读取整条记录2)应必是一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法,换句话说,列式存储天生就是适合压缩,因为同列里面的数据类型是相同的适用于O1.TP系统、插入更新等频繁的系统从查询来说,行存储比较适合随机查询,并且RDBMS大多提供二级索引,在整行数据的读取上,要优于列式存储由于设计上的不同,列式数据库在并行查询处理和压缩上更有优势。而且数据是以列为单元存储,完全不用考虑数据建模或者说建模更简单了。要查询计算哪些列上的数据,直接读取列就行。没有万能的数据库,列式数据库也并非万能,只不过给DBA提供了更多的选择,DBA需根据自己的应用场景自行选择。考点行存储和列存储