желательно обрабатывать их максимально быстро.
Я использовал csv-таблицы и каждый модуль обрабатывает их построчно, выполняя свою ф-цию. (unix-way)
Но теперь в главном модуле мне нужно делать нормальные выборки, а не обрабатывать построчно. Думаю, мне надо чтоб индексировались ячейки таблиц, по скольку строк в таблице может быть много - например, миллион.
Перед тем как я начал делать всё на csv-таблицах, я пробовал делать на SQL. У меня слабый ноутбук и замерив скорость самой частой операции "записать 2000 строк" Mysql (30 сек.) и liteSQL (6 сек.) меня эти результаты не устроили, поэтому я сделал всё что было можно на csv-файлах. (на них всё летает, разумеется)
Вот размышляю над тем, чем теперь воспользоваться. Смотрю в сторону NoSQL(mongoDB), LiteSQL или же продолжить делать всё на файлах, написав нужны выборки самому.
Кто что посоветует и кто что проверял? Что самое быстрое?
P.S. Софт работает только на локалхосте, сижу на Debian
Запись в файл и последовательное чтение из него всегда будет быстрее, чем использование бд, но если тебе нужно его обрабатывать, брать сложные селекты, то тут уже необходима бд
Нельзя говорить, что быстрее, не обозначив четко круг операций и их частоту
не то чтобы сложные, но в главном модуле к примеру мне нужна выборку данных из нескольких строк делать. а с построчным чтением это уже неудобно. Стою на распутье - liteSQL, NoSQL, своя миниБД на файлах или что-то еще?
Своя бд — это оверкилл, особенно, если ты для обработки этих данных используешь питон. Что тебе выбрать я знаю, тем более, как я сказал, не указано какие операции нужны, и неизвестно какие объекмы данных будут
Нужны несложные операции - выборка по id или name не более 50 строк из таблицы пускай в ней будет 1кк записей, изменение их и запись обратно. Желательно чтобы быстро работало. И похоже, на этом этапе мне придется конвертировать csv-таблицу с 1 млн. записей в базу, которую выберу. Конвертация назад уже будет необязательна.
я примерно написал. таблица в миллион строк(этот минимум, возможно 10 млн, 50, а лучше больше). операции не сложные - выборка по name или id, запись обратно - всё. ну может, простые какие-то операции пригодятся еще. Просто я понимаю, что неиндексированный csv с 1+ млн. записей парсить из-за получения 5 ячеек с нужными значениями - нелогично.
Мне кажется, что на таких объемах особой разницы в бд не будет
уже были. mysql - 30 сек., litesql - 6 сек.
я так прочитал смысл, что ты иммешь ввиду что объемы маленькие и разницы не будет. Но разница есть
ты в бд писал все строки одной транзакцией или каждую строку отдельной транзакцией?
отдельной и тестировал это на php. но как-то к таким БД у меня осталось впечатление что они тормознутые... Сейчас про Redis читаю, он быстр, но на сколько мне подходит пока не понял
если утебя запись в приоритете над селектом данных - убери индексацию
Спасибо, буду знать. Но приоритет больше в селекте нужных значений из csv (или конвертированного каждый раз csv в БД)
Редис
Вот про него сейчас и читаю, очень надеюсь что это подходящее решение
Обсуждают сегодня