Full Stack Python logo Full Stack Python

全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码

NoSQL 数据存储

绝大多数的 Web 系统都采用关系型数据库存储系统来持久化数据。但是还有另外几种不同的存储表示形式。

  • 键值对
  • 面向文档
  • 列簇表

这些持久化数据存储表示法通常不是用来完全替代关系型数据库的,而是作为辅助使用的。由于 NoSQL 数据库所采用的低层持久化形式与关系型数据库不同,这通常也导致了不同的性能特性:在某些读/写条件下有更好的表现,而在另外一些条件下则性能欠佳。

键值对

键值对型的数据存储系统基于 哈希映射 这个数据结构。

键值对数据存储

  • Redis 是一个开源的内存键值对数据存储系统。Redis 经常被称为 ”Web 应用开发的瑞士军刀“。它可用于存储缓存、列队、和会话数据等,在多数案例中,它的存取速度都比传统关系型数据库快。 Redis-py 是 Python 用于操作 Redis 的一个健壮的客户端。

  • Memcached 是另一个广泛使用的内存键值对存储系统。

键值对相关资源

Redis 相关资源

Redis 安全性

应该对 Redis 的默认配置进行修改,从而能防范未认证和未授权的用户。下面这些资源提供了关于 Redis 安全性及数据防护的一些建议。

  • 针对 Redis 服务器的渗透测试 阐述了安全问题无论在你的应用中还是你使用的数据库上都是非常重要的。

  • Redis,和其它任何的关系型或者 NoSQL 数据库一样,都需要依据 安全准则 进行安全设置。这有一篇文章讲述了 Redis 的主要作者 通过攻击 Redis 来展示了 Redis 默认配置在易用性和安全性之间进行的权衡。

面向文档

面向文档的数据库为嵌套数据提供半结构化的表示方式。

面向文档的数据存储系统

  • MongoDB 是一个开源的面向文档的数据存储系统,它使用二进制对象表示法 (BSON)存储格式,该格式和 JSON 类似,因此 Web 开发人员都很熟悉。PyMongo 这个客户端在 Python 代码中通常被用于和一个或多个 MongoDB 实例交互。MongoEngine 是一个针对 MongoDB 的 Python ORM 系统,它基于 PyMongo 开发。

  • Riak 是一个开源的分布式数据存储系统,它注重可用性、容错性和大规模可部署性。

  • Apache CouchDB 也是一个开源项目,它的关注点是倡导使用 RESTful 风格的 HTTP 存取方式来处理存储的 JSON 数据。

面向文档的数据存储系统相关资源

  • 初创公司使用 MongoDB 是关于在新兴领域使用非关系型数据库的一篇指南性文章。

  • PyMongo 的创造者和维护者总结了他们在创建这个广受使用的 Python MongoDB 驱动时所下的四个错误决定。

  • “和我一起聊 Python” 播客上的 Python 和 MongoDB 这期节目对 MongoDB 的 Python 驱动维护者进行了一次精彩的采访。

  • MongoDB 查询不是总能返回全部的匹配文档! 演示了如何去了解 MongoDB 查询操作的实际工作原理,并阐述了依赖那些你还没有完全理解其运作原理的技术会埋下潜在的意想不到的风险。

列蔟表

列蔟表形式的 NoSQL 数据存储系统基于键值对类型。 每个键值对可以被认为是一行,而列蔟则可类比于关系型数据库模型中的一个表。

列蔟表数据存储系统

图数据库通过三个方面来表示和存储数据:结点、边和属性。

一个 结点 表示一个实体,如一个人或一家公司。

一条 表示两个实体之间的关系。例如,一条边可以表示人实体结点和公司实体结点之间的雇佣关系。

属性 用于表示结点的相关信息。例如,表示一个人的实体可能会有一个性别属性。

图数据存储系统

  • Neo4j 是一个最常用的图数据库,它运行于 Java 虚拟机系统之上。

  • Cayley 是一个开源的图数据存储系统,它由 Google 发布,并且主要是用 Go 编写的。

  • Titan 是针对多结点簇而开发的一个分布式图数据库。

图数据存储系统相关资源

  • 图数据库简介 上的内容涵盖了 NoSQL 数据存储的发展趋势以及图数据库与其它类型的数据存储系统的对比。

NoSQL 第三方服务

  • MongoHQ 提供 MongoDB 服务。 它无论是在标准的 LAMP 堆栈上还是在 Heroku 上都非常容易设置。

NoSQL 数据存储系统相关资源

  • NoSQL 数据库: 概论 讲解了什么是 NoSQL,相较于关系型系统,数据是如何以不同方式被存储的,以及什么是一致性、可用性和分区容忍性 (CAP) 定律。

  • CAP 定律概述 介绍了所有数据库操作中必须权衡的一些基本限制。

  • 什么是 NoSQL 数据库?通过 Python 编写一个来学习 这篇详细的文章揭开了 NoSQL 数据库低层是如何运作的神秘面纱。

  • CAP 定律系列 讲解了与 NoSQL 相关的一些概念,如 ACID 与 CAP 的对比, CP 与 CA 的对比,以及大规模部署环境下的高可用性。

  • NoSQL 周刊 这份免费的电子邮件时讯聚合了有关非关系型数据存储的文章、教程和视频内容。

  • NoSQL 比较 列出了大量流行的、基于 BigTable的、特殊用途等的数据库系统,并对每个数据库的特性及其最佳用途做了说明。

  • MySQL 和 PostgreSQL 等关系型数据库在其最近的版本中都加入了一些特性来模仿 NoSQL 数据存储系统的一些功能。例如,可以查看这篇博客 将 MySQL 作为一个键值对存储系统使用 和这篇文章 在 PostgreSQL 中存储 JSON

NoSQL 数据存储系统学习清单

  • 理解 NoSQL 数据存储系统为什么在某些情况下使用会比关系型数据库更适合。但是通常这些优势只能在大规模的情况下才能显现出来,因此可能不太适用于你的 Web 应用。

  • 将 Redis 整合入你的项目中,相比于较慢的持久化存储系统, 这能提升速度。将会话数据保存在内存中,相比于将数据保存在使用持久化存储器的传统关系型数据库中,通常来说运行会更快。值得注意的是当内存清空后,其中的数据会被删除,因此任何需要持久化保持的数据仍须定期备份到磁盘上。

  • 评估其它的用例,如将临时的日志存储到 MongoDB 等面向文档的数据存储系统中。

接下来你还想学习哪些知识?

告诉我有关标准关系型数据库的知识。

我已经创建了一个 Python Web 应用,那我如何部署呢?

什么是 Web 应用编程接口(APIs)?

#### 在这里注册以便每月能收到一份邮件资料,内容包含本站的主要更新、教程和 Python 书籍的打折码等。

The Full Stack Python Guide to Deployments 想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.

邮件获取更新

##### 注册以便每月能收到一份邮件资料,内容包含本站的主要更新和 Python 教程。

目录

1. 简介学习编程为什么用 Python?Python 2 还是 3?企业 PythonPython CommunityBest Python Podcasts最佳 Python 资源最佳 Python 视频2. 开发环境VimEmacs3. 核心语言生成器推导式4. Web 开发Web 框架DjangoFlaskBottlePyramidMorepath其它 Web 框架Web 设计级联样式表 (CSS)JavaScriptWebSockets模板引擎Web 应用安全静态网站生成器Jinja25. 数据关系型数据库NoSQL 数据存储对象关系映射器PostgreSQLMySQLSQLite6. Web APIsAPI 集成API 的创建Twilio7. 部署服务器平台即服务(PaaS)操作系统Web 服务器WSGI 服务器源码控制应用程序依赖静态内容任务队列配置管理持续集成日志监控Web 分析Docker缓存微服务DevOpsNginxApache HTTP 服务器CaddyGreen Unicorn (Gunicorn)UbuntuPelicanLektorMkDocs8. 测试单元测试集成测试代码度量调试9. MetaBotsChange LogFuture DirectionsAbout the AuthorSQLAlchemyPeewee …或者显示全部目录内容.

NoSQL 数据存储

重要的更新内容会通过 Twitter 账号@fullstackpython发布。


需要更加详细的教程吗?请看 《The Full Stack Python Guide to Deployments》。

Chapters

1. 简介2. 开发环境3. 核心语言4. Web 开发5. 数据 » NoSQL 数据存储 6. Web APIs7. 部署8. 测试9. Meta …or view the full table of contents.


This site is based on Matt Makai's project Full Stack Python, thanks for his excellent work!

此网站由 @haiiiiiyun开源爱好者们 共同维护。 若发现错误或想贡献,请访问: Github fullstackpython.cn 项目