Ответ
MongoDB — это документоориентированная NoSQL база данных. В отличие от реляционных баз данных (как PostgreSQL), она хранит данные не в таблицах со строками, а в коллекциях с документами, которые имеют гибкую JSON-подобную структуру (формат BSON).
Ключевые особенности:
- Гибкая схема данных (Schema-less): Документы в одной коллекции могут иметь разный набор полей. Это идеально подходит для быстрой разработки и работы с полуструктурированными данными.
- Горизонтальная масштабируемость: MongoDB отлично масштабируется на множество серверов с помощью механизма шардирования, распределяя данные и нагрузку.
- Высокая производительность: Поддерживает мощные механизмы индексации, агрегации данных и встроенную репликацию для отказоустойчивости.
- Богатый язык запросов: Позволяет выполнять сложную фильтрацию и агрегацию данных прямо на стороне базы.
Пример использования в Go (драйвер mongo-go-driver
):
// main.go
package main
import (
"context"
"log"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
ctx := context.TODO()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)
collection := client.Database("testdb").Collection("users")
doc := bson.D{{Key: "name", Value: "Alice"}, {Key: "age", Value: 30}}
_, err = collection.InsertOne(ctx, doc)
if err != nil {
log.Fatal(err)
}
}
Когда использовать: MongoDB часто выбирают для систем, где важна скорость разработки, работа с большими объемами неструктурированных данных (например, логи, аналитика, контент) и масштабируемость.