Рейтинг:-1

О том, как большие компании настраивают свои базы данных

флаг in

Я пытаюсь понять, как компании, которые обрабатывают большие запросы к базе данных, настраивают свою инфраструктуру. Недавно я создал несколько приложений на Python, которые хранят данные в PostGres, а запросы на чтение/запись требуют времени; поскольку они не хранятся в ОЗУ и являются серьезным узким местом для скорости. Который все равно будет работать, если количество пользователей меньше 10, и даже при 100 с очередями он может работать, но с тысячами запросов, как хранятся данные, так как они будут тормозить во время чтения и записи.

В недавнем проекте веб-сайта, над которым я работаю, у меня возникла идея прочитать всю базу данных и сохранить ее в pandas, а также периодически записывать измененные записи в базу данных. Этот подход кажется опасным в ситуациях, когда в случае сбоя ОС и необходимости ее перезапуска это приведет к потере данных.

Это подход крупных компаний? Где они считывают всю базу данных в оперативную память? Если нет, не могли бы вы посоветовать, какими возможными способами я мог бы обрабатывать большие данные, скажем, для веб-сайта блога, где можно было бы сократить время чтения/записи.

Даже если вы можете указать мне страницы, где я могу больше узнать об этом, этого будет достаточно. Спасибо

флаг us
Rob
* «У меня возникла идея прочитать всю базу данных» * — это примерно так же эффективно, как заказать все книги на Amazon, дождаться их доставки, а затем, после того как ваши стопки книг будут упорядочены по цвету обложки, выбросить все книги, которые не посвящены проектированию баз данных для чайников и разработке приложений, интенсивно использующих данные. - Схема базы данных и дизайн запросов гораздо важнее для производительности с большими наборами данных, хотя достаточно крупногабаритное оборудование и настройка на стороне сервера часто (какое-то время) достаточно хорошо компенсируют плохое и посредственное программирование.
флаг us
Rob
На http://highscalability.com/start-here/ обсуждается довольно много реальных архитектур — не все из них применимы к вам, и вы не найдете там кода, но концепции, решения и проекты часто весьма образовательный.
флаг us
100 пользователей это почти ничего. Ежедневно мы обрабатываем около 200 миллионов (довольно сложных) транзакций для пары миллионов пользователей. Но каждый отдельный запрос оптимизирован для производительности.
флаг br
«Это подход крупных компаний? Где они считывают всю базу данных в оперативную память?» - Да, вообще говоря, если набор данных должен быть полностью в памяти, вы, вероятно, рефакторите БД для работы в системе NoSQL.
Рейтинг:3
флаг al
fvu

Даже относительно небольшие серверы способны выполнять сотни запросов в секунду.

Поэтому я думаю, что сначала, крупный узкое место вызвано неправильной настройкой вашего экземпляра Postgres. Существует множество настраиваемых параметров, перейдите к PGTune чтобы получить хорошую начальную мелодию.

Затем просмотрите свои запросы. Есть ли у вас индексы, которые охватывают большинство запросов? Запускайте запросы с помощью объяснять (например, в pgAdmin) и посмотреть, насколько они эффективны

Затем посмотрите, возвращают ли ваши запросы соответствующие размеры наборов данных. Нет необходимости возвращать всю таблицу, если вам нужна только 1 запись. В этом случае оптимизируйте свои запросы.

Вы видите, есть много вы можете сделать, прежде чем обращаться к более экзотическим, сложным и часто более хрупким методам.

Что касается вашего комментария: специально для postgres вики есть интересная информация. В любом случае, здоровая доза чтения прекрасного руководства также имеет решающее значение. Механизмы баз данных — это прекрасные инженерные решения, и вы должны понимать, что происходит под капотом, чтобы действительно хорошо ими управлять. И есть и плохие новости: настройка вашей базы данных сильно зависит от размера базы данных, того, как и насколько эффективно к ней осуществляется доступ, в реальных сценариях вы будете постоянно следить за тем, как она работает и какие действия могут улучшить ситуацию. . Мы используем pgBadger для многих аналитических задач.

Slartibartfast avatar
флаг in
Не могли бы вы порекомендовать мне какой-нибудь онлайн-ресурс, где я могу больше узнать об оптимизации базы данных?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.