В чем разница между кэшированием базы данных и пулированием - PullRequest
2 голосов
/ 14 февраля 2020

Меня больше всего интересует общая концепция, но, в частности, мне нужно понять эту концепцию, чтобы научиться программировать на стороне сервера с помощью Swift / Vapor. Но хорошо получить общий ответ c, даже если вы не знаете Swift / Vapor.

Я обнаружил, что для подключения к базе данных я могу использовать эти два метода:

func requestPooledConnection<Database>(to dbid: DatabaseIdentifier<Database>) -> Future<Database.Connection>

func requestCachedConnection<Database>(to database: DatabaseIdentifier<Database>) -> Future<Database.Connection>

Теперь, что я понимаю из документации (Источник: https://docs.vapor.codes/3.0/database-kit/overview/#pools):

  • Используя пул, я могу повторно использовать существующее соединение или создать новое один, если не существует
  • При пулировании соединения не распределяются между циклами событий, чтобы предотвратить условия гонки
  • Существует обычно обычно один пул на базу данных на событие l oop
  • При кэшировании вы получаете одно соединение для каждого идентификатора базы данных

Теперь это немного сбивает с толку, особенно термин «обычно», и я также попытался найти дополнительную документацию об общей концепции (например, https://en.wikipedia.org/wiki/Connection_pool), и похоже, что слова «кэширование» и «объединение» иногда используются взаимозаменяемо. Теперь мне интересно понять разницу, потому что это было бы полезно для правильной оптимизации моих веб-сервисов. Но для меня это выглядит - по крайней мере, насколько я понимаю документацию Vapor - они очень похожи, и я не понимаю разницы. Может кто-нибудь уточнить это?

1 Ответ

0 голосов
/ 14 февраля 2020

Кэширование сохраняет базу данных SQL Временно и пул сохраняет соединение с базой данных

...