Для группирования строк таблицы служат тэги <THEAD>, <TBODY>, <TFOOT>.
<THEAD> - нужен для создания группы заголовков для столбцов таблицы. Этот дескриптор допускается использовать в пределах таблицы только одни раз.
<TBODY> - применяется для создания одной или нескольких групп строк таблицы, содержащих основные данные.
<TFOOT> - позволяет создать группу строк для представления информации о суммах или итогах, располагаемую в нижней части таблицы. Этот дескриптор допускается использовать в пределах таблицы только одни раз. Вовсе не обязательно создавать группы строк таблицы всех трех типов.
Пора заняться установкой MySQL-сервера, поскольку много чего будем хранить именно в этой базе данных.
Список необходимых опций сборки добавим в /etc/make.conf:
# Путь к коллекции портов PORTSDIR?= /usr/ports # Версия MySQL сервера DEFAULT_MYSQL_VER=50
# Oпции для сборки клиента .if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
# Кодировка клиента по умолчанию. WITH_CHARSET=cp1251
# Коллэйшн или сравнение. WITH_COLLATION=cp1251_bin
# В общем, если эта опция действительно хоть что-то # оптимизирует, то странно что она по дефолту не включена, # а предлагается опционально. BUILD_OPTIMIZED=yes
.endif
# Oпции для сборки сервера .if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
# Кодировка сервера по умолчанию. WITH_CHARSET=cp1251
# Какие кодировки компилить еще. WITH_XCHARSET=all
# Кодировка коллэйшн. WITH_COLLATION=cp1251_bin
# Вкомпилить ли SSL. Есть смысл, если к MySQL-серверу # разрешены коннекты откуда либо, кроме как с локалхоста. WITHOUT_OPENSSL=yes
# Если следующую опцию поставить в yes, то MySQL будет работать # в несколько потоков (только для i386) #WITH_LINUXTHREADS=yes # У меня amd64, соответственно: WITHOUT_LINUXTHREADS=yes
# Тоже че-то связано с многопоточностью сервера. # Чего не знаем - нетрогаем. #WITH_PROC_SCOPE_PTH=yes
# Как и с клиентом, типа "оптимизируемся". BUILD_OPTIMIZED=yes # Сборка статического варианта mysql демона. Я так понимаю, что # статический демон не станет подгружать дополнительные # библиотеки, потому что уже будет собран с ними же. Но где # тогда здесь выигрыш в производительности? Хоть в случае с # динамической версией - будут тратиться определенные ресурсы # на подгрузку библиотек; хоть в случае со статиком - он будет # эти библиотеки постоянно удерживать в памяти... # Эту опцию нельзя применять если у Вас WITH_OPENSSL=yes BUILD_STATIC=yes # Поддержка INNODB таблиц. Кому не надо, можете отключить. WITH_INNODB=yes
# Следущая опция - это для тех, кто использует кластера MySQL. WITHOUT_NDB=yes
.endif
Приступаем непосредственно к инсталляции серверной части (клиентскую часть подтянет автоматически).
# cd /usr/ports/databases/mysql50-server# make install clean# rehash
Добавляем в /etc/rc.conf строку о необходимости запуска MySQL-сервера:
Меняем пароль для пользователя root в MySQL (хотя, обычно, завожу пользователя с полными привилегиями, а запись пользователя root удаляю полностью):
# mysqladmin -u root passwordnew_passwd_here
Теперь следует отредактировать конфигурационный файл mysql, который называется my.cnf. Положить его можно в любую из этих папок: /var/db/mysql/, /etc/, /usr/local/etc/. MySQL при запуске проверит его наличие во всех этих каталогах. Если конфигурациооный файл отсутствует – можно скопировать доступный пример и при необходимости отредактировать его (доступны примеры для нагруженного сервера, для сервера со средней нагрузкой и для ненагруженного сервера)
Также, для удобства, можете изменить параметры логгирования. Для этого в секцию [mysqld] файла /var/db/mysql/my.cnf добавляем строку log=/var/log/mysql.log
Перегружаем MySQL для того, чтобы новые настройки вступили в силу:
# sh /usr/local/etc/rc.d/mysql-server restart
Кстати... Если уж возьметесь писать логи MySQL - ОБЯЗАТЕЛЬНО настройте ротацию логов, а не то лог-файл очень скоро разрастется до неимоверных размеров (вплоть до того, что не останется свободного места на разделе. Например, будем архивировать лог раз в неделю. Для этого в /etc/newsyslog.conf необходимо добавить следующую строку:
Обратите внимание: pid-файл будет уникальный (зависит от от имени сервера).
Дальше создадим пользователя, с правами суперпользователя в БД MySQL:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'user_pass' WITH GRANT OPTION;
Теперь еще осталось удалить остальных пользователей, которых mysql создает по-умолчанию.
# mysql -uusername-p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.0.84-log FreeBSD port: mysql-server-5.0.84
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> USE mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed mysql> DELETE FROM user WHERE NOT user='username';Query OK, 4 rows affected (0.00 sec)
mysql> quit
17 склады данных и система оперативно-аналитической обработки данных
Современный уровень развития аппаратных и программных средств с некоторых пор сделал возможным повсеместное ведение баз данных оперативной информации на разных уровнях управления. В процессе своей деятельности промышленные предприятия, корпорации, ведомственные структуры, органы государственной власти и управления накопили большие объемы данных. Они хранят в себе большие потенциальные возможности по извлечению полезной аналитической информации, на основе которой можно выявлять скрытые тенденции, строить стратегию развития, находить новые решения.
В последние годы в мире оформился ряд новых концепций хранения и анализа корпоративных данных:
1) Хранилища данных, или Склады данных (Data Warehouse) [15, 5];
3) Интеллектуальный анализ данных - ИАД (Data Mining) [17, 19, 23, 3].
Технологии OLAP тесно связаны с технологиями построения Data Warehouse и методами интеллектуальной обработки - Data Mining. Поэтому наилучшим вариантом является комплексный подход к их внедрению.