NoSQL如何快速入门?

1.感谢邀请。

2.想学习NoSQL人,主要目的无非两种:

--A.觉得传统关系型数据库性能不够,希望引入NoSQL产品来解决性能问题。

--B.想通过接触NoSQL产品来温习或学习数据结构、算法、分布式、数据库等内容。

3.无论如何,你需要先明白NoSQL产品的实质:NoSQL产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能。

4.你需要了解一些NoSQL的基础理论。你只需要知道有这回事情,不需要去深究原因:

--A.传统PC机器以及服务器在主流应用中的瓶颈

--B.分布式、负载均衡、并行的瓶颈解决方案,以及这些方案的优劣

--C.传统关系型数据库的基本功能

--D.NoSQL产品的基本功能

--E.找出NoSQL产品的功能与传统关系型数据库功能的差异。

5.现在,你可以尝试学习NoSQL的一款或多款具体的产品。下面列出我觉得不错的:

--A.MongoDB:强烈推荐,原因:最经典,最方便,学习过程最简单。

--B.Redis:强烈推荐,原因:最实用。很多主流网站都用了它。

--C.Cassandra:普通推荐

--D.Hadoop/HBase:不太推荐

6.对于以上具体的产品,学习的方法很简单。

--A.通读官网的内容,包括文档、各种例子等等。

--B.找一本或多本具体的教材进行学习。

--C.在学习过程中,需要不断地做实验。这里有个问题,那就是要做实验的话,需要有多服务器的物质基础的支持。如果你只在一台电脑里通过虚拟机建立多台虚拟机,或者甚至只有一台低配笔记本,那么做实验基本上没什么意义,同时也测不出什么。

7.建议

--A.NoSQL产品不成熟,漏洞多。如果遇到各种问题,皆属正常。阿里在去IOE之后,有一段时间打算上NoSQL,后来发现这类产品问题太多,最终投向Mysql的怀抱。但是,几年过去了,诸如MongoDB这类产品也逐渐成熟起来,因此现阶段上NoSQL并不是一个下策,反之,Redis之流近段时间被很多公司用的火热。

--B.由于上述原因,如果你要在生产环境中,使用NoSQL产品,那么你在做整体设计的时候,需要把NoSQL产品当成不可信任的高风险模块,因此,要时刻注意高可用、备份、故障处理与恢复等问题。