- •Теория субд
- •За таблицами – наше будущее!
- •Связываем данные
- •Объектный рай
- •Сетевая база данных
- •Клиент-сервер
- •Особенности клиент-сервера
- •Индексы на сервере
- •Третий уровень
- •Сетевые субд
- •Архитектуры субд: технология локальных (настольных) бд
- •Архитектуры субд: технология "клиент-сервер"
- •В чем сходства и различия?
- •Выбираем бд
- •Кибернетическое будущее за базами знаний
- •Искусственный интеллект
- •Данные и знания
- •Базы знаний и экспертные системы
- •Машинное обучение
- •Анализ данных и olap-технологии
- •Индукция правил и деревья решений
- •Хранилища данных и корпоративная память
- •Машинное обучение – ключ к кибернетическому бессмертию
- •Кофе. Солнце. Базы данных
- •Не microsoft'ом единым. Bde
- •Odbc на практике
- •Форточки и odbc
- •Odbc для пингвина
- •Какие они бывают?
- •Что такое правильная база данных?
- •Нужна наглядная схема!
- •А как это сделать?
Форточки и odbc
В современных операционных системах от Microsoft компонент ODBC-диспетчера и некоторый набор
ODBC-драйверов уже входит в поставку дистрибутива. Доступ к диспетчеру осуществляется через панель управления посредством элемента "Источники данных (ODBC)" (папка "Администрирование"). При установке все ODBC-драйверы прописываются в системе, их список можно посмотреть во вкладке диспетчера "Драйверы". На базе установленных драйверов можно заводить DSN'ы - описатели соединения с базой данных, указывающие, помимо драйвера, специфичные для базы параметры. Именно этими DSN'ами и будет потом оперировать конечное приложение. Под акка-унтом администратора можно заводить системные DSN'ы, которые будут доступны всем пользователям. Непривилегированный пользователь может заводить пользовательские DSN'ы, доступные только ему. Остальные вкладки предназначены для отладочной трассировки, оптимизации подключений, совместного использования пользовательских DSN'ов и других специфических целей.
В качестве примера мы быстро и непринужденно настроим доступ к базам MySQL и PostgreSQL. Первым делом оправляемся на сайты произво дителей и скачиваем оттуда ODBC-драйверы вида myodbc-xxx.zip и psqlodbc-xxx.zip, после чего устанавливаем их с помощью setup'а и msi-сценария соответственно. Производители оправдали свои заявления о поддержке ODBC и действительно предоставили нам работающие драйверы. Запускаем диспетчер и убеждаемся, что наши драйверы появились в соответствующей вкладке. Теперь на вкладке "Системный/пользовательский DSN" жмем "Добавить", выбираем наш свежеустановленный MySQL/PostgreSQL-драйвер и заявляем, что "Готово". Теперь осталось настроить параметры соединения. Для обеих баз достаточно указать символьное имя DSN'а (которым будут оперировать приложения), сетевой адрес для соединения (который вполне может быть и localhost'ом) и конкретное имя базы данных (одна СУРБД может обслуживать несколько баз одновременно). Также можно указать пользователя "по умолчанию", его пароль и порт, на котором висит база, если он отличается от стандартного. Вот и все. Теперь поль зовательские приложения могут получать доступ к этим базам.
Odbc для пингвина
В GNU/Linux нет встроенного ODBC-диспетчера, зато внешних - несколько. Немного опережая других, лидирует проект UNIX-ODBC (понятно, почему название именно такое). Схема его функционирования во многом похожа на схему его аналога из Windows. Настраивать его можно как с помощью различных графических frontend’ов, так и руками - через конфигурационные файлы, формат которых прост и понятен. С frontend’ами, я думаю, ты разберешься сам, а я покажу, как настраивать собственноручно. Настраивать будем все тот же доступ к базам MySQL и PostgreSQL. Для начала скачаем/соберем/установим из пакета ODBC-драйверы, представленные динамическими библиотеками lib-myodbc.so и psqlodbc.so, размещение которых произвольно и особой роли не играет. Теперь пропишем их в конфигурации ODBC-диспетчера, обычно это файл /etc/odbcinst.ini :
]
Description = ODBC for MySQL Driver = /usr/lib/libmyodbc.so FileUsage = 1
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbc.so
FileUsage = 1
Теперь осталось создать DSN'ы на базе прописанных
драйверов. DSN'ы обычно хранятся в файле
/etc/odbc.ini :
[MAWD]
Driver = MySQL
SERVER = my.host.ru
DATABASE = newantispam
UID =
PWD =
PORT =
[elfbilling] Driver = PostgreSQL Database = elfbilling Servername = 172.16.1.1 Description = ELF Billing UID = PWD = Port = 5432
И вот уже соединения настроены. Проверить их можно тут же с помощью маленького SQL/ODBC-клиен-та, который обычно входит в пакет UNIX-ODBC и называется isql. Формат его вызова таков:
isql isql elfbilling vasya lovesexgod
Если выскочило приглашение ко вводу SQL-запроса, значит, соединение прошло удачно.
Как видишь, ничего сложного в настройке UNIX-ODBC нет, если понимать, что делаешь (а без этого я советую вообще ничего не делать).
ЧТО ДАЛЬШЕ?
На этом моя лекция подходит к концу, в отличие от истории развития интерфейсов DataBase Connectivity. Безусловно, существующие стандарты далеки от идеала, но не может не радовать сам факт их наличия. Когда разработчики стандартизуют интерфейсы, они делают шаг навстречу партнерам и пользователям и шаг назад по отношению к концепции тупого выжимания денег из своего сегмента рынка. Так что больше стандартов, хороших и разных, помогающих новым разработкам ускорять прогресс, а не вставлять палки в его колеса.
КАК СОЗДАТЬ И ИСПОЛЬЗОВАТЬ БАЗУ ДАННЫХ
Недостатки этого способа станут явными тогда, когда ты захочешь более эффективно обрабатывать накопленные данные. И ты постепенно придешь к мысли о создании базы данных, а для ее претворения в жизнь потребуется знать способы создания эффективных баз данных, а также средства использования этих данных для оперативного извлечения полезной информации.
БАЗА ДАННЫХ: ЗАЧЕМ И ПОЧЕМУ?
Многие прекрасно знают, что "эта груда железа" предназначена для автоматической обработки данных. Причем неважно, для каких целей ты используешь ее: общаешься с кем-нибудь, играешь, слушаешь музыку, смотришь видео или решаешь математические задачи. В любом случае компьютер использует данные определенного типа, переводит их на свой машинный язык (на "нули" и "единицы"), а потом обрабатывает в своей "оперативке". Какая-то часть данных "сбрасывается" на винчестер и сохраняется в виде файлов. Во всех перечисленных случаях пользователя мало волнует порядок расположения данных в этих файлах. Другое дело, когда ты попытаешься создать компьютерную информационную систему. Например, персональный телефонный справочник или статистику посещаемости форума в твоей сети.
В первом случае можно, конечно, ограничиться обыкновенными записями в текстовом файле (например, в документе Word), тем более что туда легко можно заносить разнообразную "списочную" информацию: сведения о своих друзьях-абонентах, их адресах проживания и т.п. Способ представления и размещения информации в этом случае ты придумаешь сам. К примеру, построчно запишешь: "Иванов, Иван, Иванович, 223-5485, ул. Декабристов, 18/1-64", "Сергей Сергеевич Сидоров, 375-6986, пр. Ленина, д.18, кв. 49" и т.д. Что же плохого в такой организации данных?
Во-первых, тебе, вероятно, потребуется упорядочивать информацию по различным признакам (например, по фамилиям или по адресам), а во-вторых, быстро извлекать выборки с произвольным сочетанием признаков (например, список абонентов, имеющих домашние телефоны в определенном доме).
Однако описанная организация данных не позволит сделать ни первое, ни второе. Дело в том, что упорядочить информацию в текстовом файле достаточно сложно. Гораздо проще сделать это без всякого компьютера, имея сведения, записанные на картонных карточках :). Машина не сможет даже выбрать правильно номера домов и квартир, потому что они могут быть записаны по-разному. Это для тебя записи "18/1-64" и "д. 18, корп. 1, кв. 64" – одно и то же, а для компьютера это совершенно разные вещи. А если взять второй упомянутый пример по учету посещаемости форума, то здесь Word’у вообще "не объяснить", где IP-адрес машины, а где дата подключения этой машины, которая нужна для подсчета посещений за определенный период.
Чтобы научить глупую машину безошибочно искать и систематизировать данные, надо прежде всего сообщить ей правила игры (соглашения) о способах представления данных. Такой процесс называется структурированием информации, и он производится путем введения типов: текстовых, числовых и т.п. А также форматов данных (например, формат даты). Для таких структурированных данных придумали специальный вид файлов – базу данных (БД). Другими словами, база данных предназначена для хранения некоторого объема структурированных данных под определенным именем во внешней памяти.
