技术文章 | 用Python写一个NoSQL数据库
2017-08-29 13:55
429 查看
本文来源于阿里云-云栖社区,原文点击这里。
本文译自 What is a NoSQL Database? Learn By Writing One In Python.
完整的示例代码已经放到了 GitHub 上, 请 点击这里, 这仅是一个极简的 demo, 旨在动手了解概念.
如果对译文有任何的意见或建议,欢迎 提 issue 讨论, 批评指正.
后续如有更新,可见 博客 .
NoSQL 这个词在近些年正变得随处可见. 但是到底 "NoSQL" 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Python (我比较喜欢叫它, "轻结构化的伪代码") 写一个 NoSQL 数据库来回答这些问题.
OldSQL
很多情况下, SQL 已经成为 "数据库" (database) 的一个同义词. 实际上, SQL 是 Strctured Query Language 的首字母缩写, 而并非指数据库技术本身. 更确切地说, 它所指的是从
RDBMS (关系型数据库管理系统, Relational Database Management System ) 中检索数据的一门语言. MySQL, MS SQL Server 和 Oracle 都属于 RDBMS 的其中一员.
RDBMS 中的 R, 即 "Relational" (有关系,关联的), 是其中内容最丰富的部分. 数据通过 表 (table) 进行组织, 每张表都是一些由 类型 (type) 相关联的 列 (column) 构成. 所有表, 列及其类的类型被称为数据库的 schema (架构或模式). schema 通过每张表的描述信息完整刻画了数据库的结构. 比如, 一张叫做 Car 的表可能有以下一些列:
Make: a string
Model: a string
Year: a four-digit number; alternatively, a date
Color: a string
VIN(Vehicle Identification Number): a string
在一张表中, 每个单一的条目叫做一 行 (row), 或者一条 记录 (record). 为了区分每条记录, 通常会定义一个 主键 (primary key). 表中的 主键 是其中一列 , 它能够唯一标识每一行. 在表 Car 中, VIN 是一个天然的主键选择, 因为它能够保证每辆车具有唯一的标识. 两个不同的行可能会在 Make, Model, Year 和 Color 列上有相同的值, 但是对于不同的车而言, 肯定会有不同的 VIN. 反之, 只要两行拥有同一个 VIN, 我们不必去检查其他列就可以认为这两行指的的就是同一辆车.
展开全文
本文译自 What is a NoSQL Database? Learn By Writing One In Python.
完整的示例代码已经放到了 GitHub 上, 请 点击这里, 这仅是一个极简的 demo, 旨在动手了解概念.
如果对译文有任何的意见或建议,欢迎 提 issue 讨论, 批评指正.
后续如有更新,可见 博客 .
NoSQL 这个词在近些年正变得随处可见. 但是到底 "NoSQL" 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Python (我比较喜欢叫它, "轻结构化的伪代码") 写一个 NoSQL 数据库来回答这些问题.
OldSQL
很多情况下, SQL 已经成为 "数据库" (database) 的一个同义词. 实际上, SQL 是 Strctured Query Language 的首字母缩写, 而并非指数据库技术本身. 更确切地说, 它所指的是从
RDBMS (关系型数据库管理系统, Relational Database Management System ) 中检索数据的一门语言. MySQL, MS SQL Server 和 Oracle 都属于 RDBMS 的其中一员.
RDBMS 中的 R, 即 "Relational" (有关系,关联的), 是其中内容最丰富的部分. 数据通过 表 (table) 进行组织, 每张表都是一些由 类型 (type) 相关联的 列 (column) 构成. 所有表, 列及其类的类型被称为数据库的 schema (架构或模式). schema 通过每张表的描述信息完整刻画了数据库的结构. 比如, 一张叫做 Car 的表可能有以下一些列:
Make: a string
Model: a string
Year: a four-digit number; alternatively, a date
Color: a string
VIN(Vehicle Identification Number): a string
在一张表中, 每个单一的条目叫做一 行 (row), 或者一条 记录 (record). 为了区分每条记录, 通常会定义一个 主键 (primary key). 表中的 主键 是其中一列 , 它能够唯一标识每一行. 在表 Car 中, VIN 是一个天然的主键选择, 因为它能够保证每辆车具有唯一的标识. 两个不同的行可能会在 Make, Model, Year 和 Color 列上有相同的值, 但是对于不同的车而言, 肯定会有不同的 VIN. 反之, 只要两行拥有同一个 VIN, 我们不必去检查其他列就可以认为这两行指的的就是同一辆车.
展开全文
相关文章推荐
- 用 Python 写一个 NoSQL 数据库
- 用 Python 写一个 NoSQL 数据库
- python 抓取"一个"网站文章信息放入数据库
- 用 Python 写一个 NoSQL 数据库
- 用谷歌搜索技术文章时打不开网页的的一个python脚本
- python 内存NoSQL数据库
- 客户文章: 10gen和微软合作伙伴在云端提供NoSql数据库
- 数据库性能调优技术系列文章(3)--深入理解嵌套循环执行计划
- 修改torndb库为依赖pymysql,使其适应python3,一个更简单的操作数据库的类。
- nosql数据库-mongodb-入门(2)--用python的pymongo 操作mongodb
- python爬虫01-创建一个简单的爬虫(附赠爬取的100G某小说网数据库)
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目
- redis是什么?是缓存,其实是一个key/value数据库,是一个nosql数据库
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- python 内存NoSQL数据库
- “万能数据库查询分析器”5.04 发布,撰写的相关技术文章达63篇
- 对SQL说不!NoSQL的数据库技术革命(转载)
- 技术文章 | spring boot项目中使用jpa的一个未解之谜
- 客户文章: 10gen和微软合作伙伴在云端提供NoSql数据库
- python模块系列 (二)之操作NoSQL数据库hbase