Anonymous
Ну представим, что не php.
The Ant
Anonymous
Короче вихрь мерсена вам всем, господа.
The Ant
больше чем уверен, на канале сишников подскажут как это сделать в пару строк
The Ant
мнгопоток ваще за уши притянут )
Dmitriy
The Ant
ему банерокрутилку нада. +1 делать да и все на каждом обходе.
The Ant
просто индекс запоминать на котором был последний запрос
The Ant
512 на впс
The Ant
за 1 доллар
Anonymous
Да, как вариант. Либо просто вытаскивать рандомный индекс в новый массив с удалением из старого, после отдачи массива на выход слить оставшиеся элементы из исходного. Мы теряем стейт в плане сортировки, но позиции нам и так не нужны, главное, что элементы все сохранилось
Да какой тут алгоритм. Проблема в том, что предполагается, что операция "либо просто вытаскиваем рандомный индекс" это на самом деле типа что-то array_rand, который сделает абсолютно тоже самое, о чем я говорил выше, потратив еще больше памяти при этом, наверняка, просто он не элемент выдаст, а референс на него.
The Ant
выеб нам мозг якобы интересной задачей :)
Dmitriy
Anonymous
Не знаю, видимо ничего?
The Ant
докупить память
Dmitriy
окей. у меня на сервере 96 и больше не влезет . как решить выше задачу ?
Anonymous
Никак.
The Ant
на файлах
The Ant
можно 40+тб ссдшниками по 2тб забить :)
Dmitriy
файлы долго. сколько там писать 96 гб рам в файл ?
Anonymous
Просто это все похоже на то, что сказать, типа есть 10 Кб ОЗУ, она на 99.99% заполнена данными. И задача, например, сделать какую-то операцию на этих данных, например математическую. И когда кто-то говорит как это сделать, то говорят, что так не выйдет, а что sdelatHorosho() функция, встроенная в язык, которая делает тоже самое по сути, справится.
Dmitriy
ты не притян на хайлоад
Dmitriy
садись 2
The Ant
ну как большие индексы то работают во всяких сфинксах?
The Ant
когда все не влазит в оперу
Dmitriy
SarcasmIO
бинлоги
SarcasmIO
SarcasmIO
перестройка индексов у вконтача на 12 миллиардов сообщений на бинлогах занимает около полторы секунды
SarcasmIO
операция буквально бесплатная
Anonymous
Ты знаешь, что такое бинлог?
The Ant
https://toster.ru/q/438966
The Ant
у чувака индексы в память нивлазят, чо делать та?!
The Ant
просто больше ссдшников :D
SarcasmIO
вообще то если не требуется горизонтального масштабирования
SarcasmIO
это самый логичный выход
Dmitriy
бинлоги
для той задачи дорого
The Ant
The Ant
лучше бы придумал банерокрутилку с вероятностными характеристиками отдельных банеров
Anonymous
Бинлог тут вообще никаким боком не поможет.
The Ant
и штоб 1 юзеру показывался тока уникальный... и код в виде микросервиса на гитхаб )
Anonymous
Бинлог это когда операции в сыром виде записываются в последовательном виде, в файл, или в память. Например добавляем элемент add a 1; потом редактируем edit a 2; потом удаляем delete a; все эти операции записываются в "бинлог", а потом "индексируются", т.е. проходят все эти операции (иногда с обратной стороны, чтобы игнорировать удаленные значения, к примеру) и составляется база данных из этого.
Dmitriy
Anonymous
Как это можно для описанной задачи использовать — загадка.
SarcasmIO
Vitaly
Ого вы написали метро
Vitaly
Сколько*
The Ant
не такое говно, где по кругу показывать
Maxim
@wata5hi а ключи массива, это числа?
Anonymous
Anonymous
Ну зависит от многого.
Anonymous
Но ничего на скорости памяти не будет работать все равно.
Vitaly
Dmitriy
почему нет?
пишет в файл + целостность проверяет .... и т.д
Anonymous
Писать в файл это сама по себе операция медленная. Даже если с этими данными ты не делаешь ничего. Io wait под нагрузкой будет весьма ощутим.
Anonymous
Правда есть ssd на pci шине, но даже они будут медленнее, чем память.
Anonymous
к тому же сам SQL запорс это довольно дорогая по времени выполнения операция имхо
Anonymous
я не к тому что надо всё и везде только файловые оперции применять, вовсе нет! яа даже наоборот 80-90% это работа с БД, но есть места где работа с файлами необходима
Anonymous
Оно пишет одним потоком. Но файл отображается в память. Полностью, или сегментом.
Anonymous
Anonymous
Т.е. когда вы пишете данные в таблицу mysql, это не гарантирует, что произошла запись базы на диск.
Anonymous
Только в бинлог пишет сразу.
Anonymous
Но одним процессом.
Anonymous
А не кучей скриптов в один файл.
Anonymous
Но я не предлагаю mysql. Лучше redis в этом случае.
Anonymous
странно, я думал запись в БД это наиболее критичная операция у СУБД в плане производительности, сегодня если не забуду какой нибудь тест скидаю простенький проверить
Anonymous
редис это не реляционная типа монго?
Nafania
Redis это key value с плюшками
Anonymous
Не реляционная.
Anonymous
а! ну так так тогда конечно оно будет сопоставимо, а то и быстрее файлов
Anonymous
😊
Anonymous
с этого и надо было начинать
Anonymous