GolosSQL – это публичная MS-SQL база данных со всеми данными блокчейна внутри.
Предыдущие посты:
- Вступительный пост
- Обновление 1 - Распознавание языка (english only - только на английском)
- Обновление 2
- Обновление 3
- Обновление 4
- Обновление 5
- Обновление 6
- Обновление 7
- Обновление 8
Что нового?
Многие люди используют GolosSQL для получения информации о подписчиках или о постах, которыми поделились.
Проблема в том, что эти операции не связаны с отдельной транзакцией, они хранятся в блокчейне с использованием custom_json
транзакций. В базе данных GolosSQL вы можете найти эти транзакции в таблице TxCustoms
.
Хранить детали операций подписки и репоста в строке JSON довольно неудобно, потому как вам необходимо десериализовать контент строки JSON, чтобы получить возможность проанализировать содержимое.
Даже если SQL-сервер обладает функциями JSON для выполнения такой операции, запросы выполняются довольно медленно, так как сервер должен обработать каждый ряд, прежде чем сможет отфильтровать данные. К сожалению, невозможно создать индекс для значений, содержащихся в строке JSON.
Поиск подписчиков или репостов трудно назвать эффективным, особенно когда знаешь, что таблица TxCustoms
содержит почти 1 миллион записей.
Но это еще не всё: формат строки JSON для операций «follow» со временем изменился. Это необходимо учитывать, так как парсинг данных и написание эффективного запроса быстро становятся громоздкими.
Короче говоря, вы сталкиваетесь с большим бардаком, когда пытаетесь проанализировать подписчиков и репосты!
К счастью, GolosSQL с его новыми функциями готов вам помочь.
Отображение Подписчиков и Репостов
Были созданы два новых отображения, которые позволят быстрее и проще анализировать подписчиков и репосты.
1. Отображение подписчиков
Это очень простое отображение, которое содержит всего два столбца:
follower
: имя подписчикаfollowing
: имя пользователя, на которого он подписан
Теперь узнать, сколько у меня подписчиков, я могу просто отправив подобный запрос:
SELECT COUNT(*) FROM Followers (NOLOCK) WHERE following = 'arcange'
Отображение подписчиков – это не отображение транзакций, т.е. оно не показывает исторические данные и не позволяет узнать, когда пользователь подписался или отписался от какого-либо аккаунта.
2. Отображение репостов
Это отображение тоже очень простое и содержит следующие столбцы:
account
: поделившийся постом пользовательauthor
: автор исходного постаpermlink
: постоянная ссылка на исходный постtimestamp
: когда был сделан репост
Узнать количество репостов в своем блоге теперь можно просто отправив запрос вида
SELECT COUNT(DISTINCT permlink) FROM Reblogs (NOLOCK) WHERE author = 'arcange'
Грядущее улучшение производительности
Так как GolosSQL пользуется всё больше людей, я планирую произвести улучшение производительности.
Но для начала я возьму заслуженный отпуск.
А пока что не стесняйтесь присылать мне ваши комментарии и предложения. Напишите мне в канале GolosSQL в chat.golos.io или в Telegram (@VIM_Arcange)
Спасибо за чтение!
Все выплаты с этого поста пойдут на поддержание работы GolosSQL.
Спасибо за вашу поддержку.
Спасибо @rusteemitblog за вычитку этого поста перед публикацией.
Поддержите мою работу в качестве делегата. Каждый голос важен. Спасибо !
Если Вам понравился этот пост, не забудьте проголосовать или подписаться на меня
Добрый день @arcange.
Когда разбирался с GolosSQL, то увидел, что в таблице Comments хранятся список все голосов за статью/комментарий в поле active_votes в виде JSON строки.
Но, когда к статье есть много комментариев (я это заметил на 800), например как бывает к постам @golos.loto, JSON строка обрывается, поскольку заканчивается выделенная длина поля (varchar).
Это конечно не популярный сценарий, да и те же данные можна получить с таблицы TxVotes, сделав отдельный запрос, но я думаю, что лучше Вам сказать об этом, мало ли... Поскольку кто-то может использовать поле active_votes и на нем обжечься на больших объемах данных.
Поле
active_votes
моделиvarchar(max)
в базе данных. Это означает, что его длина не ограничивается.Я буду проверять его. Но для меня, проблема только в блокцепи.
Спасибо, что привлекли мое внимание.
Почти всегда есть ограничения по размеру поля, для каждого типа данных. Иногда они явные, иногда нет.
Ради интереса, посмотрите поле ~active_votes~ для запроса:
В рядке результата, значение поля битый JSON, поскольку его длина не поместилась в поле таблицы. Вопрос в том, критично ли это для системы, или никто ним почти не пользуется, а информация берется с других таблиц.
@arcange Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
gidlark, litrbooh, t3ran13, boddhisattva, xroni, francisgrey, strecoza, ukrainian, neo, damm, gildar, mir, natalia, narin, polyideic, fetta, kavalsky, andrvik, archibald116, zoss, phoenix, vasyl73, shuler, genyakuc, marija28151, elviento, dr-boo, lenarius, vasilisapor2, nefer, semasping, gans91, drim, karusel1, orezaku, asuleymanov, ovtretya, exan, ukrainochka, boltyn, acidgarry, on1x, vika-teplo, sva-lana, borisss, aleksandra, nims55, kondratij, baltiyka, felicita, optimist, del137, bammbuss, dmitrijv, olgaborisova, manavendra, kertar, dimas102, bag, sergiusduke, vealis, skiexpert, mirumir, wedge, nerossoul, gbot
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
@arcange Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Ваш пост получил наибольшее количество голосов на один день
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Очень удобная штука) Спасибо @arcange ) Чувствую себя программистом прям когда пользуюсь ей)))