第二天,首先我打算先把Mongo DB环境建起来
为了方便,就用docker在local部属 Mongo DB的image来省去实机安装的工
首先是安装Docker,
(到docker的官方网站下载Docker ,因为我以前就装好了,所以安装过程略过)
Docker对现在的程序开发者、电脑洁癖几乎已经是离不开的工具了,
他最大的优点是部属非常方便、确保环境的一致
只要有一台有安装docker的PC或Server,
那麽不论这台电脑是Linux或是Windows,只要系统资源足够,
那就只需要把Docker image run起来就能把想要的服务建起来了,
微服务架构的系统也几乎都是以这类docker容器化技术来实现,
虽然我自己对Docker其实也只是会用而已,谈不上精通
但对於软件工程师来说,不论专精前端还是後端,
我觉得Docker已经是除了git之外的第二个必备技能了
在学Docker首先会遇到的两个名词:Image 跟 Container
Image(映像档),可以把它想像成一份设计图
Container(容器),就像是设计图建立起来的建筑物,
docker运行环境建置完成後,就是用这两样东西来建立Mongo DB
首先 在cmd下指令,将最新版Mongo DB 的image取下来:
docker pull mongo:latest
接着执行
docker run --name mongo -v /d/tmp/mongo/data:/data/db -d -p 27017:27017 mongo:latest
将Mongo 运行起来
用docker run
指令 以指定的image为基准,建立一个container
--name 指定建起来的container名字
-v 连结local端目录与container目录 (像Linux中mount共用空间的概念)
-d 背景执行
-p 指定将docker内的某port与本地端的某port连结在一起 ,透过这样的设定就可以透过本地直接连container了
进入container中 可以看看这是什麽版本的Mongo
mongo -version
MongoDB shell version v5.0.2
当下的latest版本是5.0.2
这边为了方便测试,我安装了Studio 3T这个Mongo DB专用的图形化介面工具,方便我们测试与查看资料库内容
它本身是付费工具,不过有30天的免费试用,30天不用白不用,到期後可以改为使用免费的Robo 3T
安装完成後先建立连线
建立连线後 选择IntelliShell
use [DB Name]
↑是切换DB的指令,如果没有这个DB,就会直接新增它
use testDB;
↑建立testDB这个资料库
show dbs;
↑可以看到目前存有哪些资料库
输入指令建立新的User 作为後端连接资料库时使用
use admin
db.createUser({
user:"iron30",
pwd:"123456",
roles:[
{role:"readWrite",db:"testDB"},
]
})
也建一个root
db.createUser(
{
user:"root",
pwd:"root",
roles:["root"]
}
)
因为暂时还没找到让登入验证立即生效的做法,
所以我目前是这样做:
在cmd下docker指令
#停止mogo这个container
docker stop mongo
#移除mongo这个container
docker rm mongo
加上--auth以需要验证的方式重建mongo的container
docker run --name mongo -v /d/tmp/mongo/data -d -p 27017:27017 mongo:latest mongod --auth
因为我们把data都bind在/d/tmp/mongo/data:/data/db ,所以先前的设定都还保留着
看看一下是否成功
测试连线ok
在testDB试着insert一笔资料试试看
use testDB;
try {
db.products.insertOne( { item: "card2", qty: 150 } );
} catch (e) {
print (e);
};
再查询看看有没有insert进去
db.getCollection("products").find({});
看来是有的
NOSQL除了在处理大量资料效能优异之外,使用上也非常有弹性,
在Mongo DB 没有table,取而代之的是collection,collection中所存的资料是一笔笔的document,
在insert document时,不像在传统的RDMS上会受限於TABLE的栏位设计,
然而,这不代表我们就不用规划资料的储存格式与架构,
毕竟在没有规范的情况下,随着时间拉长,维运的成本会变得很可怕
在MongoDB的文件里还有很多方法使用,大家可以去试试看
MongoDB的准备就到这里差不多告一个段落
明天就来准备後端吧
>>: 从零开始的8-bit迷宫探险【Level 9】与 SpriteKit 的初次见面 (二)
今天要结合前两天的成果,完成 LIFF APP 串接 发送认证码 API 的功能 目标 要完成的功能...
在上一篇我们完成面的旋转,却发现旋转途中若点击放开,面会停留在旋转途中,今天我们就要来解决这个问题。...
这篇不承接上一篇,因为时间太赶了,所以来看 Elixir 并行程序的部分。 Elixir 的 Pro...
注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...
今天雨弹狂炸 交通真的是有够不便QQ 希望可以快点发明像多拉A梦的道具弄个什麽就不会淋到雨的产品 好...