SlideShare a Scribd company logo
1 of 27
高性能数据架构设计 2011年8月28日
这是一些实践过的简单而有效的数据架构技巧的集合。 好的架构不是庞大而看上去完美的,而一定是简单而有效的 抛砖引玉,希望能引发关于数据架构的讨论和思考。
用户登录的场景
一个常见的Web应用数据架构场景 用户输入用户名和密码登录到系统中 系统进行用户名密码检验,如果用户验证有效,则允许用户登录系统 用户登录系统之后,显示用户状态,例如用户名,帐户积分,余额或者其他通知与消息
用户登录的数据库操作原型 Select UserID from tblUserwhere UserName = ‘LoginName’ and UserPassword = ‘PasswordMD5’
SQL分析 功能实现了,性能呢? 如果数据库为UTF-8编码 LoginName为电子邮件,则长度可能为20-40个字节。 Password长度可能为6-20个字节长。 则当文本数据索引较大则基于内存的索引查询命中率降低,大量读取磁盘造成性能较慢。 解决之道, 将UTF-8字段的字符串转换为Hash编码的数值,每个整型数据占用MySQL数据库4个字节。基于内存的索引查询数据量增加将近10倍。
经验总结 在进行文本检索的时候,尽量将文本的Hash值进行索引,并通过索引进行查询,以提升系统查询性能。 注意 采用的Hash算法的冲突较少,算法性能较好。 Hash计算之前要首先统一字符串编码。例如,同样”Hello,工程师社区”在通过UTF-8和Unicode编码,Hash数值也会不同。 使用自己的Hash算法,而不要使用SDK库提供的Hash算法。 不同语言的Hash算法不同。 甚至,同一种语言的HashCode()的数值也不同,如.NET Framework。
优化之后的SQL原型 Select UserID from tblUserwhere UserNameHash= -1234589  and UserPasswordHash= 123456 Select UserID from tblUser where UserNameHash = -1234589 and UserPasswordHash = 123456andUserName = ‘LoginName’ and  UserPassword = ‘PasswordMD5’
获得用户积分信息原型 Select sum(tblUserReputation.Reputation), tblUser.UserName, tblUser.UserLevelfrom tblUser, tblUserReputationwhere tblUser.ID = tblUserReputation.UserID
应用分析 多表关联查询聚合数据背后的设计 数据库索引 3NF与2NF 实时数据与相对实时数据 物化视图(视图索引)
数据库索引 数据库索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 Hash索引 vs. B-树索引 Hash索引可以一次定位 B-树索引多次IO,从根节点到枝节点
3NF vs. 2NF 3NF 多表关联查询,损失性能 2NF 部分情况下,将常用的用户状态信息,统计信息,定期执行之后以2NF存储,则数据读取性能更好。 甚至,在数据表中建立 Setting 字段,通过CSV或者XML格式进行半结构化数据存储,既能保证数据库设计的“弹性”,也可以减小多表关联查询。 需要注意的是数据一致性检验和相对实时。
相对实时的场景使用不同的数据管理方式 很多场景,数据并不要求绝对实时,只需要相对实时 异步队列 数据缓存,复制与分发 2NF
用户行为与日志类型数据
不同策略 集中 vs. 分散 数据库 vs. 文件系统 同步 vs. 异步 CSV vs. XML 建议对于日志型数据采用 集中存储 文件系统分级管理 异步存储 CSV格式 不建议将日志数据存入数据库中。
用户互动与SNS信息
基于内存数据库的缓存技术 实时性强、访问频繁、并发访问量大的数据,可以通过内存数据库实现 内存数据库特点 高性能 高速缓存 快速实现与部署 2011年11月CatchException.NET沙龙将专题讨论
查找内容或人名
全文检索技术 全文检索 全文检索对于非结构化和半结构化数据进行检索 为何不推荐使用SQL Server或者Oracle全文检索 分词与噪声词 中文分词与逆序词典 结构化数据、非结构化数据与半结构化数据
查找人名、地名、机构名称的方法 姓名二分法分词 基于拼音查找 基于首字母缩略词查找 通过坡度,确保连续字词查找质量
系统演进与架构腐化
数据架构腐化 状态值与状态图的维护 过多的补丁造成复杂的多表联合查询 字段语义的变化 不恰当的非结构化与半结构化数据管理 不恰当的日志类型数据管理 不恰当的索引设计 不恰当的3NF或者2NF设计 磁盘碎片与索引碎片
风险与策略
常见的风险 缓存数据与数据库内容不一致 系统现代化改造过程中字段定义的改变 死锁 单点故障风险 非结构化索引数据存储 日志类型数据存储
应对之道 存储与服务节点可用性风险 基于 NAS / SAN 的存储方案 缓存系统的集群 反向代理管理集群节点 数据处理风险 通过Data Engine层封装所有对于数据的操作 对外暴露SOA接口,提供服务。例如,Thrift, Web Services, JSON,MQ等。
FAQ 问题答疑 http://CatchException.NET 分享者 陆明http://www.catchexception.net/PublicProfile/1/3254785944065506726
近期沙龙计划 2011年9月 实时交易系统技术方案 2011年10月 跨平台移动应用开发 2011年11月 海量数据与高并发系统 2011年12月 企业IT战略管理与策略 报名流程 注册CatchException.NET,并完善个人档案和照片 报名沙龙http://salon.catchexception.net/?page_id=55 费用 沙龙免费,如收费另行通知 如果在咖啡厅或酒吧举行沙龙,请点一杯咖啡。

More Related Content

Viewers also liked (10)

Novela 3er parcial.
Novela 3er parcial.Novela 3er parcial.
Novela 3er parcial.
 
Hermana elfride
Hermana    elfrideHermana    elfride
Hermana elfride
 
Niveles de lenguaje de programación
Niveles de lenguaje de programaciónNiveles de lenguaje de programación
Niveles de lenguaje de programación
 
Powerpoint fet
Powerpoint fetPowerpoint fet
Powerpoint fet
 
Lilia mabel cafaro mza embarazadas-2011
Lilia mabel cafaro mza embarazadas-2011Lilia mabel cafaro mza embarazadas-2011
Lilia mabel cafaro mza embarazadas-2011
 
Presenatcion 2 DiseñO
Presenatcion 2 DiseñOPresenatcion 2 DiseñO
Presenatcion 2 DiseñO
 
Total Stress Management Guide For Nurses Dr Shriniwas Kashalikar
Total Stress Management Guide For Nurses Dr Shriniwas KashalikarTotal Stress Management Guide For Nurses Dr Shriniwas Kashalikar
Total Stress Management Guide For Nurses Dr Shriniwas Kashalikar
 
2
22
2
 
Festival de Baile Kinder Play 2009
Festival de Baile Kinder Play 2009Festival de Baile Kinder Play 2009
Festival de Baile Kinder Play 2009
 
ใบงานที่ 7
ใบงานที่  7ใบงานที่  7
ใบงานที่ 7
 

Similar to Cenet salon.220904-高性能数据架构设计

腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
Michael Zhang
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
areyouok
 
民间秘方
民间秘方民间秘方
民间秘方
dynasty
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
evercislide
 
功能演示 网站
功能演示 网站功能演示 网站
功能演示 网站
fairyzero
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
zhoujg
 
database
databasedatabase
database
s06283
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
yiditushe
 
Great architect cn
Great architect cnGreat architect cn
Great architect cn
drewz lin
 

Similar to Cenet salon.220904-高性能数据架构设计 (20)

腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
民间秘方
民间秘方民间秘方
民间秘方
 
從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
Actuate presentation 2011
Actuate presentation   2011Actuate presentation   2011
Actuate presentation 2011
 
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
功能演示 网站
功能演示 网站功能演示 网站
功能演示 网站
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
database
databasedatabase
database
 
客服系統的軟體架設計分享
客服系統的軟體架設計分享客服系統的軟體架設計分享
客服系統的軟體架設計分享
 
Acl desktop
Acl desktopAcl desktop
Acl desktop
 
聯銓資訊科技 2019 研討會 (五月) part3
聯銓資訊科技 2019 研討會  (五月) part3聯銓資訊科技 2019 研討會  (五月) part3
聯銓資訊科技 2019 研討會 (五月) part3
 
Sql Alchemy Story
Sql Alchemy StorySql Alchemy Story
Sql Alchemy Story
 
Hyperion基础架构
Hyperion基础架构Hyperion基础架构
Hyperion基础架构
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 
Great architect cn
Great architect cnGreat architect cn
Great architect cn
 

Cenet salon.220904-高性能数据架构设计