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?相关推荐

  1. 如何学习Hadoop,学习Hadoop要学什么?怎么学?

    如何学习Hadoop,学习Hadoop要学什么?怎么学? 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上的数据搞到别处去 ...

  2. 学习动力之“学习金字塔 (爱德加•戴尔)”理论

    一.什么是学习金字塔? 学习金字塔是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少.它是一种现代学习方式的理论.最 ...

  3. edit怎么读英语_名师说学习:英语学习有方法

    如何学好英语,是困扰每一个英语学习者的问题.从多年英语教师的角度,巨人英语的老师和大家分享自己的看法. 汪维老师 /Profile/ 巨人学校金牌教师 从事英语教育工作16年 精通新概念.剑桥.中高考 ...

  4. 关于编程的浅学习与深学习

    导读:Tanky Woo的程序人生在博客中发表了<关于编程的浅学习与深学习>,文章是关于编程学习的一个提议.归纳.总结. 以下是文章全部内容: 关于编程的学习,大家肯定都知道,也是大家都说 ...

  5. 韩国文档的编码方式_像韩国学生学习英语一样学习编码

    韩国文档的编码方式 by Stephen Mayeux 斯蒂芬·马约(Stephen Mayeux) 像韩国学生学习英语一样学习编码 (Learn to code like a Korean stud ...

  6. ICML2018见闻 | 迁移学习、多任务学习领域的进展

    作者 | Isaac Godfried 译者 | 王天宇 编辑 | Jane 出品 | AI科技大本营 [导读]如今 ICML(International Conference on Machine ...

  7. 高效学习方法论的学习笔记

    Author:鲁力(地山) 0.前言与致谢 如何提高学习效率?这一问题长期以来都是网上讨论的热点话题,就这一问题网上很多大咖以书籍.博客.知乎回答.视频等不同形式都发表过自己的观点见解和方法论.笔者在 ...

  8. B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)

      新智元报道   编辑:元子 [新智元导读]DeepMind和伦敦大学学院(University College London,UCL)合作,推出了一个系列的深度学习与强化学习精品进阶课程.该课程内 ...

  9. 什么是迁移学习?迁移学习的超参数有哪些?

    什么是迁移学习?迁移学习的超参数有哪些? 目录 什么是迁移学习?迁移学习的超参数有哪些? 什么是迁移学习?

最新文章

  1. Fastp对fastq质控
  2. 仿iOS中图标的抖动
  3. python爬取电影网站信息并写入文件
  4. C语言再学习 -- 关键字typedef
  5. ストアドプロシージャ(存储过程)
  6. js(三) ajax异步局部刷新技术底层代码实现
  7. RocketMQ的存储之消息的存储分析
  8. 十大经典排序算法动画与解析,看我就够了!(配代码完全版)
  9. 名为 cursor_jinserted 的游标不存在_质量工程师必须了解的测量常识,你不知道怎么行...
  10. Linux网络编程服务器模型选择之并发服务器(上)
  11. Java高级语法笔记-字符集与中文编码
  12. Web 前端的路该怎么走?
  13. PMP证书考试攻略:项目管理考试技巧篇(名师分享PPT)
  14. Python多线程实例
  15. MyBatis是什么?使用它作为持久层框架有什么优点?
  16. 使用wagtail搭建cms的安装流程
  17. hdu4747-线段树
  18. 基于Helm和Operator的K8S应用管理
  19. 房地产公司网站建设需要多少钱
  20. transform.forward和vector3.forward的使用区别

热门文章

  1. Go的strconv二
  2. PHP的is_numeric is_int is_integer ctype_digit
  3. matlab绘制蜂窝,PPT技巧:如何快速设计蜂窝表达的图形设计?
  4. 根据数据库表字段删除所有相关信息(删库)
  5. PHP中的预定义常量和魔术常量
  6. mysql-5.6.16-win32_mysql-5.6.16-win32免安装配置方法
  7. android mvvm框架搭建_轻松搭建基于JetPack组件的MVVM框架
  8. python 爬虫爬不出来_爬虫爬不进下一页了,怎么办
  9. python信用卡识别_python opencv实现信用卡的数字识别
  10. 【spring boot】【thymeleaf】SPEL调用静态方法和静态属性