版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库选择策略什么是数据库?“Adatabaseisanorganizedcollection
of
data”. --
Wikipedia简单地来说,数据库就是对数据的管理业务中包括了对数据的增,删,改,查等操作数据管理中包括用户访问权限,持久化,分布式等不同的方案选择数据库举例用户id用户名密码昵称1Danna123456Helloworld2Wang888888WangBin3JackabcyuiLeonardo假设一个用户管理系统,它的数据库至少应该有以下几个功能:保存这张用户信息表能够通过id,用户名或昵称查找到其对应的所有信息。支持对密码,昵称的修改。支持对用户的添加和删除。尽量少的响应时间尽量少的存储空间数据库举例如果存在这样一个超级数据库,它可以存储任意大小的数据以及数据之间的关系,同时提供了最快的增删改查操作,那么它就能解决一切数据问题。然而理想是美好的,现实往往是残酷的。我们不能没有无穷的存储空间,也没有光速的响应时间。我们有的仅仅是一台500G磁盘,4G内存I3
处理器电脑。如何选择合适的数据库?如何最优化输出的结果?基本问题分析数据怎么存?数据怎么查找?怎么修改数据?怎么添加和删除数据?用户id用户名密码昵称1Danna123456Helloworld2Wang888888WangBin3JackabcyuiLeonardo假设一个用户管理系统,它的数据库至少应该有以下几个功能:保存这张用户信息表能够通过id,用户名或昵称查找到其对应的所有信息。支持对密码,昵称的修改。支持对用户的添加和删除。数据库的基本分类针对面临的一些问题,现有的数据库往往有以下一些简单的性质分类。数据怎么存?持久化存储,
内存数据库单机,分布式数据怎么增删改查?关系查找,key-value查找操作是否安全?事务一致性,最终一致性可用性故障了怎么恢复?大部分数据库都具有故障恢复功能。数据库的基本分类用户id
用户名密码昵称1
Danna123456Helloworld2
Wang888888WangBin3
JackabcyuiLeonardo用户id1{用户名:Danna,,密码:123456}2{用户名:Wang,密码:888888,昵称:WangBin}3{用户名:Jack,密码:abcyui,邮箱:jack@}数据库的基本分类事务A银行转账B:A查询当前余额,A输入转账数额,银行从A账户删除金额,银行给B账户增加金额,B确认金额增加。如果中间某一步出错了?如果同时两个人在用同一个账户转账?事务保证了操作序列的完整执行,在金融业务中尤为重要。一致性实时一致性,A微信发布了一张照片,同时他的所有好友都能看到。最终一致性,A微信发布了一张照片,其好友总会在未来某个时刻(明天)看到。实时一致性往往消耗计算资源,实际场景中会采用最终一致性进行一定程度的妥协。常用数据库介绍Mysql开源的关系型数据库,至今最流行的开源关系型数据库简单易用,拥有大量的第三方插件,社区活跃,文档丰富。关系型数据库支持快速的复杂查询操作。支持完整的事务操作和较高的安全性。常用数据库介绍Mongodb模式自由,可以自由地更具需要随时修改文档格式。支持海量数据的查询和插入,支持完全索引自动支持分片等分布式操作,支持故障恢复与备份,学习成本低需要注意的是,与mysql对比,其有以下几点不同Mongo需要占用很大的空间来建立索引不支持事务操作,最终一致性社区尚不成熟,高安全级别无法保证常用数据库介绍Mongodb模式自由,可以自由地更具需要随时修改文档格式。支持海量数据的查询和插入,支持完全索引自动支持分片等分布式操作,支持故障恢复与备份,学习成本低需要注意的是,与mysql对比,其有以下几点不同Mongo需要占用很大的空间来建立索引不支持事务操作,最终一致性社区尚不成熟,高安全级无法保证id自由的存储模式1{用户名:Danna,,密码:123456}2{用户名:Wang,密码:888888,昵称:WangBin}3{用户名:Jack,密码:abcyui,邮箱:jack@}常用数据库介绍Redis近年兴起的内存数据库,数据在内存之中保证了访问的高效。Redis在保证访问速度的同时,也能够进行持久化存储。本身是key-value的存储形式,但是能够支持很多的数据结构,如列表,字典。访问速度非常快!相较与mysql,
mongo其有以下的不同:数据在内存是十分不可靠的,任何的重要数据都不应该存储在内存数据库中。不完整的事务实现,不适合作为安全性高的场景。数据库选择策略是否有现有的数据库满足要求?具体什么问题构成阻碍?业务需求复杂?拆分业务,不同场景采用不同的数据库。财务?事务,mysql大量用户数据?大量查询,mongo超快速反应?网站首页,redis缓存问题较少见,无前人开路?在现有的开源基础上进行二次开发。豌豆荚Codis豆瓣BeansDb淘宝Oceanbase访问量大?安全性要求高?实时一致性?数据库实现成本多少?程序员们熟悉哪一个数据库分布式?Mongo自动支持分布式不确定业务模型?Mongo支持自由模型数据库选择案例分析考虑一个简单的社交网站案例,要求功能是用户登录,分享等功能。每秒同时在线人数(并发请求)大约为100人。用户数据需要持久化存储,不能用内存数据库。用户数据安全性不高,不要求事务性,可以使用Mongo查询并发量100,较小,mysql(以2000估计)与mongo(以5000估计)均可使用业务较复杂,业务模型需要可扩展,mongo修改更方便。综合以上几点,我们建议使用Mongo作为数据库。数据库选择案例分析考虑一个新闻网站,没有用户登录与交互,仅需要展示新闻内容,但是同时的用户访问量大约为10000人(每秒万人访问)。没有用户数据,也没有复杂的关系业务。访问量极高,mongo,mysql均不适用。内容单一,考虑内存数据库安全性要求低,内存数据库可以使用综合以上四点,我们建议使用redis等内存数据库。数据库选择案例分析考虑一个抢票服务,功能为在某个时刻为大量用户进行抢票服务。要求能够在10s内为5000个用户正确的返回抢票结果。用户数据需要持久化存储,考虑
mysql
和
mongo。事务性质,不能有一张票被两个人同时抢到,考虑mysql。要求快速响应,需要在短时间内返回结果,考虑内存数据库。考虑到业务场景的复杂性,我们尝试能否对应用场景进行分离,即数据持久化存储用mysql,抢票的时候则使用内存数据库进行响应。然而需要注意的是在进行业务响应时,因为采用内存数据库,那么将不能保证事务性质,怎么办?数据库选择案例分析对于抢票业务,我们尝试分离业务场景:抢票业务可以分成 (1)
非抢票阶段用户登录注册 (2)
抢票阶段的用户抢票,这部分又包括用户身份验证,用户发出抢票请求,系统验证是否还有余票,系统返回结果针对以上业务场景的分离,我们对(2)部分的业务请求速度有着极大的需求,因此希望全都在内存之中进行。而(1)因为需要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人力资源述职报告范文
- 上海商学院《市场竞争软件模拟训练》2023-2024学年第一学期期末试卷
- 课题申报书:共同富裕目标下数智化影响人的全面发展的理论机制及路径研究
- 课题申报书:高铁时代关中平原城市群收缩识别及高铁多维效应研究
- 《不懂就要问》公开课一等奖创新教案
- 1《短歌行》公开课一等奖创新教学设计 统编版高中语文必修上册
- 上海闵行职业技术学院《面点工艺学实训》2023-2024学年第一学期期末试卷
- 中建集团面试自我介绍
- 上海立信会计金融学院《生物电化学》2023-2024学年第一学期期末试卷
- 上海科学技术职业学院《机器学习基础实践》2023-2024学年第一学期期末试卷
- 低代码开发智慧树知到期末考试答案章节答案2024年南华大学
- 2024年春季国开《学前教育科研方法》期末大作业(参考答案)
- 一+《展示国家工程++了解工匠贡献》(教学课件)-【中职专用】高二语文精讲课堂(高教版2023·职业模块)
- 概率论与数理统计智慧树知到课后章节答案2023年下中国农业大学
- 2023年9月新《医疗器械分类目录》-自2023年8月1日起施行
- 数学说题大赛评分标准
- 人教版高中英语必修5_unit2The_united_Kingdom_Reading
- 哈汽东芝型超超临界1000MW汽轮机低压缸动静碰磨故障分析与对策
- 温州市房屋租赁合同-通用版
- 医源性冠状动脉夹层的识别与防治
- 空心薄壁墩翻模施工技术交底(修改)
评论
0/150
提交评论