Document DB
Document DB w monday code to trwałe rozwiązanie do przechowywania danych, hostowane w całości w infrastrukturze monday.com. Integruje się z aplikacjami, dzięki czemu możesz bezpiecznie przechowywać ich dane bez konfigurowania ani utrzymywania własnej bazy danych.
Wprowadzenie
Document DB w monday code to warstwa bazy danych zgodna z MongoDB, zbudowana w oparciu o infrastrukturę Firebase. Zapewnia bezpieczne i skalowalne przechowywanie danych w środowisku monday.com. Możesz połączyć się z nią bezpośrednio z aplikacji za pomocą dowolnej biblioteki klienckiej zgodnej z MongoDB.
Wiele regionów
W przypadku aplikacji obsługujących wiele regionów w każdym regionie (np. UE, AU, USA) tworzona jest osobna baza danych. W przypadku aplikacji, które nie obsługują wielu regionów, baza danych jest tworzona tylko w regionie, w którym znajduje się konto monday.com.
Dane nie są synchronizowane między regionami, a monday.com nie udostępnia narzędzi do przenoszenia danych między regionami.
Dlatego zalecamy włączenie obsługi wielu regionów przed rozpoczęciem korzystania z Document DB. Dzięki temu dane aplikacji będą przechowywane w tym samym regionie co konto monday.com każdego klienta. Pomoże Ci to spełnić wymagania dotyczące lokalizacji danych oraz szersze wymagania dotyczące ochrony danych klientów na całym świecie.
Limity
Wszystkie aplikacje korzystające z Document DB podlegają następującym dziennym limitom w każdym regionie:
| Kategoria | Dzienny limit (na region) |
|---|---|
| Maksymalny rozmiar bazy danych | 1 GiB |
| Odczyty encji | 50 000 dziennie |
| Zapisy encji | 20 000 dziennie |
| Usunięcia encji | 20 000 dziennie |
Resetowanie limitów
Limity dzienne są resetowane we wszystkich regionach o północy czasu pacyficznego.
Ponowne obliczanie rozmiaru
Rozmiar bazy danych jest obliczany ponownie co godzinę w każdym regionie.
Jeśli przekroczysz limit rozmiaru w danym regionie, możesz usunąć dane. Dostęp zostanie automatycznie przywrócony podczas najbliższego ponownego obliczania rozmiaru.
Aplikacje obsługujące wiele regionów
Limity dzienne są stosowane niezależnie w bazie danych każdego regionu. Jeśli aplikacja przekroczy dowolny limit w danym regionie, cały dostęp do bazy danych tego regionu - z wyjątkiem operacji usuwania - zostanie zablokowany.
W takim przypadku w logach pojawi się następujący błąd:
PERMISSION_DENIED: Missing or insufficient permissions
Ograniczenie dotyczy tylko danego regionu. Pozostałe regiony nadal działają bez zmian.
Uzyskiwanie dostępu do Document DB
Wymagania wstępne
- Włączona obsługa wielu regionów (opcjonalna, ale zalecana)
- Standardowa biblioteka kliencka MongoDB (Node.js, Python itp.)
- Dostęp do SDK monday code
- Apps CLI w wersji 4.10.2 lub nowszej
Krok 1: Wdróż aplikację
Zanim uzyskasz dostęp do Document DB, musisz wdrożyć aplikację co najmniej raz. Spowoduje to zainicjowanie bazy danych i udostępni parametry połączenia.
Krok 2: Pobierz parametry połączenia środowiska uruchomieniowego
Po wdrożeniu aplikacja automatycznie otrzyma bezpieczne parametry połączenia za pośrednictwem zmiennej środowiskowej MNDY_MONGODB_CONNECTION_STRING. Są to parametry połączenia z uprawnieniami do odczytu i zapisu, których aplikacja używa do wszystkich operacji na bazie danych.
Możesz je pobrać za pomocą SDK.
Nie musisz konfigurować ich ręcznie. monday code automatycznie dodaje tę wartość do środowiska produkcyjnego.
Krok 3: Wygeneruj tymczasowe parametry połączenia
Po pierwszym wdrożeniu aplikacji możesz też wygenerować tymczasowe, 30-minutowe parametry połączenia z uprawnieniami tylko do odczytu. Umożliwią Ci one przeglądanie danych na komputerze lokalnym.
Uruchom następujące polecenie CLI:
mapps database:connection-string
Informacje
Polecenia CLI
Metody SDK
Przykład w Node.js
// Using the official MongoDB Node.js driver
const { MongoClient } = require('mongodb');
// Access the connection string from environment variables
const uri = process.env.MNDY_MONGODB_CONNECTION_STRING;
const client = new MongoClient(uri);
async function connectToDatabase() {
try {
// Connect to the MongoDB server
await client.connect();
console.log('Connected to MongoDB');
// Access a database
const database = client.db();
// Access a collection
const collection = database.collection('your_collection_name'); // Collections are created automatically when you first write to them.
// Basic operations example
// Insert a document
const insertResult = await collection.insertOne({
title: 'Task',
description: 'Complete documentation',
status: 'In Progress',
createdAt: new Date()
});
console.log('Inserted document:', insertResult);
// Find documents
const findResult = await collection.find({ status: 'In Progress' }).toArray();
console.log('Found documents:', findResult);
// Update a document
const updateResult = await collection.updateOne(
{ _id: insertResult.insertedId },
{ $set: { status: 'Completed' } }
);
console.log('Updated document:', updateResult);
// Delete a document
const deleteResult = await collection.deleteOne({ _id: insertResult.insertedId });
console.log('Deleted document:', deleteResult);
} catch (error) {
console.error('Error connecting to MongoDB:', error);
} finally {
// Close the connection when done
await client.close();
}
}
connectToDatabase();
Przykład w Pythonie
# Using pymongo
import os
import pymongo
from pymongo import MongoClient
# Access the connection string from environment variables
uri = os.environ.get('MNDY_MONGODB_CONNECTION_STRING')
client = MongoClient(uri)
try:
# Access a database
db = client.get_default_database()
# Access a collection; collections are created automatically when you first write to them.
collection = db['your_collection_name']
# Basic operations example
# Insert a document
insert_result = collection.insert_one({
'title': 'Task',
'description': 'Complete documentation',
'status': 'In Progress',
'created_at': pymongo.datetime.datetime.utcnow()
})
print(f"Inserted document ID: {insert_result.inserted_id}")
# Find documents
find_result = collection.find({'status': 'In Progress'})
for document in find_result:
print(f"Found document: {document}")
# Update a document
update_result = collection.update_one(
{'_id': insert_result.inserted_id},
{'$set': {'status': 'Completed'}}
)
print(f"Modified {update_result.modified_count} document(s)")
# Delete a document
delete_result = collection.delete_one({'_id': insert_result.inserted_id})
print(f"Deleted {delete_result.deleted_count} document(s)")
except Exception as e:
print(f"Error: {e}")
finally:
# Close the connection when done
client.close()
Chcesz zwiększyć limity aplikacji? Złóż wniosek o ich podwyższenie tutaj.