Nп/п : 26 из 100
 От   : Nil A                               2:5015/46         07 апр 25 23:30:10
 К    : Egor Gavrilov                                         07 апр 25 23:42:02
 Тема : Как хранить историю нодлистов
----------------------------------------------------------------------------------
                                                                                 
@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



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх