0
RDBMS Design06/12/2011
Softjourn Inc.RDBMS Design  Anatoliy Okhotnikov  Softjourn Inc.
Про що буде йти мова●   Типи баз даних●   Реляційні бази даних (OLTP)●   Обробка транзакцій (ACID)●   Database-centric арх...
Про що не буде йти мова●   Нереляційні бази даних●   OLAP/структури підтримки прийняття рішень●   Інтенсивна теорія●   Інт...
Типи баз даних•    Активна – event-driven, безпека статистика•    Хмара – доступ через веб-браузер або API•    Сховище – а...
Реляційні бази даних• “A Relational Model of Data for  Large Shared Data Banks”, стаття  яку написав Edgar Frank "Ted"  Co...
Реляційні: початокCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Реляційні: сьогоденняCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Обробка транзакцій (ACID)Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Обробка транзакцій (ACID)• Атомарність – результати транзакції або  повністю виконані, або повінстю відмінені.• Узгодженіс...
Database-centric архітектура Database- або data-centric архітектура, це архітектура ПЗ у якій база даних грає суттєву(цент...
Database vs Application centricCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Моделювання даних     При моделюванні ви визначаєте наступне•    Які елементи даних зберігати•    Яким великим може бути к...
Моделювання даних• Використовуйте  візуальні  інструменти• Робіть реверс-  інженіринг  існуючої бази• Перевіряйте та  буду...
Узгодження іменування• Joshua, Jana, John-David, Jill,  Jessa, Jinger, Josiah, Joy-  Anna, Jedidiah, Jeremiah,  Jason, Jam...
Узгодження іменування — як?• Оберіть одне і строго слідуйте йому:  camelCase, PascalCase, under_scores і т.д.• Чому?    • ...
Нормалізація Ключ, Повний ключ, і нічого крім ключа. Допоможи мені Кодде.Copyright © 2000-2011 Softjourn, Inc. All rights ...
Нормалізація та денормалізація• Процес зміни дизайну бази даних  для створення схеми таблиць у  нормалній формі.• Нормальн...
Не нормалізований набірCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Нормалізований набірCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Навіщо нормалізувати?• Запобігаємо дублюванню даних• Дозволяємо користувачам робити  власні зміни• Запобігаємо аномальност...
Індексування Знайдіть книжку Ван Пельта без      каталогу. Будьласка.Copyright © 2000-2011 Softjourn, Inc. All rights rese...
Типи індексів• Unique – гарантує що ключ індексування є  не містить дубльованих даних• Full-text – використовується для  і...
Індексування: основні ключі         Основний ключ (primary key)                    ==             унікальний індексCopyrig...
Зауваження індексування: таблиці Цілочислений основний ключ у кожній таблиціSELECT s.term, s.section_id, COUNT(penn_id)FRO...
Зауваження індексування: таблиці• Чому цілочисельні ключі?    • Вузькі індекси = більше індексних рядків на      сторінку ...
Зауваження індексування: стовбціCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Зауваження індексування: стовбці• Зєднання стовбців: індексовані  цілочисельні значення – ти друг!• Як стовбці використову...
Найкращі практики: типи даних• Беріть до уваги  довжину стовбчика• Знайте необхідний  рівень точності• Залиште собі прості...
Найкращі практики: видалення• Логічне проти фізичного Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: навантажуйте базу• Коли це має сенс – дозвольте  базі працювати за вас• Зовнішні ключі• Унікальні індек...
Найкращі практики: master tables• Вони усюди:    • Звіти    • Інтерфейси    • Пошуки    • і т.д.• Засіб для одночасного вп...
Найкращі практики: час жувати!• “Тимчасові”  проекти• Балансуйте між  сьогоднішнім  прагматизмом та  завтрашнім болем• Роб...
Найкращі практики: експериментуйте• Експерементуйте  з вашою базою та  запитами для  покращення часу  та планів  виконання...
Найкращі практики: будьте впевнені!• Клопочіться про фідбек по дизайну бази,  радше ніж по кодінг стандарту• Питайте думку...
ГуморCopyright © 2000-2011 Softjourn, Inc. All rights reserved
Посилання• http://en.wikipedia.org/wiki/Database• http://db.cs.berkeley.edu/papers/fntdb07-  architecture.pdf• http://phil...
Питання та обговорення “Анатолій Охотніков” <aokhotnikov@softjourn.com>Copyright © 2000-2011 Softjourn, Inc. All rights re...
Upcoming SlideShare
Loading in...5
×

Db design (ukr)

244

Published on

Типи баз даних
● Реляційні бази даних (OLTP)
● Обробка транзакцій (ACID)
● Database-centric архітектура
● Моделювання даних. Узгодження іменування
● Нормалізація та денормалізація
● Індексування. Найкращі практики

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
244
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Db design (ukr)"

  1. 1. RDBMS Design06/12/2011
  2. 2. Softjourn Inc.RDBMS Design Anatoliy Okhotnikov Softjourn Inc.
  3. 3. Про що буде йти мова● Типи баз даних● Реляційні бази даних (OLTP)● Обробка транзакцій (ACID)● Database-centric архітектура● Моделювання даних. Узгодження іменування● Нормалізація та денормалізація● Індексування. Найкращі практики● Посилання. Питання та обговорення
  4. 4. Про що не буде йти мова● Нереляційні бази даних● OLAP/структури підтримки прийняття рішень● Інтенсивна теорія● Інтенсивна практика
  5. 5. Типи баз даних• Активна – event-driven, безпека статистика• Хмара – доступ через веб-браузер або API• Сховище – архів операційних, зовнішні дані• Розподілена – модульна, багато як одна• Документ-орієнтована – управління док-ами• Вбудована – інтегрована у програму• Федеративна(гетерогенна) – різні разом• Граф – варіант NoSQL із структурами графу• У-памяті – дуже швидка, знаходиться у памяті• Знань – для управління знаннями, по темам• Паралельна – покращення через паралелізацію Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  6. 6. Реляційні бази даних• “A Relational Model of Data for Large Shared Data Banks”, стаття яку написав Edgar Frank "Ted" Codd працюючи дослідницький лабораторії IBM у San Jose.• Обпублікована у “Communications of the ACM” у червні 1970 року• Дослідницький проект Університету Каліфорнії у Берклі – Berkley Ingress (1973) Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  7. 7. Реляційні: початокCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  8. 8. Реляційні: сьогоденняCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  9. 9. Обробка транзакцій (ACID)Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  10. 10. Обробка транзакцій (ACID)• Атомарність – результати транзакції або повністю виконані, або повінстю відмінені.• Узгодженість(цілісність) – перетворення з одного вірного стану у інший вірний стан. Транзакція вірна якщо вона не порушує обмеження цілісності.• Ізоляція – результати не видимі поки транзакція не завершена.• Довговічність(надійність) – після завершення результати збережені у постійне сховище і переживають наступні збої системи та носія. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  11. 11. Database-centric архітектура Database- або data-centric архітектура, це архітектура ПЗ у якій база даних грає суттєву(центральну) роль. • Стандартна RDMBS (RAD) • Динамічна, table-driven логіка • Використання stored procedures • Shared DB як засіб IPCCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  12. 12. Database vs Application centricCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  13. 13. Моделювання даних При моделюванні ви визначаєте наступне• Які елементи даних зберігати• Яким великим може бути кожен елемент• Яку інформацію може містити елемент• Які елементи можна залишити пустими• Які елементи обмежені певними рамками• Чи і як повязані різні таблиці між собою Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  14. 14. Моделювання даних• Використовуйте візуальні інструменти• Робіть реверс- інженіринг існуючої бази• Перевіряйте та будуйте звязки• Працюйте спільно Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  15. 15. Узгодження іменування• Joshua, Jana, John-David, Jill, Jessa, Jinger, Josiah, Joy- Anna, Jedidiah, Jeremiah, Jason, James, Justin, Jackson, Johannah, Jennifer• Сімя Duggar використовує узгодження іменування• Погана ідея для сімї• Гарна ідея для бази даних• Немає певних правил, просто слідуйте власній угоді, яка вам зручна Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  16. 16. Узгодження іменування — як?• Оберіть одне і строго слідуйте йому: camelCase, PascalCase, under_scores і т.д.• Чому? • Чистіший код • Логічні зєднання • Психічне здоровя вас та майбутніх розробників• Явно називайте обмеження (constraints)• Не використувуйте ключові слова як імена стовбців Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  17. 17. Нормалізація Ключ, Повний ключ, і нічого крім ключа. Допоможи мені Кодде.Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  18. 18. Нормалізація та денормалізація• Процес зміни дизайну бази даних для створення схеми таблиць у нормалній формі.• Нормальні форми: 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, 6NF для OLTP (онлайн обробки транзакцій) швидкі із сталим станом• NF2 або N1NF для OLAP(онлайн обробка аналітики) часто вимагає денормалізації для прискорення Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  19. 19. Не нормалізований набірCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  20. 20. Нормалізований набірCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  21. 21. Навіщо нормалізувати?• Запобігаємо дублюванню даних• Дозволяємо користувачам робити власні зміни• Запобігаємо аномальності даних• Інструменти третіх сторін очікують нормалізовані дані• Іноді треба де-нормалізовувати, але уникайте ранньої оптимізації Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  22. 22. Індексування Знайдіть книжку Ван Пельта без каталогу. Будьласка.Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  23. 23. Типи індексів• Unique – гарантує що ключ індексування є не містить дубльованих даних• Full-text – використовується для індексування великої кількості тексту• Included columns – дозволяє додати неключові стовбчики• Indexed views – зберігає у базі, використовує оптимізатор• XML – властивості, атрибути та елементи• Filtered – фільт по існуючому індексу• Spatial – геометричний або географічний• Інші... Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  24. 24. Індексування: основні ключі Основний ключ (primary key) == унікальний індексCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  25. 25. Зауваження індексування: таблиці Цілочислений основний ключ у кожній таблиціSELECT s.term, s.section_id, COUNT(penn_id)FROM flat_section s JOIN flat_enrollment eON s.section_id = e.section_id AND s.term =e.term GROUP BY s.term, s.section_idCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  26. 26. Зауваження індексування: таблиці• Чому цілочисельні ключі? • Вузькі індекси = більше індексних рядків на сторінку = меньше сторінок = меньше читань • Вузькі чисельні індекси = більш ефективні joinи • Можуть допомогти у відновленні після спотворення даних • Сурогатні (не з даних програми) ключі більш стійкі до майбутнього ніж натуральні ключі – Дозволяють зміну асоційованих полів – Не чутливі до зовнішніх змін даних – Більш гнучкі для майбутніх змін (архів) Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  27. 27. Зауваження індексування: стовбціCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  28. 28. Зауваження індексування: стовбці• Зєднання стовбців: індексовані цілочисельні значення – ти друг!• Як стовбці використовуються у запитах?• Відношення: 1-до-1, 1-до-багатьох, багато-до-багатьох• Тип даних• Індексування багатьох стовбців: в міру• Ціль №1: швидкодія!• Ціль №2: якнайменьший індексний файл Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  29. 29. Найкращі практики: типи даних• Беріть до уваги довжину стовбчика• Знайте необхідний рівень точності• Залиште собі простір для росту• Відповідність до дня, хвилини, мілісекунди? Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  30. 30. Найкращі практики: видалення• Логічне проти фізичного Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  31. 31. Найкращі практики: навантажуйте базу• Коли це має сенс – дозвольте базі працювати за вас• Зовнішні ключі• Унікальні індекси• Перевірочні обмеження• Обмеження за замовчуванням• Трігери Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  32. 32. Найкращі практики: master tables• Вони усюди: • Звіти • Інтерфейси • Пошуки • і т.д.• Засіб для одночасного впровадження нормалізації та індексування• Компоненти надійної мастер таблиці: • Сурогатні ключі • Внутрішній код/назва (не міняється) • Опис для публічного перегляду (міняється) • Дата створення та оновлення Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  33. 33. Найкращі практики: час жувати!• “Тимчасові” проекти• Балансуйте між сьогоднішнім прагматизмом та завтрашнім болем• Робіть code review швидшеCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  34. 34. Найкращі практики: експериментуйте• Експерементуйте з вашою базою та запитами для покращення часу та планів виконанняCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  35. 35. Найкращі практики: будьте впевнені!• Клопочіться про фідбек по дизайну бази, радше ніж по кодінг стандарту• Питайте думку інших та діліться власними думками!• Більше очей = кращий дизайн бази даних• Більше ідей = кращий дизайн бази даних Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  36. 36. ГуморCopyright © 2000-2011 Softjourn, Inc. All rights reserved
  37. 37. Посилання• http://en.wikipedia.org/wiki/Database• http://db.cs.berkeley.edu/papers/fntdb07- architecture.pdf• http://philip.greenspun.com/sql/index.html• http://www.swegler.com/becky/blog/wp- content/uploads/2009/10/wcit-techtalk-database- design.pdf• http://en.wikipedia.org/wiki/Database- centric_architecture• http://michaeljswart.com/2011/01/ridiculously- unnormalized-database-schemas-part-one/••Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  38. 38. Питання та обговорення “Анатолій Охотніков” <aokhotnikov@softjourn.com>Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×