初识 MongoDB 数据库

前言

Flask 基础框架在之前的三篇文章中写完了。想要学习 web 相关的同学可以自己回顾翻一下,相信看完了,你也可以写出来一个简单的小案例来炫耀一波!

说到 web 开发,就不得不提到一个东西,数据库!之前在介绍实战项目时候,我提到过本次项目需要用到的数据库 - MongoDB。本篇来带你如何从零安装 MongoDB 数据库。下一篇介绍 Python 操作数据库。

数据库历史

开始之前,为了照顾一些非专业领域的朋友,先来介绍一下,什么是数据库?为什么会诞生出数据库的概念?以及为什么数据库下还要细分一些不同的领域数据库。

1. 伴随数据的发展历史所带来的载体

以下也是我自己查的资料(不一定准确,欢迎知道的读者来挑错!),虽然知道数据库设计出来的目的是什么,不过还是去检索了下它的发展由来历史。

数据库诞生的发展大概经历了三个重大时期。每一次都是数据爆发提升所带来的系统改变。

第一个时期是 1880 年美国人口普查。为了表示记录数据,发明了分拣机、制表机和记录机,记录完整的数据。打孔卡上的孔,表示数据。打空带便是信息的载体。

第二个时期 - 文件系统。其本身被认为是一个与文件柜极为相似的范例。这个时期我理解就是小学时候用到的文件夹,里面可以按照不同文件进行分类。

在电脑系统中,文件系统我们已经接触过了,其实就是对文件的进行操作管理的系统。比如你在 Windows 上创建 txt 文本之类的。

第三个时期在二十世纪六十年代,随着计算机速度和功能的增长,计算机被用于制造和更广泛的实验室使用。从而诞生了数据库以及数据库管理系统(DBMS),到20世纪60年代中期,许多此类系统已投入商业使用。

2. 数据库的设计目的

这里我就不用官方定义来说了,简单的举个栗子用自己的观点陈述一下。

早期我们使用文件来对数据进行记录,比如我们常用的 excel ,word 等。Excel 相信大家都用过,它本身的设计基于行和列,由行和列组成一个“二维表”的结构,来对数据进行存储。使用的过程中,我们可以用筛选等功能来处理数据。但面临的问题是,当数据过于庞大,文件就会打不开了。甚至可能出现程序崩坏的情况。

那么此时,就需要一个大数据容量的东西来存储数据,所以数据库设计最重要的本质就是存储大量数据。同时,再此基础上提供了对数据操作的简易性,对数据的完整性,以及对数据的安全性等特性。

下面是从 Quora (类似知乎,不对,应该是知乎仿照它...)查到的一个问题,为什么我们需要数据库?英语好的同学可以看下,不翻译了。

3. 关系型数据库与非关系型数据库

关系型数据库:

SQL (Structured Query Language) 数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。

现在市面上用的最多的关系型数据库就是以上几个代表,简单的说,其实关系型数据库原理类似 Excel ,由行和列组成一张“二维”关系的数据表。

使用 SQL 语句即可对数据库进行操作,比如创建库,创建表,查询表数据等。。。SQL 语句就像下面这样:

select * from user;   # 查找用户表

查询结果也类似这样的展现形式:

非关系型数据库:

NoSQL(Not Only SQL)泛指非关系型数据库。主要代表:MongoDB,Redis,CouchDB。

有了 SQL 数据库,为什么还有 NoSQL 数据库?

在当今互联网时代,数据越来越庞大,关系数据库运行的慢,处理大数据的大多数情况是 NoSQL 比较高效,但 NoSQL 并不能完全取代关系数据库,有些复杂操作并不能处理。

NoSQL 数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。

举个常见的例子,仅是个人猜测,我们日常用的微博(若有错误,还望指出),它处理每个明星与粉丝之间的关系,这么种类繁多的属性字段,如果用 NoSQL 远比 SQL 要好很多,因为字段与字段之间没有相关性。

说下为什么本交通统计项目采用的是 MongoDB 呢?理由很简单,因为高德地图返回的数据类型是 JSON 格式,用 MongoDB 兼容性非常好,直接存入即可。

安装 MongoDB

不同平台的下载地址都是一样的,搜索引擎搜索 MongoDB :

这下载入口做的不太明显,我也是找了一小会儿,哈哈哈!~大家根据自己电脑系统下载不同版本即可。Package MSI就是windows的一键安装,我习惯下 ZIP ,所以选到了 ZIP 进行下载,大概 200 MB+。 解压后,进入 bin :

如果此时你直接双击打开,能看到的结果就是黑框一闪而过,然后....然后就没啥了。。。因为你打开的方式不太对!

接下来:

手动在此目录下,创建一个文件 mongo.config:

记事本或者什么其他工具,打开编辑,配置下 Mongo 的数据存储位置以及日志存储位置:

dbpath=C:/Users/asus/Desktop/mongodb/db
logpath=C:/Users/asus/Desktop/mongodb/log/mongodb.log

这里的路径一定要是绝对路径,改成自己的即可,同时在创建对应指定目录,db 和 log:

最后一步,进入 bin ,然后 shift + 鼠标右键,在此处打开 shell 窗口,输入:

mongod.exe --config C:UsersasusDesktopmongodbbinmongo.config --install --serviceName "MongoDB" --journal

这里的 --config 参数后面的文件也必须是绝对路径。

解释下,上述代码的意思是将 mongo 作为服务的形式配置在 windows 电脑上,便于我们启动。按下 win + R 键,打开服务:

这个就是刚才我们配置的 mongodb 服务,右键启动就好。启动完毕,可以看下刚才 mongo 的 db 和 log 目录下是不是生成了一些文件呢:

以上,mongodb 数据库安装完毕。

MongoDB 可视化工具

依然官网,下载可视化工具:

类似 mongodb ,点到 tool 处下载,然后让你填一个信息,瞎写就好,提交完就能下载了:

可视化工具,直接打开 exe 即可:

配置默认即可,没改动过,localhost代表本机,port 27017 是 mongodb 的默认端口:

完工!

可视化工具操作 MongDB

专业人员不要觉得用可视化工具来操作显得很 lowB ,实际上工具本来就是可以帮我们节省大量的时间。而每个视图背后对应的本质还是命令代码。

1. 创建数据库

2. 填写数据库名称,以及 Collection 名称

3. 创建文档

插入完成后,转化为表来展示,看看是否和我们常见的 Excel 相似呢:

总结

对于 MongoDB 的具体内容,以及每个官方字段的含义,放在下一篇介绍了!本篇篇幅又超长了。。。

下篇文章,如何使用 Python 操作 MongoDB 数据库(拖延了一篇。。。),敬请期待!

如果有什么问题,欢迎小伙伴们留言探讨!

mongodb 搜索速度_初识 MongoDB 数据库相关推荐

  1. mongodb 搜索速度_MongoDB 模糊查询慢的问题 以及相关解决方案的探索

    最近公司有一个项目,数据库用的是 MongoDB,其中一个 Collection 的有 1300 万条数据,需求中需要对这个 Collection 支持指定 field 和 keyword 的搜索功能 ...

  2. mongodb存储数据_在MongoDB中存储分层数据

    mongodb存储数据 继续使用MongoDB进行 NoSQL之旅,我想谈一谈一个经常出现的特定用例:存储分层文档关系. MongoDB是很棒的文档数据存储,但是如果文档具有父子关系,该怎么办? 我们 ...

  3. 给服务器mongodb设置权限_认识 MongoDB

    大部分数据库都是 C/S 架构,服务端提供服务,操作时需要使用客户端. MongoDB 也是如此,需要启动服务端进程 mongod 提供服务,然后使用其自带的 mongo 命令行程序或者其它客户端与服 ...

  4. MongoDB的学习,初识MongoDB

    MongoDB MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...

  5. mongodb 搜索速度_MongoDB数据库查询性能提高40倍的经历分享

    前言 数据库性能对软件整体性能有着至关重要的影响,本文给大家分享了一次MongoDB数据库查询性能提高40倍的经历,感兴趣的朋友们可以参考学习. 背景说明 1.数据库:MongoDB 2.数据集: A ...

  6. mac mongodb可视化工具_「时序数据库」和MongoDB:第3部分-查询、分析和呈现

    在<时间序列数据和MongoDB:第1部分-简介>中,我们回顾了理解数据库的查询访问模式需要询问的关键问题.在<时间序列数据和MongoDB:第2部分-模式设计最佳实践>中,我 ...

  7. mongodb 搜索速度_Mongodb查询缓慢问题处理

    早上突然收到配置中心服务告警,Http check出现问题,赶紧访问下服务看看是否Cabot监控系统的误报,发现服务时而正常,时而出现500内部服务器错误,赶紧排查问题. 1.问题定位 首先看看当前配 ...

  8. mongodb java 学习_《 mongodb 学习 》java 基本操作

    环境 springboot 结合 monggodb 一.pom.xml org.springframework.boot spring-boot-starter-data-mongodb 配置: sp ...

  9. 提高mysql查询速度_如何提高数据库查询速度

    1.用程序中, 保证在实现功能的基础上,尽量减少对数据库的访问次数: 通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担: 能够分开的操作尽量分开处理,提高每次的响应速度: 在数据窗 ...

最新文章

  1. mybatis 如何判断重复插入_MyBatis常见面试题3:数据库插入重复如何处理
  2. SAP中如何给成本要素分配多个默认成本中心
  3. Scala Iterator(迭代器)详解
  4. [SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
  5. Tomcat Get请求的巨坑
  6. xss绕过尖括号和双括号_xss挑战平台练习
  7. ubuntu复制文件到另一个文件夹_简单介绍一下电脑中的文件或文件夹的复制、移动及删除的操作方式...
  8. 国内搭建vite vue和国外的不一样的,跟着教程会踩很多坑
  9. malware analysis、Sandbox Principles、Design Implementation
  10. mybatis动态传入表名、列名
  11. mysql数据库入门传智播客答案_MySQL数据库入门
  12. 贝叶斯网络、马尔可夫模型、马尔可夫过程、马尔可夫链、马尔可夫网络基本概念
  13. 直接sql 添加字段赋值
  14. 《横向领导力》-简述
  15. Linux:进程(二)
  16. 【JVAV】—继承、多态、抽象类
  17. 解锁“不可能”:苏门答腊犀牛让我开始重新思考AI
  18. 用Python爬虫做一个短视频+评论下载小工具
  19. Ubuntu 16.04解决双系统时间冲突问题
  20. Linux easy-rsa制作证书

热门文章

  1. C#(WinForm) + MySQL的中文编码问题(MySQL中文编码的终极解决方案)
  2. for 创建一个方法:键盘录入一个数 ,求它的 阶乘 及 阶乘的和
  3. 内网渗透-域内有网和无网
  4. [译] APT分析报告:09.伊朗APT34更新武器库——SideTwist变体
  5. HarmonyOS之常用组件Text的功能和使用
  6. 在OSI参考模型中,当两台计算机进行文件传输时,为防止中间出现网络故障而重传整个文件的情况,可通过在文件中插入同步点来解决,这个动作发生在( )
  7. 104. Maximum Depth of Binary Tree 二叉树的最大深度
  8. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - D. 数的分解
  9. 手把手教你发布一个Python包
  10. Ubuntu18.04安装ROS Melodic(亲测有效)