百科知识

nosql数据库,学习 Nosql 数据库的最佳方法和技巧分享

猫咪档案:昵称滴滴,性别为雄性,源自美国。该猫咪性情温良,生活习性偏向于宅家,尤其钟爱陪伴主人前往工作地点及学习数据分析相关知识。主人系大数据文摘非专栏的核心编辑Aileen,据其介绍,滴滴对于为大数据文摘的“小白学数据”专栏进行形象代言表现出浓厚兴趣

作品归属大数据文摘,如需转载请获得正式授权

署名:薛菲

审核:张远园 Aileen

“小白学数据”系列系大数据文摘的创新项目,我们诚挚欢迎各位读者提出宝贵建议,同时热忱欢迎推荐优质文章与稿件投稿至我们的后台,您的每一条留言我们都将认真对待,感谢您的支持。

◆ ◆ ◆

作者手记

对于关注大数据科技发展动态的朋友们,或许已经听闻“NoSQL数据库”这一术语,它可能让一些人感到些许困惑。实际上,我们正处在一个技术革新的关键时期,以甲骨文公司所代表的传统SQL数据库在企业市场已占据主导地位长达三十年之久,而近年来兴起的NoSQL技术则成为了强有力的革新竞争者。本文将采用问答形式,向初学者详细解析NoSQL数据库系统的概念,内容设计无论您的技术背景如何都能够轻松理解。对于数据分析领域的从业者而言,掌握数据库的发展趋势将极大助力职业发展;而对于工程师群体来说,了解新型基础系统更是必备的行业素养。

◆ ◆ ◆

基础概念解析

初学者提问:数据库究竟是什么?可以食用吗?

回答:……当然不可以。数据库本质上是存储数据的空间,其功能类似于冰箱之于食物,都是用于保存的场所。

初学者提问:我的数据不是已经存储在个人电脑的Excel表格中了吗?为何还需要数据库?

回答:虽然个人电脑中的Excel表格使用便捷,但对于企业而言却存在明显不足。一个企业内部可能存在成千上万的Excel表格,且分散存储在不同的设备上,而员工和客户需要实时获取企业所提供的数据资源,这种文件管理模式操作繁琐,显然无法满足实时性需求,毕竟不可能每分钟都向所有用户发送一个庞大的Excel文件更新!更重要的是,数据库的核心优势在于高效查询,企业会为内部或外部客户开发各类应用,当这些应用需要数据时,可以直接通过数据库查询语句迅速获取所需信息。

初学者提问:那么,是否意味着所有人都会直接在这个系统上查询和修改数据?

回答:是的,数据库同样能够处理“并发”问题,即当多用户同时进行数据修改操作时的场景。例如,当您在支付宝给小灰转账时,若小灰恰好也在向您转账,此时数据库系统必须确保两位用户的最终余额均保持准确,并且在交易过程中,其他用户查询两位用户的余额时都能获取到精确数据。在企业级系统中,每秒钟可能就会发生成千上万次类似的查询和修改操作。

初学者提问:那SQL又是什么呢?

回答:SQL是一种专门用于查询关系型数据库的编程语言,而关系型数据库也被称为SQL数据库。

所谓关系型数据库,其数据以表格形式组织存储,与电脑上的Excel表格类似,数据整齐地排列成行和列。这些表格之间通过特定的关联信息相互连接。想要获取这些表格中的特定数据的开发者们,可以将他们所需数据的格式转化为SQL语句发送给数据库,进而获取数据结果。例如,您可以创建一个食品管理数据库,其中包含两个表(食品表和主人表),其结构如下所示:

食物编号|食物名称|数量|喜爱程度|主人编号

1|猕猴桃|4|5|3

2|菠菜|10|2|2

3|巧克力|99|100|1

主人编号|主人姓名|主人性别

1|小白|女

2|小黑|男

3|小灰|男

通过编写一条简单的SQL语句,即可直接调取所有男性主人所拥有的食品及其数量信息。

SELECT 主人姓名,食物名称,数量

FROM 食物表,主人表

WHERE 食物表.主人编号=主人表.主人编号 AND 主人性别=’男’

=>

主人姓名|食物名称|数量

小黑|菠菜|10

小灰|猕猴桃|4

◆ ◆ ◆

深度探讨

初学者提问:那么,NoSQL相比SQL有何独特之处呢?

回答:近年来,随着企业所处理数据量的持续增长以及数据结构的日益复杂,关系型数据库逐渐暴露出两大难以解决的问题:一是数据规模的快速增长,二是数据模型的不断演变。

首先探讨数据规模增长的问题。当公司现有的数据库服务器存储容量达到极限时,可以选择两种解决方案:

一种是直接采购一台更大容量的计算机来替换现有的设备。然而,这种方法存在明显局限性,因为此类高性能计算机的价格通常极为昂贵,且其存储容量同样存在上限。

另一种方案则是购置另一台计算机,并将新增数据存储在新机器上的另一个SQL数据库中,这一过程也被称为“分片”(sharding)。在这种情况下,程序员们将面临繁重的加班任务。因为数据迁移过程极易出现错误,并且会给使用数据库的应用系统带来额外的复杂度。以之前的例子为例,在查询食品和数量的SQL语句执行时,需要将相同的查询请求同时发送给两个服务器,然后将最终结果进行整合,这无疑增加了应用开发的负担。分片方案还存在诸多其他缺点,在此不再一一赘述。

而NoSQL数据库的服务器架构本身就支持在多个机器上进行分布式存储和查询,因此当存储空间不足时,只需直接添加一台新机器并将其连接到现有的计算机集群中安装数据库即可,程序员们可以安心享受假期。

初学者提问:这样我明白了,那么关系型数据库未能解决的另一个问题是什么呢?

回答:另一个问题是数据建模。在将数据存入SQL数据库之前,必须进行数据建模,即明确每个表格中每一列的含义以及不同表格之间的关联关系。对于许多公司来说,这是一项既耗时又费力的工作,因为它们的数据来源种类繁多。此外,在数据进入数据库之后,若需要在表中增加新列(例如在第一个表中添加“食物种类”列)或修改某一列的特性,对于系统来说将变得异常困难,因为数据已经以行为单位存储好了。

而NoSQL数据库则显著减轻了数据建模的负担。例如,上述表格中的一行可以转换为以下JSON文档的形式:

{

“食物名称”: “猕猴桃”,

“数量”: 4,

“喜爱程度”: 5,

“主人”: {

“姓名”: “小灰”,

“性别”: “男”

}}

}

这种结构非常灵活,便于修改数据模型,并且源数据无需进行大量调整即可直接存入数据库。目前存在一个名为ETL的行业,专门负责进行数据形状转换:他们将各种来源的数据进行清洗和转换,使其符合目标表格的模型要求,然后存入关系型数据库。这个行业的市场规模已经达到数十亿美元,可谓发展迅猛。采用NoSQL技术,公司可以节省大量时间和成本。

初学者提问:那么,NoSQL就是使用文档格式,而SQL则是使用表格格式吗?

回答:NoSQL实际上包含多种不同的类型,每种类型适用于不同的场景并采用不同的存储方式。JSON是文档型NoSQL的典型格式,我们日常使用的word和pdf文档都可以轻松地存储到文档型数据库中进行查询。而其他类型的NoSQL可能采用图或哈希表等模型来存储数据。如果您正在开发一个社交网络应用,那么基于图的数据库可能更适合您的需求,因为这类数据库能够高效地回答社交网络场景中的各类问题。

初学者提问:既然名为NoSQL,是否意味着它与SQL完全对立?

回答:当然不是,NoSQL实际上意为“不仅仅是SQL”,即不仅限于SQL查询。实际上,一些NoSQL数据库还支持直接使用SQL进行查询。两者之间的主要区别在于:1.数据建模要求不同:NoSQL的数据建模过程更为简单灵活;2.数据增加处理方式不同:使用NoSQL可以直接进行分布式处理。当数据规模增长需要添加新机器时,无需修改使用数据库的应用代码,只需在数据库集群中增加一台新计算机即可。

———————————-

预告:本文是对NoSQL数据库的入门级介绍。如果您对数据库技术已有一定了解,敬请期待我们的下一篇文章,我们将深入探讨不同种类的NoSQL数据库、如何在各种应用场景中选择合适的数据库系统以及未来技术发展趋势,期待您的关注。

【读者互动】我们诚挚邀请各位读者分享您的宝贵意见,也欢迎通过留言方式与我们交流

小白学数据:深入浅出解析机器学习

◆ ◆ ◆

编译团队介绍

大数据文摘后台回复“志愿者”获取加入我们的详细信息