Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_работа_с_PostgreSQL.doc
Скачиваний:
28
Добавлен:
10.11.2019
Размер:
5.91 Mб
Скачать

3Создание индексов

Индексы отличаются от первичных ключей тем, что не требуют непременной уникальности значений, входящих в их состав полей (колонок). Они устанавливаются по одной или нескольким колонкам, которые часто используются при поиске и сортировке данных: индексы [2] помогут системе значительно быстрее найти нужные данные или отсортировать их в нужной последовательности.

Для примера БД «Деканат ВУЗа» в качестве индекса можно определить колонку GrNo таблицы Students. Это позволит выполнить часто используемый запрос типа "Найти всех студентов учащихся в группе X", где X – некий параметр.

Для того чтобы создать индекс в pgAdmin III необходимо выполнить определенные действия.

Первоначально в окне Браузер объектов выделяется соответствующая таблица, активизируется ее контекстное меню, в нем выделяется пункт Новый объект -> Новый индекс (рисунок 3.1). В результате этого откроется окно Новый индекс (рисунок 3.2), в котором необходимо определить следующие свойства:

  • Имя – имя нового индекса;

  • Метод доступа (тип индекса [3], или тип индексного файла):

  1. B-tree – индекс, представленный в виде структуры типа В-дерева;

  2. hash – метод доступа, основанный на использовании хеш-адресации;

  3. gist – обобщенное поисковое дерево, которое позволяет реализовывать индексную поддержку для различных типов данных [4, 5, 10];

  4. gin – обобщенный обратный индекс [4, 6].

  • Уникально – указывает на то, что никакие две строки индексируемой таблицы не могут принимать одинаковое значение для индексируемой колонки (или комбинации колонок) в одно и то же время (для примера индекса в таблице Students это свойство выбирать не нужно).

Рисунок 3.1 – Контекстное меню создания индекса

Рисунок 3.2 – Закладка Свойства окна Новый индекс

После этого определяется колонка (или колонки) таблицы, образующие индекс (рисунок 3.3).

Рисунок 3.3 – Закладка Колонки окна Новый индекс

Соответствующий запрос создания нового индекса можно увидеть на закладке SQL (рисунок 3.4).

Рисунок 3.4 – Текст запроса создания нового индекса

4Доступ к PostgreSql из Java

4.1Соединение с PostgreSql

Соединение с БД на Java - JDBC (Java DataBase Connectivity) — платформо-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java.

JDBC основана на концепции драйверов, позволяющих получать соединение с БД по специально описанному URL - единообразному локатору ресурса (Uniform Resource Locator). Драйверы могут загружаться динамически. Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL, содержащий протокол, за который драйвер отвечает.

В случае, если JDBC не содержит драйвера к конкретной СУБД, можно использовать драйвер-мост JDBC-ODBC, а драйверы ODBC есть практически ко всем СУБД.

Любая программа, которая предполагает использовать JDBC должна импортировать пакеты java.sql.*:

import java.sql.*;

Следует подчеркнуть, что при загрузке драйвера из программы она становится зависимой от конкретной СУБД. Для перехода к другой СУБД в этом случае требуется перекомпилирование программы.

Для загрузки драйвера JDBC из программы следует выполнить:

    1. для PostgreeSQL

Class.forName ("org.postgresql.Driver");

    1. для MySQL

Class.forName ("com.mysql.jdbc.Driver");

    1. для драйвера-моста JDBC-ODBC

Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");

Соединение с БД описывается классом, реализующим интерфейс java.sql.Connection:

Connection dbh = DriverManager.getConnection(url, user, password);

Здесь url - строка, по которой JDBC определяет с чем, где и чем устанавливать соединение. Она имеет один из следующих форматов

  1. Для прямого обращения к серверам, например PostgreSQL:

    • PostgreSQL:

jdbc:postgresql://сервер/база_данных

jdbc:postgresql://сервер:порт/база_данных

  • MySQL:

jdbc:mysql://сервер/база_данных

jdbc:mysql://сервер:порт/база_данных

  1. Для моста jdbc:odbc сервер указывать не надо. Он задается в odbc

jdbc:odbc:база_данных

где сервер – это адрес сервера, где расположена СУБД, порт – это tcp-порт, на котором будет устанавливаться соединение и база данных – это имя БД, которая будет использоваться.

Примечание. Что бы программа была независимой от конкретного драйвера целесообразно задать драйвер, url, user и password в отдельном текстовом файле и загружать его в начале программы. Лучше всего использовать понятие свойств программы и, соответственно, файл с расширением properties.