19. 21
2.0 概念:What and Why
概念:数据访问层DAL 【Layer=Services】
【维基百科】A Data Access Layer (DAL) is a layer of a computer program which provides simplified
access to data stored in persistent storage of some kind, such as an entity-relational database. This data
access layer is used in turn by other program modules to access and manipulate the data within the data
store without having to deal with the complexities inherent in this access.
DAL是一系列服务的集合,是DAO在大型系统中的自然延伸,是SOA的具体实现。
好处:
简化客户端接口,规范数据操作【透明性分片】
保持客户端接口,动态升级服务端实现【SOA】
支持对巨量数据的访问【缓存;读写分离;分片(分库/分表)】
服务的治理【认证/管理/权限/监控/分析/优化/…】
功能需求:
访问代理【Proxy】
读写分离【RAIDb-1镜像,每个库都是全库。写库是单点】
数据分片【RAIDb-0分区,每个库都是子库。】
高可用性【支持Quorum-NWR模型——多个写库】
特性需求:
平台中立【DAL服务器,可部署在多种平台上】
语言中立【DAL客户端,支持Java、C/C++、PHP、Flex等多种语言。】
数据库中立【1)多种数据库类型;2)多个数据库版本?】
资源共享【1) 共享DataSource连接池; 2)共享Cache。】
访问日志【1)提供SqlLog可用于性能瓶颈分析;2)提供BackLog可用于数据恢复。】
访问控制【1)用户认证;2)连接管理;3)权限控制。】
读写分离【FullDB】
数据分片【分表,分库】
访问集群【负载均衡:HA-Proxy、JGroup】
【修改历史】
Version 5.0.20130606 初期版本。
Version 5.1.20130608 +写库读操作修改测试验证。+脚本语言选择。*设计原则。
Version 5.2.20130619 +性能测试,+用例和测试
Version 5.2.20130620 +其它新需求,+功能测试(黄进),*性能自试(殷舒),*设计方案,+实现方案(比较),+发布地址
Version 5.3.20130621 *其它新需求(TODO)
Version 5.3.20130624 *相关约定(+SHARDING_FIRST),
Version 5.3.20130626 +例9单列分片普通SQL全局优先查询,+实现:新旧读写分离方式对比,*背景问题,*背景需求,
Version 5.3.20130626 *需求满足度(改为:需求和示例),个别细节修改(分片类型,新旧方式的对比)
Version 5.4.20130626 评审。隐藏部分内容(高可用数据存储架构,DAL技术选择,DAL服务平台,DAL地位,现状多表分离和多表查)
Version 5.5.20130628 发布。*新需求(陈瑛琦)支持DB2导出的归档数据文件;*相关约定:分隔符逗号改分号?!
Version 5.5.20130709 +新需求-结果合并
Version 5.6.20130802 +例10-x:多表分页
Version 5.6.20130814 *其他:框架拆分
Version 5.7.20131016 +例10-0:多表分页查询的参数
Version 5.7.20131016 +小节:新需求(TODO-1016)
20131030数据访问层DAL架构和实践(6)SQL解析(殷舒).ppt
20140326数据访问层DAL架构和实践(7)技术交流(刘胜).pptx
Version 6.1.20130326
3.3+分析:解析SQL时的问题 / 状态性
Version 7.1.20140425
1.2*需求分析:不同层次的方案/不同模式中间层/不同机房的方案
1.2+需求分析:CAP和RQC原则/两个行业类比
2.2+背景:已有中间层技术方案(DDB)
补充调整:1.0/1.1/1.2/1.3
--------
标题:
architecture_and_practice_for_dal_7_exchanges_with_icbc
Architecture and Practice for DAL (7) Exchanges with ICBC
Architecture and Practice for Data Access Layer (7) Exchanges with ICBC
联动优势数据访问层DAL架构和实践之七:技术交流
说明:
针对2014.3.26与工行软件开发中心北京研发部交流,而准备的DAL相关材料。
和已有DAL软件(如许超前DAL手机之家、陈思儒Amoeba/贺贤懋Cobar等)不一样,在前端访问方式的选择上,抛弃JDBC方式,而是为同一个dalet数据服务,同时提供自定义TCP长连接和HTTP长连接两种接口。
因而通过抛弃JDBC可以获得多方面的好处——
1)可减少S端协议解析和查询分析的开销;
2)也简化C端编程。
3)后端存储就不再限于RDB了,而可以是任意NOSQL、文件、缓存、甚至是Tuxedo等在线服务。
4)可以实现无状态了,更容易横向扩展。
5)从接口上就可消除join等关键字的误用,避免引起服务端负担过重。
--------
分享:http://www.slideshare.net/nikeliu/20130626dal51-h
标题:联动优势数据访问层DAL架构和实践之五:访问分片数据
Architecture and Practice for DAL (5) Data Sharding
Architecture and Practice for Data Access Layer (5) Data Sharding
Architecture and Practice for DAL (5) Data Sharding
联动优势数据访问层DAL架构和实践之五:分片数据分片
说明:
How to implement a dalet to access sharding databases.
按照许超前的说法(见http://www.slideshare.net/xcq/ss-3629618),其实现的DAL与memcache比较,其性能差异主要在协议解析和查询分析上。
和已有DAL软件(如许超前DAL手机之家、陈思儒Amoeba/贺贤懋Cobar等)不一样,在前端访问方式的选择上,抛弃JDBC方式,而是为同一个dalet数据服务,同时提供自定义TCP长连接和HTTP长连接两种接口。
因而通过抛弃JDBC可以获得多方面的好处——
1)可减少S端协议解析和查询分析的开销;
2)也简化C端编程。
3)后端存储就不再限于RDB了,而可以是任意NOSQL、文件、缓存、甚至是Tuxedo等在线服务。
4)可以实现无状态了,更容易横向扩展。
5)从接口上就可消除join等关键字的误用,避免引起服务端负担过重。
--------
http://en.wikipedia.org/wiki/Amazon_Relational_Database_Service
Several other vendors provide cloud database services similar to Amazon RDS. Oracle offers Oracle Cloud,[16] a database service supporting Oracle's database technology. Microsoft offers Windows Azure SQL,[17] a service supporting the Microsoft SQL database. Competitors supporting MySQL include RackSpace Cloud Databases,[18] Google Cloud SQL,[disambiguation needed] [19] HP Cloud for MySQL,[20] Xeround Cloud Database[21] and ClearDB.[22]
http://msdn.microsoft.com/en-us/library/gg433040.aspx
For getting started information about Windows Azure storage, see the following topics in the Windows Azure Developer Center:
How to Use the Blob Storage Service
How to Use the Table Storage Service
How to Use the Queue Storage Service
http://www.scaledb.com/DBaaS-Database-as-a-Service.php
DBaaS: Ecosystem Isn’t Important, It’s Everything!
The database graveyard includes object databases, graph databases, XML databases, object-relational databases, in-memory databases, and now NoSQL and NewSQL.
http://www.oracle.com/technetwork/topics/entarch/oes-refarch-dbaas-508111.pdf
【论文】Database as a Service: Reference Architecture – An Overview
http://dblab.xmu.edu.cn/post/google-spanner/
Spanner会把下面的数据特性集合暴露给应用:基于模式化的半关系表的数据模型,查询语言和通用事务。
Spanner的数据模型不是纯粹关系型的,它的行必须有名称。更准确地说,每个表都需要有包含一个或多个主键列的排序集合。
http://db-engines.com/en/system/DynamoDB%3BSimpleDB 比较
http://www.programmer.com.cn/11081/
http://stackoverflow.com/questions/8961333/amazon-simpledb-vs-amazon-dynamodb
http://stackoverflow.com/questions/4572227/difference-between-simpledb-and-s3
http://zh.wikipedia.org/wiki/Amazon_SimpleDB
Amazon SimpleDB是一个分散式数据库,以Erlang撰写。同与Amazon EC2和亚马逊的S3一样作为一项Web 服务,属于亚马逊网络服务的一部分。
http://www.nosqlnotes.net/archives/163 Amazon S3 & Simpledb内部实现分析
Posted by chuanhui on 2011 年 03 月 27 日 Leave a comment (6)Go to comments
Amazon S3申请了一篇专利,名称为”Keymap Service Architecture for A Distributed Storage System“,而Amazon Simpledb的实现细节暂时没有公开。本文根据Dynamo论文,S3专利以及S3&Simpledb的对外API尝试推测这两个系统的内部实现。
Amazon S3(Simple Storage Service)起源于Dynamo,基本可以认为是Dynamo(称为Keymap) + Blob File System(称为Bitstore)。
S3和Simpledb最大的区别还在于一致性选择,初期的S3选择走Dynamo的技术路线,后来的系统发现这个路线不容易走,比如用户迫切希望的乐观锁和强一致读功能无法实现,因此Simpledb对于更新操作选择强一致性。Simpledb支持乐观锁机制并提供了简单的SQL Select子集支持,我认为这个系统的设计是比较优雅的。
http://hi.baidu.com/benzhan/item/8858e04c24db8fe81f19bce1 SELECT FOR UPDATE
假设有个表单products ,里面有id 跟name 二个栏位,id 是主键。
例1: (明确指定主键,并且有此数据,row lock) SELECT * FROM products WHERE id='3' FOR UPDATE;
例2: (明确指定主键,若查无此数据,无lock) SELECT * FROM products WHERE id='-1' FOR UPDATE;
例2: (无主键,table lock) SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
例3: (主键不明确,table lock) SELECT * FROM products WHERE id<>'3' FOR UPDATE;
例4: (主键不明确,table lock) SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;
注1: FOR UPDATE 仅适用于InnoDB,且必须在事务区块(BEGIN/COMMIT)中才能生效。
注2: 要测试锁定的状况,可以利用MySQL 的Command Mode ,开二个视窗来做测试。