尝试免费且便捷地使用MongoDB Atlas搭建数据库环境

我正在做调研,并发现了MongoDB Atlas,我打算试试看。
这是MongoDB官方提供的服务,不需要自己安装,而且还免费,可以非常轻松地开始使用。

我稍微试了一下,感觉适合用于原型制作和演示,所以我会以这种角度来介绍。

MongoDB的数据库即服务 (DBaaS)

スクリーンショット 2020-12-30 22.39.58.png

使用Atlas可以轻松创建MongoDB集群,并进行各种管理。虽然性能和功能有一定限制,但也有可以免费使用的集群类型。

有一些文章介绍了这一点。

参考资料:开始使用MongoDB Atlas(MongoDB作为服务)

我完全没有意识到,但是似乎出现了一个方便的物品啊。

在使用各家基础设施的服务时,我感受到了类似AWS的DocumentDB和Azure的CosmosDB的氛围。
虽然有相似的氛围,但我觉得比起各家公司的各项服务,开始使用时更加轻松。

我认为原本的推销点是基于基础设施的各种管理功能。

个人而言,我认为能够轻松开始使用MongoDB,而无需自行安装和托管等操作,是一个非常好的地方。

可以免费开始,无需信用卡注册等。可以免费开始使用,很容易试用,非常好。您可以完全免费开始使用,无需信用卡注册等步骤。

スクリーンショット 2020-12-30 23.41.02.png即使是免费计划,基本功能似乎没有限制。

MongoDB Atlas通过托管服务支持跨越AWS/Azure/GCP的多云集群架构。即使特定云服务全部故障,也能实现无影响的运营。

使用高级计划,即使某些云端服务出现问题,也不用担心!似乎可以使用类似的功能。

在管理界面上查看数据方便在网上有一个管理界面,可以方便地查看数据和流量,这也非常不错。

这个是在尝试插入数据时的管理界面,看起来很像Firebase。

スクリーンショット 2020-12-30 23.46.24.png

似乎过渡很容易。在最初注册之后,MongoDB 的使用方式会变得与通常情况下(在应用源代码级别上)相似,这也是令人感到高兴的。

如果以原型方式创建服务并且预计访问量增加,那么我们可以自己在另一种基础设施中安装MongoDB并且只需修改连接信息即可使用。

假设最开始使用Firebase,但中途想要改用MongoDB的情况下(虽然不确定是否存在),相比之下我认为更容易。

关于数据迁移是否具备功能尚未调查确认。

尝试使用MongoDB Atlas首先从注册开始

可以从首页的“开始免费”按钮开始。

スクリーンショット 2020-12-30 23.50.34.png我同意隐私政策后继续。

スクリーンショット 2020-12-30 23.53.05.png确定组织名称或项目名称,然后选择喜欢的语言。我选择了JavaScript。

スクリーンショット 2020-12-30 23.54.19.png下一个计划是,如果选择免费使用的话,可以使用Shared Clusters。

スクリーンショット 2020-12-30 23.55.35.png

可以从AWS/GCP/Azure中选择后端基础设施。在内部,可以选择使用哪个基础设施服务。很有意思。

スクリーンショット 2020-12-30 22.35.09.png我会选择Azure,原因是我经常使用Azure。我发现可以选择使用香港地区。

实际上,在这里选择使用的AWS、GCP和Azure没有明确提及,所以我认为在使用免费版时,任何选择实际上都可以。

スクリーンショット 2020-12-30 22.37.21.png

    • Shared RAM

 

    • 512 MBストレージ

 

    • MongoDB 4.2

 

    バックアップなし

在这种情况下,你可以更改Cluster Name(类似于应用程序名称),但我选择使用默认的Cluster0名称创建了。

请注意:查看AWS、GCP和Azure可用的亚洲地区。我认为,如果从日本使用的话,通常会选择亚洲地区,所以我查看了可用的亚洲地区。

    AWSはムンバイとシンガポール
スクリーンショット 2020-12-30 23.57.26.png

    GCPは日本リージョンが使える
スクリーンショット 2020-12-30 23.57.50.png

    Azureは香港
スクリーンショット 2020-12-30 23.58.01.png我在Azure上做出了选择,但在日本使用的话,或许选择GCP并选择日本区域会更好呢。

确认连接信息我们将在下一个界面稍等片刻。创建集群需要一些时间。让我们从连接按钮开始创建连接信息吧。

1. 接続セキュリティ情報を作成在连接的IP地址上进行IP地址限制设定。

暂时先选择允许从任何地方访问且没有任何限制。

スクリーンショット 2020-12-30 22.49.18.png
次にデータベースユーザー名とパスワードを作成します。

スクリーンショット 2020-12-30 22.49.55.png当您开始进行设置时,左下角的进度条会逐渐前进,非常易于理解。

スクリーンショット 2020-12-30 22.51.28.png

2. 确认连接方法然后我们选择连接方式。因为它只是提供了连接示例,所以无论选择哪一个都可以。

スクリーンショット 2020-12-30 22.52.46.png

    • shellから

 

    • 各アプリケーションから

 

    GUIから

可以选择不同的连接方式。由于本次我们选择在Node.js中进行连接,所以选择Connect your application。

展示示例也是可以的,对于我的情况,显示了类似这样的示例。

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://ユーザー名:<password>@クラスター名.xxxx.mongodb.net/<dbname>?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});

在这个时候,”クラスター名.xxxx.mongodb.net”是我当前的托管URL(其中xxxx是隐藏字),如果创建时使用了其他名称,可能会变成”クラスター名.x30i0.mongodb.net”。因此,可能需要考虑更改计划,选择托管在哪个基础架构中或每次创建时都会有所变化。

顺便提一下,它可能成为组织的名称。

尝试从Node.js访问Node.js的版本是v15.5.0。

$ npm init -y
$ npm i mongodb

然后,首先进行准备工作。

抑制警告对应
app.jsなどを作成し、先程のサンプルをそのまま実行すると

$ node app.js
(node:24495) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
(Use `node --trace-deprecation ...` to show where the warning was created)

といった警告が出ます。

需要添加useUnifiedTopology: true对吗?

参考:当mongoose出现DeprecationWarning时应该怎么处理

我在考虑这一点后,尝试更改连接示例。

const MongoClient = require('mongodb').MongoClient;

const DB_NAME = `xxxxxx`;
const USER_NAME = `xxxxxx`;
const USER_PASSWD = `xxxxxxx`;
const HOST_NAME = `cluster0.xxxx.mongodb.net`; //クラスター名やホスティング先によって変わる

const uri = `mongodb+srv://${USER_NAME}:${USER_PASSWD}@${HOST_NAME}/${DB_NAME}?retryWrites=true&w=majority`;
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true});
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  console.log("Connected successfully to server");
  client.close();
});

执行后成功连接。

$ node app.js
Connected successfully to server

添加数据
我会尝试添加数据。我已经重写了之前代码中的client.connect部分。

在test数据库的device集合中添加数据。


//省略

client.connect(err => {

  const collection = client.db('test').collection('devices');
  // perform actions on the collection object
  console.log('Connected successfully to server');

  const documents = [
    { a: 1 },
    { a: 2 },
    { a: 3 }
  ];

  collection.insertMany(documents, (err, result) => {
    console.log('Inserted 3 documents into the collection');
    console.log(result);
    client.close();
  })

});

参考:尝试使用Node.js连接MongoDB

执行

$ node app.js
Connected successfully to server
Inserted 3 documents into the collection
{
  result: { ok: 1, n: 3, opTime: { ts: [Timestamp], t: 2 } },
  ops: [
    { a: 1, _id: 5fec8c55d967cf6260da05e1 },
    { a: 2, _id: 5fec8c55d967cf6260da05e2 },
    { a: 3, _id: 5fec8c55d967cf6260da05e3 }
  ],
  insertedCount: 3,
  insertedIds: {
    '0': 5fec8c55d967cf6260da05e1,
    '1': 5fec8c55d967cf6260da05e2,
    '2': 5fec8c55d967cf6260da05e3
  }
}

数据成功创建,并且我在管理界面上也确认了这一点。

您可以通过管理界面上的COLLECTIONS按钮进行查看。

スクリーンショット 2020-12-30 23.20.53.png这些部分的使用方式和通常的MongoDB没有变化。
如果查看MongoDB官方文档或MongoDB的SDK等,应该可以很好地了解数据编辑和删除操作的使用方法。

总结和大纲(涉及到领域之类的话题)可能是因为之前已经有使用过Node.js处理MongoDB的经验,所以能够开始使用而没有特别困难的地方。

在进行原型制作时,暂时使用数据库似乎是合适的选择。

我认为Firebase等选项可能会受到考虑,但因为是为Firebase编写的代码,当需要更改后端时可能会感到非常麻烦。

从前端访问API等方面来看,似乎并没有与Firebase Cloud Firestore等价的替代方案。然而,我们可以通过MongoDB Atlas的管理界面创建Realm DB(mBaaS),并且据说可以使用该服务的前端浏览器SDK(尚未实际尝试)。

请提供一种选择的中文释义:

https://www.npmjs.com/package/mongodb-stitch-browser-sdk

– `https://www.npmjs.com/package/mongodb-stitch-browser-sdk`:获得MongoDB Stitch浏览器SDK的链接

在这一步,可能可以将其用作Firebase Cloud Firestore的替代产品。

王国,最近没有关注,但是我发现MongoDB收购了它。我之前以为这是本地应用程序开发领域的事情,但是考虑到MongoDB的一部分,似乎也适合Web开发者关注。

当使用Mongo DB Atlas进行开发时,可以借鉴Mongo DB的知识,并且如果需要扩展,还可以选择将其替换为正式的MongoDB,这样可以尽量减少在代码级别上的修改。

bannerAds