MongoDB配置使用 Mac OS

MongoDB

是什么

MongoDB是一种文档存储的NoSQL数据库,NoSQL数据库是非关系型数据库

关系型数据库

四原则ACID

  1. 原子性 Atomicity
  2. 一致性 Consistency
  3. 独立性 Isolation
  4. 持久性 Durability

NoSQL数据库

不同于传统的关系型数据库统称为NoSQL数据库。适用于处理超大数据。

2009年在亚特兰大举行的”no:sql(east)”讨论会是一个里程碑,其口号是”select fun, profit from real_world where relational=false;”。因此,对NoSQL最普遍的解释是”非关联型的”,强调Key-Value Stores文档数据库的优点,而不是单纯的反对RDBMS。

CAP定理(CAP theorem)

在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer’s theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
- 一致性 Consistency
- 可用性 Availability
- 分隔容忍 Partition Tolerance

CAP认为一个分布式系统最多只能满足以上三点钟的两点,因此有:
CA原则、CP原则、AP原则
- CA 单点集群、满足一致性、可用性的系统,一般在可扩展性上不高
- CP 满足一致性、分隔容忍性的系统,通常在性能上不是很好
- AP 满足可用性、分割容忍性的系统,通常可能对一致性要求低一些
Alt text

BASE原则

NoSQL数据库的原则
- Basic Available 基本可用性
- Soft-State 软状态/柔性事务(可理解为无连接的)
- Eventually Consistency 最终一致性

NoSQL数据库分类

Alt text

RDBMS vs NoSQL

RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务

NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性

Alt text

安装(MacOS)

1. homebrew安装

brew update 
brew install mongodb
brew install mongodb --with-openssl //带TLS/SSL支持
brew install mongodb --devel //获取最新版本的

2. 新建/data/db目录

sudo mkdir -p /data/db

3. 启动服务

sudo mongod //如果给/data/db加了权限的话,可以省掉sudo

4. 后台管理shell

如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。
MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到 test 文档(数据库)

$ cd /usr/local/bin #其实我不用打开这个,直接用mongo也是可以的
$ ./mongo
> 2+2
4
> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }

Alt text

5. MongoDb web 用户界面

MongoDB 提供了简单的 HTTP 用户界面。 如果你想启用该功能,需要在启动的时候指定参数 –rest 。

$ mongod --rest

Alt text

基本使用

见上

与python结合使用

用pymongo

import pymongo 
client = pymongo.MongoClient('127.0.0.1',30017)
client.bigsci.authenticate('username','password') #给某个数据库授权
db         = client.bigsci          #选择一个数据库
collection = db.wiki                #选择一个集合
res        = collection.find_one()  #查询

你可能感兴趣的:(mongodb,mac,NoSQL,大数据)