mysql5.7学习nosql_如何学习NoSQL?
How You Should Go About Learning NoSQL
作者在twitter上总结:
1: 用 MongoDB. 2: 花20分钟学习Redis 3: 观察这个video理解Dynamo.
这篇文章主要是明确两个概念:
1.第二索引和Join问题,在关系数据库中,通常除了主索引主键primary key之外,还有第二个index。而NoSQL一般只有主键,没有第二索引,那怎么替换呢?
作者认为可以无需第二索引,以Score表为例子,有主键Id, LeaderboarId 和UserId以及Score四个字段。作者意思再创建另外一个表有两个字段:LeaderboardId 和 ScoreIds,表达属于同一个leaderboard所有Score。通过两次查询,首先根据LeaderboarId获得所有的 ScoreId集合,然后再在Score表中根据主键Id(ScoreId)获得其余字段。
在关系数据库中可能将ScoreIds看成一个数组,因而效率不太好,但是如果数据库引擎将其看成是一个整块对象(可以Push remove和切片slice),这个方案就不会那么夸张了,当然,不可否认第二索引也许更好些。
第二个需要明确的是joins,虽然有些NoSQL支持第二索引有些其他不支持,但是他们几乎都认为joins是狗屎。
为什么呢?因为joins导致数据库切分sharding无法实施,Sharding是大多数NoSQL可伸缩的方案。
以score为例,leaderboard的1 3 5 7 9的score数据也许在服务器1,而服务器2包含 leaderboard的2 4 6 8 10数据,一旦你这样开始切分你的数据,join将不会起作用。比如要通过join Scores,userId和Users.Id获得UserName,因为在不同服务器上,就无法获得。
那么我们如果处理无join(joinless)世界呢?在你自己应用程序中使用join类似功能,比如通过二次查询,你首先获得所有scores数据,然后,通过再通过查询Users表获得UserName集合。增加代码必要的复杂性才能进行水平伸缩。
作者在该文还谈了具体几个NoSQL的特点,待续。
[该贴被banq于2011-08-16 09:58修改过]
mysql5.7学习nosql_如何学习NoSQL?相关推荐
- 如何学习Hadoop,学习Hadoop要学什么?怎么学?
如何学习Hadoop,学习Hadoop要学什么?怎么学? 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上的数据搞到别处去 ...
- 学习动力之“学习金字塔 (爱德加•戴尔)”理论
一.什么是学习金字塔? 学习金字塔是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少.它是一种现代学习方式的理论.最 ...
- edit怎么读英语_名师说学习:英语学习有方法
如何学好英语,是困扰每一个英语学习者的问题.从多年英语教师的角度,巨人英语的老师和大家分享自己的看法. 汪维老师 /Profile/ 巨人学校金牌教师 从事英语教育工作16年 精通新概念.剑桥.中高考 ...
- 关于编程的浅学习与深学习
导读:Tanky Woo的程序人生在博客中发表了<关于编程的浅学习与深学习>,文章是关于编程学习的一个提议.归纳.总结. 以下是文章全部内容: 关于编程的学习,大家肯定都知道,也是大家都说 ...
- 韩国文档的编码方式_像韩国学生学习英语一样学习编码
韩国文档的编码方式 by Stephen Mayeux 斯蒂芬·马约(Stephen Mayeux) 像韩国学生学习英语一样学习编码 (Learn to code like a Korean stud ...
- ICML2018见闻 | 迁移学习、多任务学习领域的进展
作者 | Isaac Godfried 译者 | 王天宇 编辑 | Jane 出品 | AI科技大本营 [导读]如今 ICML(International Conference on Machine ...
- 高效学习方法论的学习笔记
Author:鲁力(地山) 0.前言与致谢 如何提高学习效率?这一问题长期以来都是网上讨论的热点话题,就这一问题网上很多大咖以书籍.博客.知乎回答.视频等不同形式都发表过自己的观点见解和方法论.笔者在 ...
- B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
新智元报道 编辑:元子 [新智元导读]DeepMind和伦敦大学学院(University College London,UCL)合作,推出了一个系列的深度学习与强化学习精品进阶课程.该课程内 ...
- 什么是迁移学习?迁移学习的超参数有哪些?
什么是迁移学习?迁移学习的超参数有哪些? 目录 什么是迁移学习?迁移学习的超参数有哪些? 什么是迁移学习?
最新文章
- Fastp对fastq质控
- 仿iOS中图标的抖动
- python爬取电影网站信息并写入文件
- C语言再学习 -- 关键字typedef
- ストアドプロシージャ(存储过程)
- js(三) ajax异步局部刷新技术底层代码实现
- RocketMQ的存储之消息的存储分析
- 十大经典排序算法动画与解析,看我就够了!(配代码完全版)
- 名为 cursor_jinserted 的游标不存在_质量工程师必须了解的测量常识,你不知道怎么行...
- Linux网络编程服务器模型选择之并发服务器(上)
- Java高级语法笔记-字符集与中文编码
- Web 前端的路该怎么走?
- PMP证书考试攻略:项目管理考试技巧篇(名师分享PPT)
- Python多线程实例
- MyBatis是什么?使用它作为持久层框架有什么优点?
- 使用wagtail搭建cms的安装流程
- hdu4747-线段树
- 基于Helm和Operator的K8S应用管理
- 房地产公司网站建设需要多少钱
- transform.forward和vector3.forward的使用区别
热门文章
- Go的strconv二
- PHP的is_numeric is_int is_integer ctype_digit
- matlab绘制蜂窝,PPT技巧:如何快速设计蜂窝表达的图形设计?
- 根据数据库表字段删除所有相关信息(删库)
- PHP中的预定义常量和魔术常量
- mysql-5.6.16-win32_mysql-5.6.16-win32免安装配置方法
- android mvvm框架搭建_轻松搭建基于JetPack组件的MVVM框架
- python 爬虫爬不出来_爬虫爬不进下一页了,怎么办
- python信用卡识别_python opencv实现信用卡的数字识别
- 【spring boot】【thymeleaf】SPEL调用静态方法和静态属性