----------------------------------------------------------------------------------
@MSGID: 2:5015/46 67f43877
@REPLY: 2:5015/519.1 ddd95524
@CHRS: CP866 2
@TZUTC: 0300
@TID: hpt/lnx 1.9
Hello, Egor!
Monday April 07 2025 20:23, from Egor Gavrilov -> Nil A:
EG> И именно поэтому, собственно, и пришлось уйти от дерева, чтобы хранить
EG> эти данные в СУБД, чтобы не было такого, что для хранения этих данных
EG> надо кучу ОЗУ. Плюс надо вообще было сразу на Cassandra переводить
EG> было, ибо реляционки не такие уж и быстрые для такого.
Если нужен функционал типа
https://nodehist.bsrealm.net или
https://www.fido.de/archive/lookup , то это поиск по адресу, или имени сисопа, или имени станции.
Причём адрес может быть типа 2:5015/0, чтобы узнать как менялся Хост
со временем.
Поисковики выше, они хранят в SQL все нодисты и какими-то select
выдирают быстро.
Если бы я без SQL писал, то это было бы два хешмапа.
1. Ключ=FTNАдрес, значение=список изменений. Либо прямо тут можно
впихивать изменения, или ссылаться тупо на имя файла + номер строки.
2. Ключ=Имя, значение=список изменений. Возможно хранить не как
хешмеп, а как красно-чёрное дерево, тогда поиск по нему не O(1), а O(log
n), зато у тебя имена отсортированы, и можно искать по первым буквам.
Каждый нодлист обрабатывается построчно, каждый адрес и имя
проверяется на наличие уже в шехмепе, и добавляется при отсутствии. Если уже
есть, то проверяется актуальна ли ещё последняя запись, и если нет, то
добавляется новое изменение.
Сложность алгоритмов. Обход нодлистов O(n*m), где n - количество
обрабатываемых нодлистов, m - количество строк в нодлисте. Поиск по хешмапу должен
быть O(1) в идеале. Проход по списку изменений O(n), где n - количество
изменений для данного адреса/имени, но чаще всего тебе надо просто последнее
изменении посмотреть, а это O(1) доступ.
Best Regards, Nil
--- GoldED+/LNX 1.1.5-b20240306
* Origin: ChatGPT can make mistakes. Check important info. (2:5015/46)
SEEN-BY: 221/6 301/1 460/58 5001/100 5015/42 46
120 255 519 5019/40 5020/570
SEEN-BY: 5020/715 828 830 848 1042 4441 12000
5023/24 5030/49 722 1081
SEEN-BY: 5053/51 55 58 5054/8 5058/104 5060/900
5061/133
@PATH: 5015/46 5020/1042 4441