Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
arcange
8 лет назад

[GolosSQL] - База данных SQL со всеми данными блокчейн

Многим хотелось бы иметь доступ к данным блокчейна Голоса, чтобы анализировать то, что происходит, или найти некую ценную информацию.

Но не у всех есть достаточно умения в программировании, чтобы собрать данные и получить из них желаемый результат.

Поэтому, я создал общедоступную базу данных Microsoft SQL Server со всеми данными блокчейна.

Главное преимущество такой базы данных в том, что данные структурированы и легко доступны любому приложению, способному общаться с базой данных SQL Server’а. Наличие базы данных SQL Server позволяет получать быстрые ответы на запросы.

Зачем использовать базу данных SQL?

Простыми словами, SQL запрос спрашивает базу данных, а та выдаёт ответ, который называется результатом запроса.
Например, когда вы работаете с большими объемами данных, такими как блокчейн Голоса, вы желаете получить ответы на простые вопросы, вроде:

  • Какова была величина уменьшения Силы Голоса за последние шесть недель?
  • Какие посты входят в десятку самых успешных? (В плане награды)

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

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

Давайте рассмотрим технические детали

Диаграмма базы данных

Таблица “Blocks” содержит сырую информацию из блоков (время, делегат, …)
Каждый блок может быть связан с одной или несколькими записями в “Transactions”. В зависимости от типа транзакции, связанные с транзакцией данные хранятся в соответствующей “Tx****” таблице.

Новые транзакции из последних блоков данных добавляются в базу данных каждые 10 секунд.

Таблица аккаунты наполняется вот так:

  • Каждый раз, когда в базу данных добавляется транзакция от неизвестного аккаунта, соответствующие аккаунту данные добавляются в нее.
  • Каждый раз, когда в базу данных добавляется транзакция от известного аккаунта, соответствующее аккаунту поле “dirty” помечается как “true”.
  • Каждые десять минут все аккаунты с флагом “dirty” обновляются.

Такое поведение было добавлено для того, чтобы:

  • избежать перегрузки сервера базы данных слишком частым обновлением аккаунтов
  • снизить нагрузку на сидов нод Голоса, запрашивая данные аккаунтов реже

Так что будьте аккуратнее с запросами к таблице “Accounts”. Если у аккаунта есть флаг “dirty”, это означает, что новые транзакции, появившиеся в базе данных, возможно затронули значения некоторых полей, но эти значения еще не были обновлены.

Полнотекстовый поиск

По базе данных возможен полнотекстовый поиск. Это позволяет быстро находить информацию, содержащуюся в постах и комментариях.

Например, если я хочу узнать, где кто-то говорил обо мне, поможет следующий запрос

SELECT author, title, body, url FROM TxComments WHERE CONTAINS(body, '@arcange')

Быстродействие

Для улучшение быстродействия ответов на запросы было создано несколько индексов. Если ваши запросы выполняются медленно, не стесняйтесь написать мне, чтобы проанализировать ситуацию и посмотреть как можно ее улучшить.

Давайте посмотрим на некоторые технические данные.

Информация по подключению к базе данных:

Вот информация о том, как подключиться и посылать запросы в базу данных:

Server: sql.golos.cloud
User: golos
Password: golos

Поддержка

Если вам нужна помощь, или у вас есть какие-то вопросы и комментарии, пожалуйста используйте канал GolosSQL

Доступность и быстродействие

SQL сервер расположен в дата-центре с доступностью 24/7/365. Пропускная способность канала до 500Mb/s

Сейчас сервер находится в общей инфраструктуре.
Я слежу за нагрузкой, и если он потребует больше ресурсов, я выделю их из награды за этот пост для перевода его на выделенный сервер.


Translated by RuSteemitBlog
Переведено командой RuSteemitBlog

Поддержите меня и мою работу в качестве делегата, проголосовав за меня тут!

Если вам понравился этот пост,
не забудьте голосование или подписаться или поделиться

7
75.461 GOLOS
Комментарии (12)
Сортировать по:
Сначала старые