2015-06-05 3 views
3

В настоящее время используется boltdb для хранения различных записей в ковше.Поддерживает ли boltdb параллельные запросы для чтения и обновления db?

Как я могу использовать концепцию языка и каналы языка Go в чтении и обновлении в db?

+2

Это слишком широкий вопрос - вы должны попытаться достичь своей цели самостоятельно, а затем, когда вы столкнетесь с конкретными проблемами, попросите помочь преодолеть эти барьеры. –

ответ

7

Вообще, да, можно, при условии, что вы обратите внимание на следующие моменты:

  • все доступы должны быть сделаны в своих собственных операциях. Транзакции не должны передаваться между goroutines (будь то только для чтения или чтения-записи).

  • boltdb допускает только один писатель в данный момент времени. Если несколько одновременных транзакций пытаются писать одновременно, они будут сериализованы. Согласованность базы данных гарантируется, но она влияет на производительность, поскольку операции записи не могут быть распараллелены.

  • транзакции только для чтения выполняются одновременно (и потенциально распараллеливаются).

  • открывать только одну транзакцию в данном горуте одновременно, чтобы избежать ситуаций взаимоблокировки.

Смежные вопросы