MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tạo một cụm cơ sở dữ liệu trong đám mây với MongoDB Atlas

Trong nhiều năm nay, MongoDB đã là cơ sở dữ liệu NoSQL dành cho cả cá nhân và doanh nghiệp xây dựng các ứng dụng quy mô lớn. Nó là mã nguồn mở, có thể mở rộng dễ dàng và cung cấp tính khả dụng cao. Nó cũng hỗ trợ các truy vấn rất phức tạp và kiểm soát đồng thời chi tiết.

Tuy nhiên, các tác vụ cần thiết như cài đặt cơ sở dữ liệu, điều chỉnh nó để duy trì hiệu suất tối ưu trong thời gian dài và bảo mật nó có xu hướng đòi hỏi nhiều kỹ năng và nỗ lực chuyên dụng.

May mắn thay, có một giải pháp thay thế dễ dàng hơn:MongoDB Atlas, một phiên bản cơ sở dữ liệu đám mây được quản lý hoàn toàn.

Với MongoDB Atlas, bạn có thể tạo một cụm MongoDB trên bất kỳ nhà cung cấp đám mây lớn nào mà bạn chọn và bắt đầu sử dụng cụm đó sau vài phút. Sử dụng giao diện người dùng dựa trên trình duyệt của Atlas, bạn cũng có thể định cấu hình cụm và giám sát hiệu suất của nó một cách trực quan.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo một cụm tầng miễn phí MongoDB Atlas và sử dụng nó trong ứng dụng Python.

Điều kiện tiên quyết

Trước khi tiếp tục, hãy đảm bảo rằng bạn đã cài đặt và định cấu hình các phần mềm sau trên máy tính của mình:

  • Python 3.4 trở lên
  • pip 18.0 trở lên

1. Tạo một cụm

Để có thể sử dụng các dịch vụ đám mây của MongoDB, bạn cần có tài khoản MongoDB Atlas. Để tạo một tài khoản, hãy truy cập trang chủ và nhấn nút Bắt đầu miễn phí nút.

Sau khi hoàn thành biểu mẫu đăng ký ngắn, bạn sẽ được chuyển hướng đến trình hướng dẫn tạo cụm. Trong phần đầu tiên, bạn sẽ phải chọn nhà cung cấp đám mây và khu vực bạn thích.

Để giảm thiểu độ trễ của mạng, lý tưởng nhất là bạn nên chọn một khu vực gần máy tính của mình nhất. Tuy nhiên, hiện tại, vì chúng tôi đang tạo một nhóm cấp miễn phí, hãy đảm bảo rằng khu vực bạn chọn là khu vực có sẵn cấp miễn phí. Ngoài ra, nếu bạn đang sử dụng Google Cloud VM hoặc phiên bản Amazon EC2 làm môi trường phát triển của mình, trước tiên hãy chọn nhà cung cấp đám mây tương ứng.

Trong Cấp cụm , chọn M0 tùy chọn để tạo cụm cấp miễn phí của bạn. Nó cung cấp 512 MB dung lượng lưu trữ, phiên bản MongoDB gần đây với WiredTiger làm công cụ lưu trữ, một bộ sao chép gồm ba nút và 10 GB băng thông rộng rãi mỗi tuần.

Cuối cùng, đặt tên có ý nghĩa cho cụm và nhấn Tạo cụm nút.

MongoDB Atlas giờ sẽ mất khoảng năm phút để thiết lập cụm của bạn.

2. Định cấu hình cụm

Trước khi bắt đầu sử dụng cụm, bạn sẽ phải cung cấp một số chi tiết liên quan đến bảo mật, vì vậy hãy chuyển sang Bảo mật tab.

Đầu tiên, trong Người dùng MongoDB , bạn phải tạo người dùng mới cho chính mình bằng cách nhấn vào nút Thêm người dùng mới cái nút. Trong hộp thoại bật lên, nhập tên người dùng và mật khẩu mong muốn của bạn, chọn mục Đọc và ghi vào bất kỳ cơ sở dữ liệu nào đặc quyền và nhấn nút Thêm người dùng nút.

Tiếp theo, trong Danh sách trắng IP , bạn phải cung cấp danh sách các địa chỉ IP mà từ đó bạn sẽ truy cập vào cụm. Hiện tại, việc cung cấp địa chỉ IP hiện tại của máy tính là đủ.

Nhấn vào Thêm địa chỉ IP để tạo mục nhập địa chỉ IP mới. Trong hộp thoại bật lên, nhấn vào nút Thêm địa chỉ IP hiện tại để tự động điền vào Mục nhập danh sách trắng đồng ruộng. Ngoài ra, nếu bạn không có địa chỉ IP tĩnh, bạn nên đánh dấu đó là mục nhập tạm thời bằng cách chọn Lưu dưới dạng danh sách trắng tạm thời lựa chọn. Cuối cùng, nhấn Xác nhận để thêm mục nhập.

3. Lấy chuỗi kết nối

Bạn sẽ cần một chuỗi kết nối hợp lệ để kết nối với cụm từ ứng dụng của bạn. Để có được nó, hãy chuyển đến Tổng quan và nhấn vào nút Kết nối nút.

Trong hộp thoại mở ra, chọn Kết nối ứng dụng của bạn và nhấn vào tùy chọn Tôi đang sử dụng trình điều khiển 3.6 trở lên cái nút. Bây giờ bạn sẽ có thể thấy chuỗi kết nối của mình. Nó sẽ không có mật khẩu thực của bạn, vì vậy bạn sẽ phải nhập mật khẩu theo cách thủ công. Sau khi làm như vậy, hãy ghi lại chuỗi ký tự để bạn có thể sử dụng nó sau này.

4. Cài đặt trình điều khiển Python

Để có thể tương tác với cụm MongoDB Atlas của bạn theo chương trình, bạn phải cài đặt trình điều khiển MongoDB trên máy tính của mình. Đối với ngôn ngữ lập trình Python, PyMongo là trình điều khiển phổ biến nhất hiện nay. Cách được khuyến nghị để cài đặt nó trên máy tính của bạn là sử dụng pip mô-đun như hình dưới đây:

python3 -m pip install pymongo --user

Bạn có thể nhận thấy rằng chuỗi kết nối MongoDB Atlas của bạn là mongodb+srv:// URI. Để cho phép trình điều khiển hoạt động với các bản ghi DNS SRV, bạn cũng phải cài đặt dnspython mô-đun. Đây là cách thực hiện:

python3 -m pip install dnspython --user

5. Kết nối với cụm

Bây giờ bạn có thể sử dụng cụm MongoDB của mình từ bất kỳ ứng dụng Python nào. Để làm theo cùng với tôi, hãy tạo một tập lệnh Python mới và mở nó bằng bất kỳ trình soạn thảo mã nào.

Bên trong tập lệnh, để có thể tương tác với cụm, bạn sẽ cần một bản sao của MongoClient lớp. Là đối số duy nhất cho hàm tạo của nó, hãy chuyển chuỗi kết nối của bạn.

import pymongo



my_client = pymongo.MongoClient(

    'mongodb+srv://alice:[email protected]/test?retryWrites=true'

)

Hàm tạo ở trên trả về ngay lập tức và sẽ không phát sinh bất kỳ lỗi nào. Do đó, để kiểm tra xem bạn đã thiết lập kết nối thành công chưa, tôi khuyên bạn nên thử thực hiện thao tác trên cụm. Một lệnh gọi đến server_info() Phương thức này sẽ giúp bạn biết nhiều thông tin chi tiết khác nhau về phiên bản MongoDB của mình.

Nếu không có lỗi trong chuỗi kết nối của bạn, hãy gọi đến server_info() phương pháp sẽ thành công. Tuy nhiên, nếu tên người dùng hoặc mật khẩu bạn chỉ định không chính xác, bạn sẽ gặp phải OperationFailure lỗi. Đoạn mã sau chỉ cho bạn cách bắt nó:

try:

    print("MongoDB version is %s" % 

            my_client.server_info()['version'])

except pymongo.errors.OperationFailure as error:

    print(error)

    quit(1)

Bây giờ bạn có thể tiếp tục và thử chạy tập lệnh của mình.

6. Chèn tài liệu

Chuỗi kết nối mặc định bạn nhận được từ giao diện web của MongoDB Atlas đề cập đến cơ sở dữ liệu có tên test . Hãy tiếp tục sử dụng cùng một cơ sở dữ liệu. Đây là cách bạn có thể tham khảo về nó:

my_database = my_client.test

Cơ sở dữ liệu MongoDB bao gồm một hoặc nhiều bộ sưu tập, không có gì khác ngoài các nhóm tài liệu BSON (viết tắt của JSON nhị phân). Cụm cấp miễn phí của bạn trên MongoDB Atlas có thể có tối đa 500 bộ sưu tập.

Để làm ví dụ thực tế, hãy tạo một bộ sưu tập mới có tên là foods . Với PyMongo, bạn không cần phải gọi một cách rõ ràng bất kỳ phương thức nào để làm như vậy. Bạn có thể chỉ cần tham chiếu nó như thể nó đã tồn tại.

my_collection = my_database.foods

Điều đáng nói là đoạn mã trên không tạo ra foods bộ sưu tập ngay lập tức. Nó chỉ được tạo sau khi bạn thêm tài liệu vào đó. Vì vậy, bây giờ chúng ta hãy tạo và thêm một tài liệu mới chứa dữ liệu dinh dưỡng về một mặt hàng thực phẩm.

Sử dụng insert_one() là cách đơn giản nhất để thêm tài liệu vào một bộ sưu tập. Để chỉ định nội dung của tài liệu, bạn chuyển từ điển Python vào phương thức. Mã mẫu sau đây cho bạn biết cách thực hiện:

my_collection.insert_one({

    "_id": 1,

    "name": "pizza",

    "calories": 266,

    "fats": {

        "saturated": 4.5,

        "trans": 0.2

    },

    "protein": 11

})

Việc thêm từng tài liệu một có thể không hiệu quả. Với insert_many() , bạn có thể thêm một số tài liệu vào bộ sưu tập của mình cùng một lúc. Nó mong đợi một mảng từ điển làm đầu vào của nó. Đoạn mã sau thêm hai tài liệu khác vào bộ sưu tập:

my_collection.insert_many([

    {

        "_id": 2,

        "name": "hamburger",

        "calories": 295, "protein": 17,

        "fats": { "saturated": 5.0, "trans": 0.8 },

    },

    {

        "_id": 3,

        "name": "taco",

        "calories": 226, "protein": 9,

        "fats": { "saturated": 4.4, "trans": 0.5 },

    }

])

_id trường bạn thấy trong các tài liệu trên là trường được MongoDB sử dụng làm khóa chính. Do đó, nó là bất biến và phải có trong tất cả các tài liệu MongoDB. Nếu bạn quên thêm nó trong khi tạo tài liệu của mình, PyMongo sẽ tự động thêm nó cho bạn và chỉ định một giá trị duy nhất được tạo tự động cho nó.

7. Truy vấn đang chạy

Khi bạn đã thêm một vài tài liệu vào bộ sưu tập của mình, bạn có thể chạy các truy vấn trên đó bằng cách gọi find() phương thức trả về Cursor đối tượng bạn có thể lặp lại. Nếu bạn không chuyển bất kỳ đối số nào cho nó, hãy find trả lại tất cả các tài liệu trong bộ sưu tập.

Đoạn mã sau chỉ cho bạn cách in tên của tất cả các mặt hàng thực phẩm có trong bộ sưu tập của chúng tôi:

my_cursor = my_collection.find()



for item in my_cursor:

    print(item["name"])



# Output is:

#   pizza

#   hamburger

#   taco

Nếu bạn muốn find() để chỉ trả về những tài liệu phù hợp với tiêu chí cụ thể, bạn phải chuyển một từ điển Python cho nó. Ví dụ:nếu bạn muốn tìm tài liệu có name được đặt thành "pizza", bạn có thể sử dụng mã sau:

my_cursor = my_collection.find({

    "name": "pizza"

})

Đối với các truy vấn phức tạp hơn, bạn có thể sử dụng toán tử truy vấn được đặt tên trực quan của MongoDB trong từ điển mà bạn chuyển đến find() phương pháp. Ví dụ:đoạn mã sau chỉ cho bạn cách sử dụng $lt toán tử để tìm tài liệu có calories trường được đặt thành giá trị nhỏ hơn 280:

my_cursor = my_collection.find({

    "calories": { "$lt": 280 }

})



for item in my_cursor:

    print("Name: %s, Calories: %d" % 

        (item["name"], item["calories"]))



# Output is:

#   Name: pizza, Calories: 266

#   Name: taco, Calories: 226

Bằng cách sử dụng ký hiệu dấu chấm, bạn cũng có thể sử dụng các trường lồng nhau trong các truy vấn của mình. Đoạn mã sau chỉ cho bạn cách tìm tài liệu có trans , bên trong fats , được đặt thành giá trị lớn hơn hoặc bằng 0,5:

my_cursor = my_collection.find({

    "fats.trans": { "$gte": 0.5 }

})



for item in my_cursor:

    print("Name: %s, Trans fats: %.2f" % 

        (item["name"], item["fats"]["trans"]))



# Output is:

#   Name: hamburger, Trans fats: 0.80

#   Name: taco, Trans fats: 0.50

8. Cập nhật và xóa tài liệu

Rất giống với insert_one()insert_many() các phương thức là update_one()update_many() mà bạn có thể sử dụng để thay đổi nội dung của tài liệu đã có trong bộ sưu tập của mình. Cả hai phương pháp cập nhật, ngoài dữ liệu mới, cần có một truy vấn tới số tài liệu cần được thay đổi.

Bạn có thể sử dụng nhiều toán tử cập nhật trong các phương pháp cập nhật của mình. Cái thường được sử dụng nhất là $set , cho phép bạn thêm các trường mới hoặc cập nhật giá trị của các trường hiện có. Đoạn mã sau chỉ cho bạn cách thêm hai trường mới có tên fibersugar tới tài liệu có name trường được đặt thành "taco":

my_collection.update_one(

    { "name": "taco" }, # query

    {

        "$set": {       # new data

            "fiber": 3.95,

            "sugar": 0.9

        }

    }

)

Nếu truy vấn bạn chuyển đến update_one() phương thức trả về nhiều hơn một tài liệu, chỉ tài liệu đầu tiên được cập nhật. update_many() phương pháp không có giới hạn này.

Cuối cùng, bằng cách sử dụng delete_one()delete_many() , bạn có thể xóa tài liệu trong bộ sưu tập của mình. Cả hai phương pháp đều cần truy vấn để xác định tài liệu nào cần được xóa. Đây là cách bạn có thể xóa tất cả các tài liệu có calories trường được đặt thành giá trị nhỏ hơn 300:

my_collection.delete_many({

    "calories": {

        "$lt": 300

    }

})



# Deletes all the three documents

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để đặt tài liệu _id thành db trong Mongoose?

  2. Tải các phần tử không thành công trên máy chủ JS

  3. Lược đồ đúng MongoDB cho dữ liệu tổng hợp

  4. Có quy ước đặt tên bộ sưu tập trong MongoDB không?

  5. MongoDB hoặc CouchDB - phù hợp để sản xuất?