Size: a a a

2021 July 05

VO

Vyacheslav Olkhovche... in Modern::Perl
Кликхаус он про другое
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
Собирать данные и делать по ним агрегации
источник

MG

Mr. Good in Modern::Perl
А что если я оставляю всё на MySQL как есть, а для инсертов делаю очередь на Редисе?
источник

MG

Mr. Good in Modern::Perl
не, наверное это тоже не выход
источник

АГ

Алексей Галаев... in Modern::Perl
А почему бы не разделить всё на условное БД + Поисковик. Тогда поисковик будет реиндексироваться время от времени, а БД не будет так сильно страдать.
Можно настроить тот же сфинкс с дельта индексами, ну или самому ластик наполнять.
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
я бы наверное вторую таблицу как-то переодически актуализировал бы, а поставшики менял бы свои индивидуальные таблицы.
источник

АГ

Алексей Галаев... in Modern::Perl
Так тебе всё равно надо её наполнять. Теже вьюхи, надо будет преесобирать постоянно. При этом, у тебя мучаться будет вся таблица. А сфинкс или ластик можно наполнять только свежими обновлениями, тут и селекты проще будут
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
не постоянно а раз в час например.
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
но это уже надо смотреть по месту
источник

АГ

Алексей Галаев... in Modern::Perl
Тут вопрос про актульность данных в "кеше". Всё равно пересбор материализованной вьюхи по большой таблице это не быстрый процесс
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
т.е. абстрактная задача это одно, а когда вторая таблица -- это поставщики, то скорее всего апдейт будет только раз в сутки реально
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
да похуй на актуальность, поставщик и так пиздит. склад у него совершенно не актуальный
источник

AP

Anton Petrusevich in Modern::Perl
https://theweeklychallenge.org/blog/perl-weekly-challenge-120/?fbclid=IwAR2EY2bDmGq62oxMqqNq_ogUuAmmg-5kJW0K2QwjCEaAmVbegdCPKaZ1NUw

сходу моё решение первой задачи:
$ perl -E 'sub bit_flip { my $M = 0b01010101;  (($_[0] >> 1) & $M ) | (($_[0] & $M) << 1) } sub test_flip { say "$_[0] => @{[bit_flip $_[0] ]}" } test_flip $_ for 101, 18'
101 => 154
18 => 33
источник

MG

Mr. Good in Modern::Perl
На самом деле с этим строго, если пару раз не актуально - бан. В остальном я полностью свободен - могу менять архитектуру как угодно.
источник

АГ

Алексей Галаев... in Modern::Perl
Я бы задачу по поиску отдал другой утилите. Тот же sphinxsearch на базе mysql сделан, с ним можно общаться с помощью mysql драйвера перлового. При этом, ему надо дать запрос и он будет этим запросом наполнять себя сам. Просто индексацию надо по крону поставить.
Но если надо дельтаиндексы делать, то придётся чуток повозиться с ним.
источник

AP

Anton Petrusevich in Modern::Perl
у тебя таблица товаров, таблица поставщиков и таблица связей поставщик-товар-цена, верно? третья таблица это два инта и один децимал. откуда там килобайты?
источник

АГ

Алексей Галаев... in Modern::Perl
Таким образом у нас и с БД снимается нагрузки и поиск вполне себе гибкий может получиться
источник

AP

Anton Petrusevich in Modern::Perl
не знаю размер децимал, но я обычно делаю типа 20,2 для денег, если биткоины не нужны. это 10 байт. два инта по 4. итого 18 байт на запись
источник

AP

Anton Petrusevich in Modern::Perl
миллиард записей займёт 18 гб рам плюс индексы. дешёвого сервера на 128гб хватит
источник

MG

Mr. Good in Modern::Perl
таблицей поставщиков можно пренебречь, как и остальными, две главные таблицы - таблица товаров с указанием принадлежности к группе и таблица предложений поставщиков по каждому товару.  Я не измерял размер записи точно, там несколько полей, включая описание товара на несколько байт, но допустим, всё поместится в память, получается ваше предложение - всё засунуть в память?
источник