Pull to refresh

Пиринговая база данных:-)

Reading time2 min
Views1.1K
Идея сети, где каждый является одновременно и клиентом и сервером БД.

Допустим, есть база данных на рабочей станции. Данная БД является частью распределенной базы. Пользователь формирует запрос к базе на выборку данных из столбцов СТ1 и СТ2, из таблицы ТАБ с условием что поле СТ3 = 5. Выполняется выборка из локальной Бд.
Одновременно из списка доступных станций в сети, входящих в эту распределенную БД, выбираются несколько наиболее выгодных узлов, назовем их «пирами», по аналогии с пиринговыми сетями. К этим узлам отправляется копия запроса(данные из столбцов СТ1 и СТ2, где СТ3=5, из таблицы ТАБ), с указанием запроса и станции сгенерировавшей запрос(подпись первоисточника).
Каждый пир получивший запрос, проводит выборку данных в своей локальной базе(данные из столбцов СТ1 и СТ2, где СТ3=5, из таблицы ТАБ).
Одновременно каждый из них выбирает себе пиры. И запрашивает, готова ли станция(пир) на обработку данного запроса от некоего первоисточника. В итоге, если запрос уже обрабатывался – выдается отказ и выбирается другой выгодный узел-получатель(чтобы не отсылать повторно один и тот же запрос к одному пиру).
Снова, выбранным получателям, отправляется копия запроса(выборка данных из столб..., где..., из таб...). И так повторяется дальше и дальше, пока…
Пока не будет достигнут предел. В запросе указан предел: «глубина запроса» и время жизни запроса.
Финальные узлы выполнив выборку в локальной БД, уже не отправляют запрос дальше, а сформированный результат отправляют пиру, от которого был получен запрос.
Тот, в свою очередь, объединяет результат локальной выборки и результаты полученные от других пиров и отправляет обработанные данные станции приславшей ему запрос. И так до первоисточника. Практически каждая станция формирует результат на основе локальных данных и данных от своих «корреспондентов».
Tags:
Hubs:
+5
Comments16

Articles

Change theme settings