Feodor
24.09.2018
10:54:20
Daniel
24.09.2018
10:54:34
Alexander
24.09.2018
10:54:40
Redis под нагрузкой теряет данные ©
Не моя цитата
Daniel
24.09.2018
10:54:57
И он большеват для хранения ключ-значение.
Google
Feodor
24.09.2018
10:55:08
Alexander
24.09.2018
10:55:10
Коллекции на что придуманы?
Daniel
24.09.2018
10:55:32
ID пользователей вк.
Их может быть 3, а может быть и 500000+.
Станислав
24.09.2018
10:55:53
Daniel
24.09.2018
10:56:30
При этом, когда приходит новый юзер ид, его сразу же нужно пихнуть к другим.
Feodor
24.09.2018
10:56:34
Я, конечно, не настоящий сварщик, но тут как раз прямо просится первая нормальная БД.
Станислав
24.09.2018
10:56:51
Реляционная БД хороша при сложной структуре данных. Особенно если нужны потом сложные выборки из этой сложной структуры.
Feodor
24.09.2018
10:58:09
Надо будет получать и обновлять коллекцию пользователей, лайкнувших конкретного котика, например. Звучит как задача для бд.
Станислав
24.09.2018
10:58:53
Google
Станислав
24.09.2018
10:59:07
Про котиков разговора не было.
Feodor
24.09.2018
10:59:26
Если нет других уточнений, то первая нормальная форма бд. Аргументы против?
Daniel
24.09.2018
10:59:27
У нас это как динамический кэш, который содержит только массив с ID пользователей.
Грузить каждый раз пользователей от ВК долго, а вот если их сохранить и обновлять с Callback API - мгновенно почти.
Feodor
24.09.2018
11:00:23
Время выборки при нормальных индексах будет милисекундное.
Станислав
24.09.2018
11:00:29
Daniel
24.09.2018
11:01:19
А если сервер ляжет, как поступать?
Feodor
24.09.2018
11:01:54
Редис умеет в персистентность, но зачем он тогда?
Daniel
24.09.2018
11:02:12
Их два у нас: основной и который управляет базами пользователей.
Станислав
24.09.2018
11:02:18
Feodor
24.09.2018
11:02:37
Ну ок.
Я говорю исходя из решения схожей проблемы.
Возможно вам будет удобнее Redis, но он показал себя не очень в схожей задаче.
Проблемы возникли на 500 000 записей примерно.
Ну как проблемы... Время становилось ощутимым уже.
Станислав
24.09.2018
11:04:20
Мне сложно представить динамический кеш на 500 000 записей, но пусть.
Feodor
24.09.2018
11:04:41
Ну да.
А тут то же самое в чуть иной плоскости.
Хранить джейсоны с постоянным преобразованием такая себе идея.
Станислав
24.09.2018
11:06:43
Вообще, должна быть просто отдельнаяв логика на управление данными. Кеш кешем, там хранятся только самые новый или самые часто используемые данные. Или данные, которые потом (отдельным сервисом) нужно рассортировать, обработать и положить в персистент сторадж. Например, в реляционную БД со всеми индексами, ключами и прочим.
Google
Feodor
24.09.2018
11:08:15
Я про то, что тупо хранить без каких-либо вменяемых механизмов 250к чисел да ещё и обновлять их довольно таки сложно. Осообенно если вдруг есть какие-нибудь вырезки из середины.
Антон
24.09.2018
11:08:25
Ребят, в бд есть сущность room, у нее есть поле is_deleted и есть id. Можно ли как-то сделать, чтобы is_deleted == true у currentUser, а у остальных было false, пока они сами не удалят?
Daniel
24.09.2018
11:09:27
vitalii
24.09.2018
11:09:46
Feodor
24.09.2018
11:09:57
Станислав
24.09.2018
11:11:30
Daniel
24.09.2018
11:11:58
Я придумал. Можно обновлять список раз в час, например, и когда этот список требуется. В остальное время просто сохранять изменения.
Feodor
24.09.2018
11:12:33
Антон
24.09.2018
11:12:50
?делать ещё одно поле?
мне вот сказали, что можно сделать чтобы is_deleted относилось к определенному room_member, но я не представляю как это может быть. Типа есть
Room {
id:123,
is_deleted: false
}При нажатии на удалить is_deleted становится truе, но оно же true для конкретного инстанса room, а не для конкретного юзера
Black Star
24.09.2018
11:13:09
Добвый день, как можно вот такой массив [1, 2, 3, 4, 5, 6, 7, 8] переобразовать на вот такой [[1, 2], [3, 4], [5, 6], [7, 8]]
Alexander
24.09.2018
11:13:24
Добвый день, как можно вот такой массив [1, 2, 3, 4, 5, 6, 7, 8] переобразовать на вот такой [[1, 2], [3, 4], [5, 6], [7, 8]]
@js_ru
Daniel
24.09.2018
11:13:34
Добвый день, как можно вот такой массив [1, 2, 3, 4, 5, 6, 7, 8] переобразовать на вот такой [[1, 2], [3, 4], [5, 6], [7, 8]]
array.chunk
Cenator
24.09.2018
11:14:19
Добвый день, как можно вот такой массив [1, 2, 3, 4, 5, 6, 7, 8] переобразовать на вот такой [[1, 2], [3, 4], [5, 6], [7, 8]]
https://ramdajs.com/docs/#aperture
Feodor
24.09.2018
11:15:02
Сидишь такой, думаешь про редисы, бороздящие просторы интернета и тут тебе задача на разбиение массивов от курсов каких-то)
Daniel
24.09.2018
11:15:02
Black Star
24.09.2018
11:15:11
Alexander
24.09.2018
11:16:32
Vitaly
24.09.2018
11:17:33
Cenator
24.09.2018
11:18:36
зачем
постарайся выражаться так чтобы тебя понимали
Vitaly
24.09.2018
11:18:53
если ты меня не понял, это твои проблемы
Google
Vlad
24.09.2018
11:19:08
??
Vitaly
24.09.2018
11:19:09
или тебе для этого библиотеку нужно подключить? ?
я уверен для этого найдется npm пакет.. ?
Cenator
24.09.2018
11:19:56
это не мои проблемы, так как это ты мне че-то там написал а не я тебе)
Vlad
24.09.2018
11:20:32
Добвый день, как можно вот такой массив [1, 2, 3, 4, 5, 6, 7, 8] переобразовать на вот такой [[1, 2], [3, 4], [5, 6], [7, 8]]
array.slice вырезай по два и все
vitalii
24.09.2018
11:23:12
Ivan
24.09.2018
11:23:26
Feodor
24.09.2018
11:25:21
Ок, спс.
Я переживаю в такие моменты, что мог насоветовать чего-то не того. Смотри, в твоей постановке задачи Redis выглядит очень удобным вариантом но ты можешь воткнуться во время обновления, по крайней мере я втыкался именно в него. Попробуй сразу оттестировать время записи больших объектов, не исключено что твои 250к записей будут ворочаться не быстро. Возможно стоит заранее прикинуть какую-то очередь обновления. Если есть возможность при формированиии объекта быстро получать какие-то хэши или контрольные суммы, то их тоже старайся применить.
Удачи.
Alexander
24.09.2018
11:27:20
Vitaly
24.09.2018
11:29:53
Добвый день, как можно вот такой массив [1, 2, 3, 4, 5, 6, 7, 8] переобразовать на вот такой [[1, 2], [3, 4], [5, 6], [7, 8]]
function chunk(arr, len) {
return arr.reduce((acc, curr) => {
if (acc[acc.length - 1].length === len)
acc.push([]);
acc[acc.length - 1].push(curr);
return acc;
}, [[]]);
}
набросано на коленке
Cenator
24.09.2018
11:30:44
>мутировать аргументы функции
говнокод детектед
Vitaly
24.09.2018
11:30:55
где я что мутировал?
?
Cenator
24.09.2018
11:31:06
acc.push
Vitaly
24.09.2018
11:31:11
эм
Jack
24.09.2018
11:31:14
ребят кто нить работал с amazon redshift ?
Vitaly
24.09.2018
11:31:15
это initialValue
можешь сам попробовать, эксперт ?
Google
Cenator
24.09.2018
11:32:00
лол
Vitaly
24.09.2018
11:32:22
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
или хотя бы почитать документацию
Cenator
24.09.2018
11:32:47
блять сори но ты тупой если не понимаешь
return [...acc, []] вот так правильно
Vitaly
24.09.2018
11:33:19
какая, собственно, в данном случае разница?
Cenator
24.09.2018
11:33:31
Vitaly
24.09.2018
11:33:37
если бы я мутировал arr/len, можно было бы докопаться
Сергей
24.09.2018
11:33:38
Vitaly
24.09.2018
11:33:43
а это лишняя операция
зачем нужно каждый раз возвращать новый acc?
Cenator
24.09.2018
11:33:56
?
в жс принято мутировать аргументы?
Сергей
24.09.2018
11:34:21
Cenator
24.09.2018
11:34:30
нет
ну вот я это и объяснял
Сергей
24.09.2018
11:34:34
проще код — лучше
Vitaly
24.09.2018
11:35:12
в моем случае код проще
этот acc все равно нигде не должен использоваться
кроме как добавления результатов
Сергей
24.09.2018
11:35:29
Vitaly
24.09.2018
11:35:58
короче подключайте ramdajs и будет вам счатье ?
я понял что нужно джаваскриптерам