Какие встраиваемые (embedded) базы данных популярны в Go?

Ответ

В Go для локального хранения данных, не требующего отдельного сервера, популярны следующие встраиваемые (embedded) базы данных:

  1. SQLite

    • Тип: Реляционная СУБД.
    • Описание: Полнофункциональная SQL-база данных, которая хранится в одном файле. Идеальна, когда нужны транзакции, сложные запросы и реляционная структура. Для работы требуется CGO и драйвер, например github.com/mattn/go-sqlite3.
    • Пример:

      import "database/sql"
      import _ "github.com/mattn/go-sqlite3"
      
      db, err := sql.Open("sqlite3", "./database.db")
  2. BadgerDB

    • Тип: Key-value хранилище.
    • Описание: Высокопроизводительная key-value база данных, написанная на чистом Go. Оптимизирована для SSD. Хранит данные в директории с файлами. Отличный выбор для кэширования или хранения неструктурированных данных.
  3. bbolt (ранее BoltDB)

    • Тип: Key-value хранилище.
    • Описание: Транзакционная key-value база данных, хранящая все в одном файле. Проект BoltDB был заархивирован, но его активным форком является bbolt. Он прост в использовании и надежен.
  4. BuntDB

    • Тип: Key-value хранилище.
    • Описание: Быстрая встраиваемая in-memory key-value база данных с поддержкой персистентности (сохранения на диск). Поддерживает геопространственные данные.

Выбор зависит от задачи:

  • Используйте SQLite, если вам нужны реляционные данные и мощь SQL.
  • Используйте BadgerDB или bbolt, если вам нужно простое и быстрое хранилище пар "ключ-значение". BadgerDB обычно производительнее, в то время как bbolt проще из-за хранения всего в одном файле.