热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NoSQL之MongoDB(1)

目前使用的NoSQL数据库可以分为四个大类:1.Key-valuedatastores:数据以键值对存储,通过键来检索值。例如redis,dynomite,voldemort.2.Column-baseddatabases:这些数据库组织的数据存储在表中,类似于RDBMS。但是,它们存储的内容是按列而不是按行。对

目前使用的NoSQL数据库可以分为四个大类:

1.Key-value data stores: 数据以键值对存储,通过键来检索值。例如redis, dynomite, voldemort.

2.Column-based databases: 这些数据库组织的数据存储在表中,类似于RDBMS。但是,它们存储的内容是按列而不是按行。对于数据仓库应用是非常好的。例如Hbase, Cassandra, Hypertable.

3.Document-based databases: 数据存储和组织作为一个集合文档。这些文档是灵活的,每个文档可以有任意数量的字段。例如CouchDB, MongoDB.

4.Graph-based data-stores: 此类数据库应用于计算机科学图论的数据存储和检索。专注于不同部位的数据互联互通。数据的单位作为可视化节点和它们之间关系定义为连接节点的边缘。例如Neo4j.

MongoDB组成部分:

1.Database: 可以有多个数据库,每个数据库作为一个相互独立的容器。每个数据库可以包含一个或多个集合(collection).

2.Collection: 集合是一组文档(document)。在逻辑上相当于关系型数据库中的表。但是与表不同的是,在向集合存储数据时无需事先定义数据结构。

3.Document: 集合中存储文档的单位。一个文档包含了一系列字段或键值对。键是字符串,值可以是各种类型:字符串,整数,浮点数,时间戳,布尔值等等,甚至可以存储另一个文档。是以json格式存储的。

MongoDB数据交换格式:

文档的结构是一个JSON对象。当将这个文档存储于数据库中,将被序列化成一个特殊的二进制编码格式,成为BSON。

BSON是MongoDB默认的数据交换格式。与XML和JSON相比BSON的优势在于内存的消耗和处理时间上更高效。JSON支持BSON支持的所有数据类型,同时还支持一些特殊的数据类型,比如正则表达式,对象ID,日期,二进制数据和代码。更好的移植性,编程语言如PHP,PYTHON,JAVA等等可以直接从BSON格式进行转换,易于与MongoDB融合和管理维护数据。

MongoDB与RDMS对比:

RDMS: database—>table—>row—>column

MongoDB: database—>collection—>document—>field

MongoDB集合中没有外键,没有联合查询,约束性管理通常由应用层处理。因此其架构很灵活,也没有昂贵的alter table操作。

MongoDB安装:

# apt-key adv ?keyserver keyserver.ubuntu.com ?recv 7F0CEB10

# vi /etc/apt/sources.list.d/10gen.list

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

# apt-get update

# apt-get install mongodb-10gen

命令行操作:

# mongo

> use myfirstdb

> db.movies.insert({name:”Hangover”, genre:”comedy”, year:2010})

> db.movies.find()

{ “_id” : ObjectId(“4fe1680418f0c60b236a4f28″), “name” : “Hangover”, “genre” : “comedy”, “year” : 2010 }

PHP-MongoDB扩展:

# apt-get install php-pear

# pecl install mongo

# vim /etc/php5/conf.d/mongo.ini

extension=mongo.so

使用PHP来操作MongoDB:

# vi mongodb.php

try{

$mOngo= new Mongo(“mongodb://127.0.0.1:27017″,array(‘timeout’=>100)); //连接mongodb

$databases = $mongo->listDBs(); //列出所有数据库

print_r($databases);

$mongo->close();

}catch (Exception $e){

die ($e->getMessage());

}

?>

查询结果如下:

Array

(

[databases] => Array

(

[0] => Array

(

[name] => myfirstdb

[sizeOnDisk] => 218103808

[empty] =>

)

[1] => Array

(

[name] => local

[sizeOnDisk] => 1

[empty] => 1

)

[2] => Array

(

[name] => test

[sizeOnDisk] => 1

[empty] => 1

)

)

[totalSize] => 218103808

[ok] => 1

)


推荐阅读
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • 整理于2020年10月下旬:总结过去,展望未来Itistoughtodayandtomorrowwillbetougher.butthedayaftertomorrowisbeau ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • 使用Echarts for Weixin 小程序实现中国地图及区域点击事件
    本文介绍了如何使用Echarts for Weixin在微信小程序中构建中国地图,并实现区域点击事件。包括效果展示、条件准备和逻辑实现的具体步骤。 ... [详细]
  • 第一步java代码条件匹配与之对应的mongo数据查询第二步:java代码分组查询与之所对应的mongodb中sheel与所得出的表点击某个_id字段进入,所得出的图表为第三步:在 ... [详细]
  • 本文介绍了 Python 中的基本数据类型,包括不可变数据类型(数字、字符串、元组)和可变数据类型(列表、字典、集合),并详细解释了每种数据类型的使用方法和常见操作。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
author-avatar
辛勤的核桃4dr_797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有