Что такое MongoDB и каковы её ключевые особенности?

Ответ

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 часто выбирают для систем, где важна скорость разработки, работа с большими объемами неструктурированных данных (например, логи, аналитика, контент) и масштабируемость.