Какой самый оптимальный / надежный вариант для хранения данных?

Приветствую,

В поисках оптимального / безопасного / быстрого способа хранения данных.

Работаю с bash скриптом, который после обработки должен куда-то записывать "домен сайта" и потом сверять ли он уже обрабатывался.

На данный момент уже около 1,5 млн доменов накопилось (домен вида: yandex.ru, google.com, toster.ru и т.д).

Не думал, что будет такой объем данных по этому сразу не подумал о масштабируемости.

Учитывая, что это только "для меня" я реализовал глуповато и на скорую руку - у меня в папке sites/ создаются папки с именами доменов и потом просто поиск идет ли директория существует :) Все работает довольно шустро.

Пример кода:
if [ -d "$systemdir/$downloadfolder" ]
        then
        echo "nothing to do" # папка существует
        else
        mkdir -p $systemdir/$downloadfolder
    fi


Но столкнулся с переездом сервера и необходимостью быстро разворачивать свою рабочую систему - теперь директорий слишком много и при переносе данных на другой сервер все сложно, даже если я просто делаю ls sites > list.sh и потом дописываю к каждой строке создание директории и выполняю как скрипт.

И вот я задумался об изменении принципа работы.

1. Можно все хранить в текстовом файле и делать запись / поиск по нему - файл порядка 130 мб - вроде бы работает быстро.
2. Можно хранить в mysql и с bash скрипта делать нужные мне запросы в базу

Но и в том и другом случае возникает проблема: в пики у меня будет около 800-1300 запросов в секунду на запись/поиск файла. Боюсь что может не корректно записаться информация в текстовом файле, а mysql при высоких нагрузках на сервер и большом кол-во запросов - попросту ляжет (LA > 700).

Как лучше все сделать ? Какие другие возможные варианты?

Или быть может остаться на моей "файловой структуре" хранения данных так как по мне это самый безопасный / производительный способ (конечно же имеется ввиду под мои текущие задачи) и не обращать внимание на время развертывания системы с бекапов?
  • Вопрос задан
  • 705 просмотров
Пригласить эксперта
Ответы на вопрос 5
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
Взять redis и настроить синхронизацию с диском в зависимости от паранойи и производительности вашего сервера.

Дело в том, что хеш таблицы это идеальная структура данных для вашей задачи.
Ответ написан
edinorog
@edinorog
Троллей не кормить!
И вот я задумался об изменении принципа работы.

1. Можно все хранить в текстовом файле и делать запись / поиск по нему - файл порядка 130 мб - вроде бы работает быстро.


наверное стоит почитать принцип поиска по текстовому файлу. ты офигеешь и больше такие мысли не будут посещать светлую голову.
Ответ написан
Комментировать
2ord
@2ord
Директории нафиг не нужны, ибо лишь только лишняя нагрузка на файловую систему при поиске существующей.
Вместо этого воспользоваться Redis с её SADD, SISMEMBER.
Ответ написан
Комментировать
Я больше в поисках лучшего и самого простого способа для работы/разворачивания с бекапов.

Попробуйте Tarantool.
— "персистентность": лог транзакций (.xlog) и полные снимки БД (.snap);
— простой перенос с сервера на сервер (достаточно скопировать все файлы командой scp);
— простая система горячего бэкапа и подключения реплики;
— быстрее чем Redis :)
Ответ написан
Комментировать
MetaAbstract
@MetaAbstract
Архитектор информационных систем и баз данных. Ful
Berkeley_DB возьмите она и быстрая и надежная и объемы легко тянет и функционал мощный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы