数据库扩展性
A. 为什么说HADOOP扩展性优于MPP架构的关系型数据库
个人没有这方面的经验。但是我觉得吧,传统的数据库产生的时代,数据量远远没有现在这么大。
大量数据存入磁盘,大量数据读出的时候,自然就慢了。只有多节点协同才能提供高并发性。
MPP不适合PB级(其实有部分MPP号称支持PB级),是因为它确实处理不了那么大的数据量,它的扩展性只能到百级别,再多节点性能也无法提高了,扩展性限制了MPP处理的数据量。
B. 如何设计一个好的,可扩展性的数据库
如何设计一个好的,可扩展性的数据库
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
C. 数据库都有哪些
一、数据库种类有哪些
早期较为时兴的数据库种类有三种,分别是层次式数据库、网络式数据库和关系型数据库。而在如今的互联网中,最常见的数据库种类主要有2种,即关系型数据库和非关系型数据库。
二、层次数据库介绍
层次数据库是最开始研制的数据库系统软件,它把数据根据层次构造(树结构)的方法呈现。层次数据库以前是非常热门的数据库,但伴随着关系数据库的逐渐流行,如今早已非常少应用了。
较为具备象征性的层次数据库是IMS(Information Management System)数据库,由IBM企业研发。
三、关系型数据库详细介绍
网络数据库和层次数据库在数据独立性和抽象性级别上有所欠缺,用户开展存储时,需要声明数据的存储结构和相对路径。而关系数据库就可以较切实解决这种问题。
和Excel工作簿一样,关系型数据库也选用由列和行构成的二维表来管理数据,简单易懂。另外,它还利用sql(Structured Query Language,结构化查询语言)对数据开展实际操作。
四、非关系型数据库详细介绍
伴随着互联网技术Web2.0的兴起,传统关系型数据库在应对大数据量,比如大规模和高并发的微博、微信或者SNS类型的web2.0动态网页时,已经有些力不从心,曝露了许多难以克服的难题。因此出现了针对大规模数据量场景,以性能卓越和应用便捷为目的的的数据库产品——NOSQL数据库。
D. 如何设计数据库使在其基础上开发的软件具有良好的可扩展性
这是个非常有深度的问题,恐怕没有标准答案。我只能尝试说出我的建议,供你参考
1.根据你的需求选择适合的数据库管理系统,这很重要,对后期的扩容起到决定性的作用。
2.数据库结构的设计很难做到一步到位,因此你要做的仅是根据需求来维护你的数据字典
3.数据的备份工作一定要做到位,不能有丝毫差池,这是你产品的生命线。
4.掌握些数据库中表与关联的常识,这样有利于数据库的检索和提高数据的存取速度
5.希望能帮到你
E. 问问大神,请问mybatis和hibernate的区别
首先简单介绍下两者的概念:
Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装。
Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与SQL之间的映射关系。
其次具体从几个方面说一下两者的区别:
1.两者最大的区别:
针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。
针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。
2.开发难度对比
Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大,学习周期较长。
而Mybatis则相对简单一些,并且Mybatis主要依赖于sql的书写,让开发者感觉更熟悉。
3.sql书写比较
Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。不过没有自己的日志统计,所以要借助log4j来记录日志。
Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。不过Hibernate具有自己的日志统计。
4.数据库扩展性比较
Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差。
Hibernate与数据库具体的关联都在XML中,所以HQL对具体是用什么数据库并不是很关心。
5.缓存机制比较
相同点:Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。
不同点:Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。
MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
两者比较:因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。
而MyBatis在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。
6.总结:
Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。
Hibernate的优势是DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
参考博客:http://blog.csdn.net/julinfeng/article/details/19821923
F. NoSQL数据库是如何解决可扩展性问题的
NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。
G. 为什么说HADOOP扩展性优于MPP架构的关系型数据库
hive跟mpp的内存管理方式不大一样,mpp内存管理比较精细,他主要的想法是在每个机器上放个数据库,传统数据库的内存管理比较复杂,主要是内外存交互的东西,这样的架构决定了mpp在小数据量的时候,latency可以做的比较小,但是在大数据量的时候,throughput做不上去。
而hive的内存管理非常粗放,他后来就是maprece的job,mr的job是没有太多精细的内存管理的,他就是拼了命地scan,完了顶多就是个spill,这样的架构导致throughput很大,但是latency很高,当你集群规模很大的时候,你一般会追求很大的throughput,当数据量很大的时候,如果你用mpp那种传统的内存管理的话,大批量的计算反而会慢,而且更加占资源,所以vertica这种一开始就考虑了列式存储就是这个道理。
H. 云计算 NoSQL数据库是如何解决可扩展性问题的
NoSQL 数据库系统目前主流的有 HBase、MongoDB 和 SimpleDB等,每个产品的实现都不尽相同,还是要根据你的实际应用来分析的的。比如你使用的Hbase,那就参考hadoop的扩展方法即可。
I. 云计算 NoSQL数据库是如何解决可扩展性问题的
NoSQL
数据库系统目前主流的有
HBase、MongoDB
和
SimpleDB等,每个产品的实现都不尽相同,还是要根据你的实际应用来分析的的。比如你使用的Hbase,那就参考hadoop的扩展方法即可。
J. mysql数据库的扩展性是什么意思
memcached是基于内存的软件。
首先可以作为提升系统性能的工具。如果将memcached作为应用系统的cache服务,那么数据库不需要做任何改动。
其次可以将memcached与mysql整合为数据服务层。有两种方式。第一种是将memcached的内存容量作为mysql数据库的二级缓存,以此提升mysql的缓存容量。第二种是通过msyql的UDF(userdefined function interface)来与memcached进行数据通信,维护和更新memcached中的数据。应用程序直接通过memcached读取数据。
第一种情况适用于业务比较特殊,实在难以对数据操作进行切分的场景。waffle grid就是这样的一个开源项目。目前仅用于innodb的buffer pool。在这种情况下,memcached中的数据完全由数据库来维护。