Какую базу данных использовать и как ускорить

У меня есть проект для хранения и обработки расходов пользователя. В базе данных будет только две операции: ВСТАВИТЬ а также ВЫБРАТЬ. База данных может содержать миллионы записей в день (в зависимости от количества пользователей или от пользователя и т. Д.).

общие запросы:

  1. Показать расходы от date x в date y, (В основном)
  2. Применение фильтров по запросу (1).
  3. Показать расходы на конкретный товар до даты. (Запросы по всей таблице)
  4. Показать все расходы до даты. (редко)

1: Я запутался в том, какую базу данных использовать для этого: SQL или NoSQL или SQL и NoSQL вместе (как в моем случае?). Мне нужно сравнение на основе скорости при запросе большого количества данных.

2: Поскольку в день он может содержать миллионы записей, миллионы строк, полученных в результате запроса, необходимо передавать с сервера на клиент. (В моем случае есть еще одна дополнительная нагрузка. Поскольку сервер базы данных удален от веб-сервера. Поэтому результат необходимо перенести с сервера базы данных на веб-сервер, а затем на клиент.) Как сделать это быстрее?

4: Если я выберу MySQL, что будет лучше: а: Сбросить все данные в одну большую таблицу SQL. б: Создание таблицы для каждого дня (с датой в качестве имени таблицы), которая будет содержать меньшие объемы данных. (Я думал, что (б) будет быстрее, давая диапазон дат, так как я знаю, какую таблицу выбрать, вместо того, чтобы искать в большой таблице и запрашивать конкретную дату.)

3: Сейчас я пытаюсь с MySQL. (Тестовые данные уже есть. Я использую скрипт Python для анализа этих данных и выгрузки их в MySQL. Я могу отредактировать скрипт и заставить его работать для любой базы данных.) Я попробовал запрос (4) упомянутое выше. В результате, полученном от сервера базы данных, мой веб-сервер / клиент (так как я тестирую, мой веб-сервер теперь является клиентом) зависает, в то время как около 13 миллионов строк в результате запроса передаются из сервер базы данных. Поэтому я использовал цикл в своем PHP-коде, чтобы ограничить количество запросов до 1000 строк за раз, как показано ниже:

(Loop until getting data from database){
i=0;
SELECT * FROM <Table> LIMIT i, 1000;
i+=1000;
}

Это все еще медленно, но теперь система не зависает во время передачи. Но делает LIMIT здесь будет работать вроде, получи 1й 1000 записей (пока i=0) Затем 2-я 1000 записей (пока i=1000) и так далее. Или он получит 1-ю 1000 записей (пока i=0), Затем начните снова с 0, но пропустите 1-ю 1000 записей и получите 2-ю 1000 записей (пока i=1000) и так далее, который будет намного медленнее, очевидно. (Я искал в Интернете, чтобы узнать механизм LIMIT, но везде говорят о LIMIT с ORDER BY, а не о том, как получать данные по страницам с LIMIT и как это влияет на производительность.)

Постскриптум Я не профессионал базы данных. Просто новичок. Поэтому спрашиваю предложения экспертов перед началом проекта.

-2

Решение

Если у вас есть миллионы записей в день, я думаю, вам стоит обратиться к базе данных NoSQL. Это будет быстрее и эффективнее при работе с большими данными. Я предлагаю elasticsearch для вас, так как вы выполняете только функции INSERT и SELECT для огромного количества данных. Он имеет хорошую документацию и достаточно прост в использовании. Я думаю, что это послужит вам хорошо.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]