Производительность BoltDB в качестве серверной БД

Я думаю об использовании BoltDB в качестве основной базы данных, и у меня есть несколько вопросов по моему коду Go; также нужно ваше мнение об использовании BoltDB в качестве основной серверной БД.

  1. Я использую net/http Go и использую BoltDb в качестве глобальной переменной.
  2. Когда программа запустится, она прочитает BoltDB, и файл будет открыт до тех пор, пока программа не завершится.
  3. Когда запросы (http) отправляются в программу, она получает доступ к BoltDB. (HandleFunc)
  4. Я не использовал ни один канал.

Q1. Самый важный вопрос: способна ли BoltDB работать с 1000 одновременных подключений? Q2. Если были параллельные запросы на запись, будет ли BoltDB автоматически обрабатывать один за другим?

Большое спасибо. Я новичок в Go и BoltDB, и мне интересно, правильно ли я использую БД.


person Gon    schedule 30.03.2016    source источник


Ответы (1)


А1. Да, мы используем его с более чем 1000 одновременных подключений.

А2. Да, Bolt является потокобезопасным, когда вы вызываете db.Update, он блокирует базу данных, поэтому вы знаете, что ваши данные всегда будут согласованными.

Также подсказка: никогда не делайте ничего тяжелого внутри функции обновления.

person OneOfOne    schedule 30.03.2016
comment
Большое спасибо! - person Gon; 30.03.2016
comment
Вы можете добавить переменную *bolt.DB в реализацию http.Handler вместо глобальной переменной, чтобы упростить ее тестирование (и параллельно). - person Ben Johnson; 01.04.2016
comment
Кроме того, он может отлично справляться с высоким параллельным чтением, но записи будут сериализованы. Пока ваши 1000 запросов не все выполняют запись (или они выполняют небольшие записи), все должно быть в порядке. - person Ben Johnson; 01.04.2016