2013-05-28 2 views
0

Чтобы улучшить масштабируемость моей базы данных, я хотел бы иметь несколько экземпляров PostgreSQL, распределенных на нескольких компьютерах. (Горизонтальное окошко)Распространение SQL-запросов через кластер PostgreSQL

Большинство операций, выполненных в моей базе данных, являются INSERT - есть также несколько случайных SELECT, однако основной упор все еще остается в INSERT, и поэтому база данных быстро растет.

Например: представьте, что у нас есть 3 таблицы с именем user, product и activity(user_id, product_id, activity(viewed, bought...), timestamp).

Люди, находящиеся здесь на стороне бизнеса, используют pgAdmin для запроса уникальной базы данных (на данный момент). Что было бы отличным инструментом, позволяющим распределять SQL-запросы по кластеру и возвращаться с уменьшенным набором результатов без необходимости использовать ключевое слово UNION в наших запросах SELECT?

Например, рассмотрим следующий SQL SELECT заявление:

select u.name FROM user AS u INNER JOIN activity AS a ON u.id = a.id INNER JOIN 
product AS p ON p.id = a.id WHERE product.name='blabla'; 

В идеале ничего не изменилось бы для людей, использующих pgAdmin, но под капотом запрос будет получить нарезанный на мелкие «куски» и распространяется на все серверов в кластере.

При поиске в Интернете я натолкнулся на PL/Proxy от Skype, но этот проект все еще активен? (Тот же вопрос для Postgres-XC.)

Любая помощь будет очень признательна, спасибо.

ответ

2

Посмотрите на PGPool http://www.pgpool.net/docs/latest/pgpool-en.html

именно на параллельных запросов. «Параллельный запрос Используя функцию параллельного запроса, данные можно разделить на несколько серверов, так что запрос может выполняться одновременно на всех серверах, что сокращает общее время выполнения. Параллельный запрос работает лучше всего при поиске крупномасштабных данных».

Смежные вопросы