rPman, У нас есть лог обновления каждого файла. Поэтому когда происходит извлечение и есть потеря, то последнее обновление файла (добавление данных в файл) было за долго до момента извлечения. От часа и больше.
Что по поводу SQL, представим есть таблица SQL, в ней есть ID, name файла и str_data колонки
Мы грузим 1000 строк, они сохранились в бд.
Как потом из textarea удалить несколько строк и обновить это в бд?
Алексей Смирнов, А если хранить все тоже самое что есть сейчас, но в общей таблице (сделали подсчёт всех файлов которые уже были выгружены за все время (4+года) то там больше 30гб). Строчки которые лежат сейчас и еще не извлекались из файлов весом на ~ 4гб. Кол-во строк не считали.
В одну таблицу помещать плохая идея, да?
Файлов сейчас ~ 50 000
Каждый файл от 10 до 10000 строк
Ежедневно +- 100-200 раз перезапись файлов, а соответственно новые строчки, могут как и новые файлы создаваться, так и перезаписываться старые, это особо роли не играет т.к. там файлы пронумерованы с идентификаторами, путаницы где что нет.
Выборка простая, последние N строчек.
А вот добавление строчек должно быть как в самое начало "файла" со строками так и в конец, чтобы потом в будущем получая N строк они были именно так как и расположены
rPman, да, строка, длина строки минимально от 3х символов, Макс длина до 20000 символов.
Хранение сейчас куча строк в одном файле.
Берутся всегда первые Х строк, порядка нет. Новые строки добавляются или снизу или сверху в зависимости от того как быстрее их нужно будет извлечь на обработку.
Да редактирование есть, через простой html textaera, удаление тоже есть путем либо отправки пустого textarea или нажав кнопку удалить, файл просто удаляется полностью
Одиночка Айс, Представьте что у вас 100 000 строк, одновременно извлекаются от 10 до 200шт за раз (одновременно). Каким образом делать сверку? Проверять, а нет ли этих данных в прошлых извлечениях? Как я её буду делать? Путем записи хэшей в бд? Как я уже сказал, это 20-30гб данных, эти данные с каждым днём всё прибавляются и прибавляются, то что извлекалось хранится также, но уже в "использованных" данных.
Мне известно, что один из проектов схожей тематики использует хранение в MySQL, поштучно вроде как, НО случилась один раз проблема когда произошла блокировка таблиц, данные выгружались бесконечно (или бд подвисла или что-то еще произошло не знаю), в итоге понесли больше убытки.
FanatPHP, Одиночка Айс, да, daemonhk верно сказал, каждый раз разный формат. А какой там формат в строках не имеет значения, потому что это не играет роли. Мне важно организовать безошибочное хранение таких данных и их выдачу без дублей
FanatPHP, вообще можно и по отдельности, только важно чтобы потом можно было разом забрать из этого всего списка как штучно так и несколько штук или все сразу, как уже говорил что с этими данными может работать сразу несколько воркеров и отдача одних и тех же данных в разные воркеры не должно быть, то есть уникальность здесь обязательно в плане забора данных
Я же и сказал, данные исчезают в процессе извлечения... Блокировка действительно работает, иначе бы без нее файлы перезаписывались 100 раз, потому что работа с этим данными идёт очень часто
Буду благодарен за более подробный гайд