Меня, как аналитика, интересует пользовательские возможности, а не особенности администрирования PostgreSQL. В целом меня устраивает данная СУБД. Если сравнивать с MySQL, то работать в PostgreSQL более удобно. Могу с уверенностью порекомендовать вам ее для построения аналитических систем.
Select iddoc /*номер документа*/, the_date, min(the_date) as mindate From table Group by iddoc Having the_date = mindate
Запрос должен найти номера документов с минимальной датой. Такие запросы решаются с помощью оконных функций.
Select a as val1, b as val2, val1+val2 as sum_a_b From table;
Это просто печалит, так как приходится очень долго тестировать вычисляемые поля. При вычислении разного типа величин увеличивает время написания правильного запроса.
CREATE SEQUENCE public.dim_time_id_dim_time_seq;
CREATE TABLE public.dim_time (
id_dim_time BIGINT NOT NULL DEFAULT nextval('public.dim_time_id_dim_time_seq'),
CONSTRAINT id_dim_time_pk PRIMARY KEY (id_dim_time)
);
ALTER SEQUENCE public.dim_time_id_dim_time_seq OWNED BY public.dim_time.id_dim_time;
Как вариант, можно использовать тип SERIAL, однако он менее предпочтителен, так как при откате транзакций, выпадут значения из множества ключей.
При создании первичного ключа создает для него индекс автоматически.
Не очень порадовали view. Работает может быть чуть быстрее чем SQL запрос. Ожидал большего. В 9.3 ввели понятие Materialized Views (https://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.3). Пока нет времени протестировать производительность.
service postgresql stop service postgresql star service postgresql restar
Редактирование файла /etc/postgresql/[version postgresql]/main/postgresql.conf
listen_addresses = '*' #разрешить принимать сообщения со всех IP
Добавление строки в файл /etc/postgresql/[version postgresql]/main/pg_hba.conf
host all all 0.0.0.0/0 md5 #разрешить соединение с любым хостом с любой БД любому пользователю
или можно так через ssl:
hostssl all all 0.0.0.0/0 md5
Создание пользователя:
CREATE USER test WITH PASSWORD 'test'
Назначение ему полных прав для БД:
GRANT ALL PRIVILEGES ON DATABASE demo_db to test;
Дальнейшее, можно прочитать по ссылкам.
Ссылки на материалы: