| КОНТАКТЫ: |
| тел.: (495) 951-33-73 |
| тел.: (495) 951-27-50 |
| e-mail: info@ibb.ru |
| ТЕХПОДДЕРЖКА |
| тел.: (495) 772-43-24 |
| e-mail: support@ibb.ru |
 |
|
|
ИНСТРУКЦИИ
ИСПОЛЬЗОВАНИЕ БАЗ ДАННЫХ (БД) НА СЕРВЕРЕ КОМПАНИИ INTERNET BUSINESS BUREAU (IBB)
Поддерживаемые субд
На хостинговом сервере компании IBB, для пользователей тарифного плана "Бизнес" имеется возможность использовать базы данных, PostgreSQL или Mysql.
PostgreSQL и Mysql - реляционные базы данных, поддерживающие стандарт SQL92 (MySQL в меньшей степени) и обладающие широкими возможностями, сравнимыми с возможностями таких признанных лидеров рынка БД как Oracle, DB2 или MSSQL, но не требующих весьма высоких лицензионных отчислений за использование.
MySQL больше подходит для небольших и средних проектов, тогда как PostgreSQL можно рекомендовать для средних и крупных, в которых используются таблицы в несколько сотен тысяч записей и больше.
Некоторые компании, которые используют для на своих серверах MySQL: Yahoo! Finance, и PostgreSQL: Wireless Developer Network , GeoCommunity , Ready Set Net
Создание бд
Ваша личная БД создается техническим персоналом компании IBB при выделении места под Ваш сайт, при этом используются название БД, логин и пароль, указанные в регистрационной анкете. Язык HTML не содержит в себе возможности работы с БД, поэтому для загрузки или вывода данных из PostgreSQL или MySQL Вам необходимо воспользоваться скриптами на языке Perl или PHP
Для администрирования БД (создания, просмотра, удаления таблиц) в случае PostgreSQL используйте утилиту psql, в случае MySQL - mysql.
Для использования этих утилит необходимо зайти на сервер под вашим логином и паролем по протоколу SSH (войти в шелл). В настоящее время сервер IBB поддерживает только протокол версии 2 (SSH2), что связано с обнаруженными недостатками в системе безопасности протокола версии 1 (SSH1).
Существует достаточно много SSH-клиентов, и не все из них поддерживают SSH2. Мы можем рекомендовать SecureCRT и PuTTY.
ТЕПЕРЬ РАССМОТРИМ ПОДРОБНЕЕ ПОРЯДОК РАБОТЫ С КАЖДОЙ ИЗ БАЗ.
PostgreSQL
Администрирование
для запуска утилиты наберите в шелле команду psql
psql -h pgsql.ibb.ru -U <имя_пользователя> -d <имя_базы_данных>
Например:
$ psql -h pgsql.ibb.ru -U peter -d db_peter
Вид консоли после запуска:
| Welcome to psql, the PostgreSQL interactive terminal. |
| Type: |
\copyright for distribution terms |
| \h for help with SQL commands |
| \? for help on internal slash commands |
| \g or terminate with semicolon to execute query |
| \q to quit |
| db_peter=# |
Список некоторых команд:
| \d |
- |
список таблиц в базе данных |
| \? |
- |
команды консоли psql |
| \help |
- |
команды SQL, поддерживаемые postgresql, для более подробной информации о команде и параметрах наберите \help <название_команды> |
| \q |
- |
выход из консоли |
PostgreSQL поддерживает возможность хранить текстовую информацию в различных кодировках и автоматически перекодировать ее в требуемую кодировку клиента.
Поддерживается можество кодировок, в том числе:
| Кодировка |
Обозначение в PostgreSQL |
| KOI8-R |
KOI8 |
| Windows CP1251 |
WIN |
| Windows CP866 |
ALT |
| ASCII |
SQL_ASCII |
|
По умолчанию, информация в БД храниться в кодировке KOI8-R
Для правильного ввода информации, сортировки по алфавиту, операциями с датами, используя SQL-команды, необходимо задавать кодировку клиента:
SET CLIENT_ENCODING TO 'encoding';
Например:
db_peter=> SET CLIENT_ENCODING TO 'KOI8';
посмотреть текущую кодировку клиента:
SHOW CLIENT_ENCODING;
CGI-интерфейс: Perl
В настоящее время для работы с CGI-интерфейсом на серверах IBB используется интерпретатор языка Perl версии 5.005_03. Приведём пример простейшего скрипта для работы с PostgreSQL:
| #!/usr/bin/perl -w |
| # |
| # Подключаем модуль для работы с базой |
| use Pg; |
| $dbname = 'db_peter'; |
# название базы |
| $login = 'peter'; |
# имя пользователя |
| $password = 'peter123'; |
# пароль |
| $host = 'pgsql.ibb.ru'; |
# имя хоста, на котором установлен PostgreSQL |
| # Устанавливаем соединение с базой |
$conn = Pg::connectdb("dbname=$dbname user=$login password=$password"); die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status; |
| # Выбираем данные из таблицы tbl, затем выводим их на экран |
| Pg::doQuery($conn, "select attr1, attr2 from tbl", \@ary); |
| for $i ( 0 .. $#ary ) { |
| for $j ( 0 .. $#{$ary[$i]} ) { |
| print "$ary[$i][$j]\t"; |
| } |
| print "\n"; |
| } |
| ## Завершаем соединение |
| $result = $conn ->reset; |
Для более подробного описания модуля Pg можно воспользоваться командой perldoc из шелла:
$ perldoc Pg
PHP
Приведём пример простейшего скрипта для работы с PosgtreSQL из PHP:
| <?PHP |
| |
// Устанавливаем соединение $conn_id = pg_connect ("dbname=db_peter user=peter password=peter123"); |
| |
// Задаем кодировку клиента $sql_str = "SET CLIENT_ENCODING=WIN"; if (!($res = pg_exec ($conn_id, $sql_str))) { echo "Error sql command"; } |
| |
// Задаем тип представления даты $sql_str = "SET DATESTYLE=EUROPEAN"; if (!($res = pg_exec ($conn_id, $sql_str))) { echo "Error sql command"; } |
| |
// Выбираем данные из таблицы tbl, затем выводим их на экран $result = pg_Exec ($conn, "SELECT * FROM tbl"); if (!$result) { echo "An error occured.\n"; exit; } |
| |
$arr = pg_fetch_array ($result, 0); echo $arr[0] . " <- array\n";
|
| |
$arr = pg_fetch_array ($result, 1); echo $arr["author"] . " <- array\n";
|
| |
// Завершаем соединение pg_close($conn_id); } |
| ?> |
Дополнительную информацию и документацию по работе с базой данных можно получить здесь:
PostgreSQL и PHP http://www.php.net/manual/en/ref.pgsql.php
Документация на PostgreSQL http://www.postgresql.org/idocs/
MySQL
Для администрирования базы используйте утилиту mysql, представляющую собой SQL-консоль. Для этого необходимо зайти по SSH на сервер и в шелле запустить утилиту следующей командой
[user1@host1 user1]$ mysql -h mysql.ibb.ru -u <имя_пользователя> -p <имя_базы_данных>
Например:
[user1@host1 user1]$ mysql -h mysql.ibb.ru -u peter -p db_peter
После успешного соединения вы увидите следующее:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.22.32
Type 'help' for help.
mysql>
Здесь вы можете в интерактивном режиме отправлять на сервер SQL запросы и получать результаты. Все SQL-команды необходимо заканчивать символом ";" или "\g".
Для доступа к базе данных из скриптов (PHP или Perl) необходимо указать имя хоста (host = mysql.ibb.ru), а также имя БД, логин и пароль
PHP
Приведём пример простейшего скрипта для работы с MySQL из PHP:
| <?PHP |
| |
// Создаём соединение с MySQL и делаем "привязку" к выбранной базой |
| |
$conn_id = mysql_connect ("localhost", "peter", "peter123") or die ("Невозможно подключиться к MySQL"); mysql_select_db ("peter_db", $conn_id); |
| |
// Чтение данных из таблицы
$res = mysql_query ("SELECT id, name FROM tbl_cnt", $conn_id);
while ($row = mysql_fetch_array ($res)) {
echo "Id: ".$row["id"]."\n";
echo "Name: ".$row["name"]."\n";
}
mysql_free_result ($res); |
| |
// Закрываем соединение mysql_close ($conn_id); |
| ?> |
Perl
Рассмотрим порядок работы c MySQL из программы на языке Perl.
В качестве "связующего" звена между MySQL и программой используется набор интерфейсов DBI и DBD. Приведем пример скрипта для работы с MySQL из Perl:
| |
#!/usr/bin/perl # # use strict;
# Подключение DBI-модуля use DBI(); |
| |
# Подключение к MySQL # Формат вызова: "DBI:mysql:database=<имя_базы>;host=localhost","<имя_пользователя>", "<пароль>", |
| |
my $dbh = DBI->connect("DBI:mysql:database=db_peter;host=localhost", |
| |
"peter", "peter123", {'RaiseError' => 1}); |
| |
# Демонстрация выполнения DDL-команды: удаление таблицы
# Если такой таблицы в базе не было, будет напечатано сообщение об ошибке
eval { $dbh->do("DROP TABLE tbl_cnt") };
print "Ошибка при удалении таблицы: $@\n" if $@; |
| |
# Создание таблицы $dbh->do("CREATE TABLE tbl_cnt (id INTEGER, name VARCHAR(20))"); |
| |
# Вставка данных в таблицу $dbh->do("INSERT INTO tbl_cnt VALUES (1, " . $dbh->quote("Tim") . ")"); |
| |
# Выполнение DML-команды: вставка данных в таблицу, с испоьзованием шаблонов $dbh->do("INSERT INTO tbl_cnt VALUES (?, ?)", undef, 2, "Jochen"); |
| |
# Чтение данных из таблицы my $sth = $dbh->prepare("SELECT * FROM tbl_cnt"); $sth->execute(); |
| |
while (my $ref = $sth->fetchrow_hashref()) { print "Данные из таблицы: id = $ref->{'id'}, name = $ref->{'name'}\n"; } $sth->finish(); |
| |
# Закрытие соединения с MySQL $dbh->disconnect(); |
Дополнительную информацию и документацию по работе с базой данных можно получить здесь:
Документация на PHP, доступ к MySQL http://www.php.net/manual/en/ref.mysql.php
Документация на MySQL http://www.mysql.com/documentation/mysql/bychapter/
|
|