Новости
- Типи OLAP. Переваги і недоліки Вибір способу зберігання даних залежить від обсягу і структури детальних...
- ROLAP (Relational OLAP)
- HOLAP (Hybrid OLAP)
- Моделювання багатовимірних кубів на реляційної моделі даних
- Схема сніжинка. Переваги і недоліки
- Практичні заняття
- Підготовка SQL скриптів генерації схеми відносин БД в ERwin. Розробка скрипта для введення тестової...
- Архітектура MS SQL Server 2005. Налагодження та використання основних компонент середовища. Створення...
- Робота з СУБД MS SQL Server 2005, ORACLE 10g. Приклади з'єднань з БД, технології розробки кліенского додатки
- Робота з базами даних з J2EE Web-контейнера
- Об'єктно-реляційне відображення для роботи з базами даних
- Використання препроцесора для роботи з API СУБД
Типи OLAP. Переваги і недоліки
Вибір способу зберігання даних залежить від обсягу і структури детальних даних, вимог до швидкості виконання запитів і частоти оновлення OLAP -куб. В даний час застосовуються три способи зберігання даних:
MOLAP (Multidimensional OLAP)
Детальні і агреговані дані зберігаються в багатовимірної базі даних. Зберігання даних в багатовимірних структурах дозволяє маніпулювати даними як багатовимірним масивом, завдяки чому швидкість обчислення агрегатних значень однакова для будь-якого з вимірів. Однак в цьому випадку багатовимірна база даних виявляється надлишкової, так як багатовимірні дані повністю містять детальні реляційні дані.
Переваги MOLAP.
- Висока продуктивність . Пошук і вибірка даних здійснюється значно швидше, ніж при багатовимірному концептуальному погляді на реляційну базу даних.
- Структура і інтерфейси найкращим чином відповідають структурі аналітичних запитів.
- Багатовимірні СУБД легко справляються з завданнями включення в інформаційну модель різноманітних вбудованих функцій.
Недоліки MOLAP.
- MOLAP можуть працювати тільки зі своїми власними багатовимірними БД і ґрунтуються на патентованих технологіях для багатовимірних СУБД, тому є найбільш дорогими. Ці системи забезпечують повний цикл OLAP -оброблення та або включають в себе, крім серверного компонента, власний інтегрований клієнтський інтерфейс, або використовують для зв'язку з користувачем зовнішні програми роботи з електронними таблицями.
- У порівнянні з реляційними, дуже неефективно використовують зовнішню пам'ять, мають гірші в порівнянні з реляційними БД механізмами транзакцій.
- Відсутні єдині стандарти на інтерфейс, мови опису і маніпулювання даними.
- Не підтримують реплікацію даних, часто використовується в якості механізму завантаження.
ROLAP (Relational OLAP)
ROLAP-системи дозволяють представляти дані, що зберігаються в класичній реляційній базі, в багатовимірної формі або в плоских локальних таблицях на файл-сервері, забезпечуючи перетворення інформації в багатовимірну модель через проміжний шар метаданих. Агрегати зберігаються в тій же БД в спеціально створених службових таблицях. В цьому випадку гиперкуб емулюється СУБД на логічному рівні.
Переваги ROLAP.
- Реляційні СУБД мають реальний досвід роботи з дуже великими БД і розвинені засоби адміністрування. При використанні ROLAP розмір сховища не є таким критичним параметром, як у випадку MOLAP.
- При оперативної аналітичної обробки вмісту сховища даних інструменти ROLAP дозволяють проводити аналіз безпосередньо над сховищем (бо в переважній більшості випадків корпоративні сховища даних реалізуються засобами реляційних СУБД).
- У разі змінної розмірності задачі, коли зміни в структуру вимірювань доводиться вносити досить часто, ROLAP системи з динамічним поданням розмірності є оптимальним рішенням, так як в них такі модифікації не вимагають фізичної реорганізації БД, як у випадку MOLAP.
- Системи ROLAP можуть функціонувати на набагато менш потужних клієнтських станціях, ніж системи MOLAP, оскільки основна обчислювальна навантаження в них лягає на сервер, де виконуються складні аналітичні SQL-запити, що формуються системою.
- Реляційні СУБД забезпечують значно вищий рівень захисту даних і хороші можливості розмежування прав доступу.
Недоліки ROLAP.
- Обмежені можливості з точки зору розрахунку значень функціонального типу.
- Менша продуктивність, ніж у MOLAP. Для забезпечення порівнянної з MOLAP продуктивності реляційні системи вимагають ретельного опрацювання схеми БД та спеціальної настройки індексів. Але в результаті цих операцій продуктивність добре налаштованих реляційних систем при використанні схеми "зірка" можна порівняти з продуктивністю систем на основі багатовимірних БД.
HOLAP (Hybrid OLAP)
Детальні дані залишаються в тій же реляційної базі даних, де вони спочатку знаходилися, а агрегатні дані зберігаються в багатовимірної базі даних.
Моделювання багатовимірних кубів на реляційної моделі даних
Схема зірка. Переваги і недоліки
Схема типу зірки (Star Schema) - схема реляційної бази даних, яка служить для підтримки багатовимірного уявлення містяться в ній даних.
* Особливості ROLAP -схеми типу "зірка" *
- Одна таблиця фактів (fact table), яка сильно денормалізована. Є центральною в схемі, може складатися з мільйонів рядків і містить підсумовувані або фактичні дані, з допомогою яких можна відповісти на різні питання.
- Кілька денормалізованних таблиць вимірів (dimensional table). Мають меншу кількість рядків, ніж таблиці фактів, і містять описову інформацію. Ці таблиці дозволяють користувачеві швидко переходити від таблиці фактів до додаткової інформації.
- Таблиця фактів і таблиці розмірності пов'язані ідентифікують зв'язками, при цьому первинні ключі таблиці розмірності мігрують в таблицю фактів як зовнішніх ключів. Первинний ключ таблиці факту цілком складається з первинних ключів всіх таблиць розмірності.
- Агреговані дані зберігаються спільно з вихідними.
переваги
Завдяки денормалізації таблиць вимірів спрощується сприйняття структури даних користувачем і формулювання запитів, зменшується кількість операцій з'єднання таблиць при обробці запитів. Деякі промислові СУБД і інструменти класу OLAP / Reporting вміють використовувати переваги схеми "зірка" для скорочення часу виконання запитів.
недоліки
Денормализация таблиць вимірів вносить надмірність даних, зростає необхідний для їх зберігання обсяг пам'яті. Якщо агрегати зберігаються спільно з вихідними даними, то в вимірах необхідно використовувати додатковий параметр - рівень ієрархії.
Схема сніжинка. Переваги і недоліки
Схема типу сніжинки (Snowflake Schema) - схема реляційної бази даних, яка служить для підтримки багатовимірного уявлення містяться в ній даних, є різновидом схеми типу "зірка" (Star Schema).
* Особливості ROLAP -схеми типу "сніжинка" *
- Одна таблиця фактів (fact table), яка сильно денормалізована. Є центральною в схемі, може складатися з мільйонів рядків і містити підсумовувані або фактичні дані, з допомогою яких можна відповісти на різні питання.
- Кілька таблиць вимірів (dimensional table), які нормалізовані на відміну від схеми "зірка". Мають меншу кількість рядків, ніж таблиці фактів, і містять описову інформацію. Ці таблиці дозволяють користувачеві швидко переходити від таблиці фактів до додаткової інформації. Первинні ключі в них складаються з єдиного атрибута (відповідають єдиному елементу вимірювання).
- Таблиця фактів і таблиці розмірності пов'язані ідентифікують зв'язками, при цьому первинні ключі таблиці розмірності мігрують в таблицю фактів як зовнішніх ключів. Первинний ключ таблиці факту цілком складається з первинних ключів всіх таблиць розмірності.
- У схемі "сніжинка" агреговані дані можуть зберігатися окремо від вихідних.
переваги
Нормалізація таблиць вимірів на відміну від схеми "зірка" дозволяє мінімізувати надмірність даних і більш ефективно виконувати запити, пов'язані зі структурою значень вимірів.
недоліки
За нормалізацію таблиць вимірів іноді доводиться платити часом виконання запитів.
Практичні заняття
Постановка задачі. Проектування даних на концептуальному і логічному рівнях. Нормалізація відносин.
Презентація по ER-моделювання
ER нотації
Приклад моделі в ERwin
Підготовка SQL скриптів генерації схеми відносин БД в ERwin. Розробка скрипта для введення тестової інформації.
Відео-презентація (Для програвання потрібно Windows Media Player)
Архітектура MS SQL Server 2005. Налагодження та використання основних компонент середовища. Створення навчальної бази даних.
Відео-презентація (Для програвання потрібно Windows Media Player)
Робота з СУБД MS SQL Server 2005, ORACLE 10g. Приклади з'єднань з БД, технології розробки кліенского додатки
Використання технології Java Database Connectivity (JDBC) для роботи з базами даних
презентація
Приклади до презентації
SQL-скрипти, проект і вихідні коди
package org.mai806.jdbcsample; import java.sql. *; public class QuerySample {public static void main (String [] args) throws Exception {/ * ======== Підключення до MS SQL Server ===== * / // Завантаження драйвера Class.forName ( "com. microsoft.sqlserver.jdbc.SQLServerDriver "); // З'єднання з базою даних Connection connection = DriverManager.getConnection ( "jdbc: sqlserver: // localhost: тисячі чотиреста тридцять три; databaseName = o01;", // localhost - сервер СУБД, o01 - ім'я бази даних "sa", "123") ; // користувач, пароль / * ======== Підключення до Oracle ============ // Завантаження драйвера Class.forName ( "oracle.jdbc.OracleDriver"); // З'єднання з базою даних Connection connection = DriverManager.getConnection ( "jdbc: oracle: thin: @localhost: тисячі п'ятсот двадцять одна: orcl", // localhost - сервер СУБД, orcl - SID бази оракла "o01", "o01"); // користувач, пароль // Створення Statement PreparedStatement stmt = connection.prepareStatement ( "select ID, NAME from PERSON where NAME like?"); stmt.setString (1, "% S%"); // Виконання запиту ResultSet rs = stmt.executeQuery (); // Перебір результату виконання запиту while (rs.next ()) {// Приклад вибору параметра за номером або по імені System.out.println ( "ID:" + rs.getLong (1) + "; NAME =" + rs .getString ( "NAME")); } // закриття використаних ресурсів БД rs.close (); stmt.close (); connection.close (); }} Лістинг P.1. Виконання запиту: QuerySample.java package org.mai806.jdbcsample; import java.sql. *; import java.util.ResourceBundle; public class StoredProcedureSample {private static Connection connection = null; public static void main (String [] args) throws Exception {// Отримання сполуки з значень параметрів у файлі properties ResourceBundle properties = ResourceBundle.getBundle ( "database"); Class.forName (properties.getString ( "driver")); connection = DriverManager.getConnection (properties.getString ( "url"), properties.getString ( "user"), properties.getString ( "password")); transferAmount (1,2,100.0); connection.close (); } / ** * Перекладає зазначену суму з одного рахунку на інший * @param from рахунок платника * @param to рахунок одержувача * @param amount сума * / public static void transferAmount (long from, long to, double amount) throws Exception {/ / Створення Statement CallableStatement stmt = connection.prepareCall ( "{call TransferAmount (?,?,?)}"); // Установка параметрів stmt.setLong (1, from); stmt.setLong (2, to); stmt.setDouble (3, amount); // Виконання процедури stmt.execute (); }} Лістинг P.2. Виконання процедури, що: StoredProcedureSample.java package org.mai806.jdbcsample; import java.sql. *; import java.util.ResourceBundle; public class TransactionalSample {private static Connection connection = null; public static void main (String [] args) throws Exception {// Отримання сполуки з значень параметрів у файлі properties ResourceBundle properties = ResourceBundle.getBundle ( "database"); Class.forName (properties.getString ( "driver")); connection = DriverManager.getConnection (properties.getString ( "url"), properties.getString ( "user"), properties.getString ( "password")); // Ручне управління транзакціями connection.setAutoCommit (false); try {transferAmount (2, 1, 10.0); } Finally {connection.close (); }} / ** * Перекладає зазначену суму з одного рахунку на інший * @param from рахунок платника * @param to рахунок одержувача * @param amount сума * / public static void transferAmount (long from, long to, double amount) throws Exception { PreparedStatement stmt = null; Statement query = null; try {stmt = connection.prepareStatement ( "update ACCOUNT set AMOUNT = AMOUNT +? where ID =?"); // Забираємо суму з рахунку платника stmt.setDouble (1, -amount); stmt.setLong (2, from); stmt.execute (); // Додаємо суму на рахунок одержувача stmt.setDouble (1, amount); stmt.setLong (2, to); stmt.execute (); // Пост-перевірка: негативність рахунку платника query = connection.createStatement (); ResultSet rs = query.executeQuery ( "select AMOUNT from ACCOUNT where ID =" + from + "and AMOUNT <0"); if (rs.next ()) {throw new Exception ( "На рахунку №" + from + "недосточності засобів [" + (amount + rs.getDouble (1)) + "] для зняття суми [" + amount + "]") ; } Connection.commit (); System.out.println ( "Перерахування коштів успішно виконано"); } Catch (Exception e) {e.printStackTrace (); connection.rollback (); } Finally {if (stmt! = Null) stmt.close (); if (query! = null) query.close (); }}} Лістинг P.3. Робота з транзакціями: TransactionalSample.java
Робота з базами даних з J2EE Web-контейнера
презентація
Об'єктно-реляційне відображення для роботи з базами даних
презентація
Використання препроцесора для роботи з API СУБД
презентація
Select ID, NAME from PERSON where NAME like?Update ACCOUNT set AMOUNT = AMOUNT +?
Where ID =?