SlideShare a Scribd company logo
МОДЕЛИРОВАНИЕ ДЛЯ NOSQL БД
Кросс-платформенные инструменты для работы с БД
Андрей Совцов
Embarcadero,Москва
email: Andrew.sovtsov@embarcadero.com
Embarcadero Technologies
• Основана в 1993
• 3.2 M пользователей - 97% из списка Fortune 2000
• 35+ Наград продуктов за постоянные инновации
Темы
1. NoSQL и Реляционные БД
2. NoSQL БД проектируется не так, как
реляционная. Особенности
3. Инструменты для проектирования и
моделирования
4. Моделирование – полезно!
5. Разные схемы драматически влияют на
производительность
Что требуется от хранилища данных?
• Удобная для решения моих задач структура
данных
• Скорость и возможность масштабирования
(верт. и гор. )
• Богатые и удобные средства доступа и
разработки приложений
Что означает «масштабирование»?
• Перенос обработки как можно ближе к
данным
• Массивно-параллельная обработка
• Использование более дешевого,
стандартного оборудования, но в больших
количествах
• Оптимизация для:
запросов / чтения / вопросов / аналитики
NoSQL – не только SQL
- это?..
• Самая популярная NoSQL СУБД (на 4 месте в
общем списке)
• Тип NoSQL: Документ-ориентированная СУБД
• Документы представляются как Name/Value
пары в формате BSON
• Binary представление JSON (с минимальными отличиями)
• Встроенные документы и массивы снижают
потребность в операциях join
• Гибкие схемы – для хранения
неструктурированных и комплексных данных
• Легко масштабируется
• Простая установка, open source, free
User
• Name
• Email
Address
Article
• Name
• Slug
• Publish date
• Text
• Author
Tag[]
• Value
Comment[]
• Comment
• Date
• Author
Category[]
• Value
В базе данных MongoDB хранятся
документы
MongoDB
Горизонтальная масштабируемость
{ author : “steve”,
date : new Date(),
text : “About MongoDB...”,
tags : [“tech”, “database”]}
Хранит
документы
Приложение
Высокая
производительность
Целостные
данные
Богатые возможности
• Богатый язык запросов (полный CRUD)
• GeoSpatial – географические запросы
• Текстовый поиск
• Гибкие схемы
• Aggregation и MapReduce
• GridFS (distributed & replicated file storage для больших
объектов)
• Интеграция с Hadoop, Storm, Solr и т.п.
Автоматическая репликация
данных
Горизонтальное масштабирование
Schema для записи/ Schema на чтение
Schema для записи(RDBMS)
Директивное моделирование данных:
• Создать схему БД
• Загрузить данные в формате RDBMS
• Запросы к данным в формате RDBMS
Новые колонки должны быть добавлены ДО
ТОГО, как новые данные будут помещены в
систему.
Хорошо для Known Unknowns
(повторяемости)
Schema на чтение(Hadoop/NoSQL)
Описательное моделирование данных:
• Собрать данные в натуральном формате
• Создать схему
• Запросы к данным в натуральном
формате
Новые данные могут появляться в любое
время и появляться задним числом если
схема правильно описывает их
Хорошо для Unknown Unknowns
(исследования)
Терминология MongoDB
RDBMS MongoDB
Catalog / Database Database
Table Collection
Record JSON document
SQL CRUD = Insert, Find, Update,
Delete, и т.п. Аргументы в
формате JSON.
SELECT (joins,
nested SELECT’s,
etc)
Single collection Find (no
joins)
Transaction / ACID Single document / ACID
Foreign key --
Устройство MongoDB. Documents. Чтение.
db.Restaurants.Find({})
db.Restaurants.Find({“address.street:”: “2 Avenue”})
• Гибкий язык запросов в формате JSON-document, включающий
разделы:
– Projection – список выдаваемых полей (как список SELECT)
– Match – критерии отбора (аналог WHERE)
– Sort – критерии сортировки (аналог ORDER BY)
• Операции join отсутствуют
• Возвращает cursor с отобранными JSON-документами
Хранение медицинских данных (историй больных)
• Hospitals
– Работают доктора
• Doktors
– Лечат пациентов
– Выполняют процедуры
– Работают в больнице
• Patients
– Лечатся у доктора
– Принимают процедуры
• Procedures
– Назначаются пациентам
– Выполняются доктором
– Записываются в журнал
– Различные метрики
• Records
– Относятся к процедурам
– Сложные данные
– Переменное число полей
Реляционное решение
Реляционная модель данных
• Запросы по любому полю
• Замена по месту
• Универсальная для всех запросов и операций
• Табличное, «плоское» хранение
• Сложные нормализованные, «жесткие» схемы
• Каждое поле содержит единственное значение
строго определенного типа
• Нормализация приводит к необходимости
операций JOIN «мелких» таблиц
• Поддержка межтабличных транзакций на
уровне СУБД
Rich Documents : сложные и гибкие структуры данных
{
first_name: ‘Paul’,
surname: ‘Miller’,
cell: ‘+447557505611’
city: ‘London’,
location: [45.123,47.232],
Profession: [banking, finance, trader],
cars: [
{ model: ‘Bentley’,
year: 1973,
value: 100000, … },
{ model: ‘Rolls Royce’,
year: 1965,
value: 330000, … }
]
}
Fields can contain an array of sub-documents
Fields
Typed field values
Fields can contain
arrays
Документальная модель данных
• «Представляем» данные больше на уровне важнейших сущностей
(верхнего уровня)
• Учитываем как они будут представлены в физической БД
• Можно применять агрегирование информации
Преимущества ‘Rich Documents’
• E-commerce (например, Magento): много «движущихся» частей в
БД. Сложно что-то изменить – нужно «тронуть» слишком многое
• Реализация на MongoDB: весь Purchase Order целиком содержится
в одном документе – все изменения затрагивают только это
документ
Критерии проектирования схемы документальной БД
• Предполагаемые схемы доступа к данным:
• CRUD
• Как мы обрабатываем эти данные?
– Динамические запросы
– Вторичные индексы
– Атомарные изменения
– Использование Map Reduce
• % Read/Write
• Типы Update – модификации
данных
• Типы важнейших и наиболее
частых запросов
• Жизненный цикл данных
Главное правило
Проектируйте документы для
конкретных приложений
Моделирование отношений
• В документной модели отсутствуют операции JOIN. Реализуются в
приложениях
• «Отношения» отражают связи в реальном мире
• Существует несколько способов реализации отношений в
документной модели данных
• Выбор зависит от самих данных и приложений
• Шаблоны:
– 1:1
– 1:M
– M:N
Ссылки
Procedure
{
"_id" : 333,
"date" : "2003-02-09T05:00:00"),
"hospital" : “County Hills”,
"patient" : “John Doe”,
"physician" : “Stephen Smith”,
"type" : ”Chest X-ray",
”result" : 134
}
Results
{
“_id” : 134
"type" : "txt",
"size" : NumberInt(12),
"content" : {
value1: 343,
value2: “abc”,
…
}
}
• Используются две разные коллекции и ссылка
• Аналогично реляционной модели
В MongoDB нет
многодокументных
транзакций. Реализуются
в приложении
Вложенный документ
Procedure
{
"_id" : 333,
"date" : "2003-02-09T05:00:00"),
"hospital" : “County Hills”,
"patient" : “John Doe”,
"physician" : “Stephen Smith”,
"type" : ”Chest X-ray",
”result" : {
"type" : "txt",
"size" : NumberInt(12),
"content" : {
value1: 343,
value2: “abc”,
…
}
}
}
Advantages
• Доступковсейинформациизаодинзапрос
• НенужнореализовыватьJOINитранзакциив
приложении
• Атомарнаямодификациядокумента
• Недостатки
• Вбольшихдокументахвыдаетсямноголишних
полейиданных
• Размердокументаограничен16MB
Атомарные операции
• Операции с документами - атомарны
db.patients.update({_id: 12345},
{$inc : {numProcedures : 1},
$push : {procedures : “proc123”},
$set : {addr.state : “TX”}})
• Нет поддержки транзакций с несколькими документами
db.beginTransaction();
db.patients.update({_id: 12345}, …);
db.procedure.insert({_id: “proc123”, …});
db.records.insert({_id: “rec123”, …});
db.endTransaction();
{
_id: 2,
first: “Joe”,
last: “Patient”,
addr: { …},
procedures: [
{
id: 12345,
date: 2015-02-15,
type: “Cat scan”,
…},
{
id: 12346,
date: 2015-02-15,
type: “blood test”,
…}]
}
Patients
Вложенность
2 способа реализации отношений 1:M
{
_id: 2,
first: “Joe”,
last: “Patient”,
addr: { …},
procedures: [12345, 12346]}
{
_id: 12345,
date: 2015-02-15,
type: “Cat scan”,
…}
{
_id: 12346,
date: 2015-02-15,
type: “blood test”,
…}
Patients
Ссылки
Procedures
©mongodb.org
Общие рекомендации. Отношения 1:1 и 1:M
• Как правило, используйте встраивание
– Доступ ко всей информации за один шаг
– Преимущество атомарных модификаций
– Нет дополнительного дублирования
– Поиск и построение индексов по любому полю
например, { “phones.type”: “mobile” }
• Исключения:
– Документы размером более 16 MB
– Большое число редко используемых полей
{
_id: 2,
first: “Joe”,
last: “Patient”,
addr: { …},
procedures: [
{
id: 12345,
date: 2015-02-15,
type: “Cat scan”,
…},
{
id: 12346,
date: 2015-02-15,
type: “blood test”,
…}]
}
©mongodb.org
Реляционный подход к отношениям M:N
Join table
Physicians
name
specialty
phone
Hospitals
name
HosPhysicanRel
hospitalId
physicianId
X
NoSQL: Отсутствуют операции JOIN
Используйте массивы
©mongodb.org
{
_id: 1,
name: “Oak Valley Hospital”,
city: “New York”,
beds: 131,
physicians: [
{
id: 12345,
name: “Joe Doctor”,
address: {…},
…},
{
id: 12346,
name: “Mary Well”,
address: {…},
…}]
}
Отношения M:N
Способ 1: вложение объектов ‘doktor’ в коллекцию ‘hospitals’
{
_id: 2,
name: “Plainmont Hospital”,
city: “Omaha”,
beds: 85,
physicians: [
{
id: 63633,
name: “Harold Green”,
address: {…},
…},
{
id: 12345,
name: “Joe Doctor”,
address: {…},
…}]
}
Дублирование
©mongodb.org
{
_id: 1,
name: “Oak Valley Hospital”,
city: “New York”,
beds: 131,
physicians: [12345, 12346]
}
Отношения M:N
Способ 2: Ссылки
hospitals
{
_id: 2,
name: “Plainmont Hospital”,
city: “Omaha”,
beds: 85,
physicians: [63633, 12345]
}
{
id: 63633,
name: “Harold Green”,
address: {…},
…}
doktors
{
id: 12345,
name: “Joe Doctor”,
address: {…},
…}
{
id: 12346,
name: “Mary Well”,
address: {…},
…}
©mongodb.org
Отношения M:N. Общие рекомендации
• Что применять, вложения или ссылки
определяется:
1. Дублированием данных
• Вложение может привести к дублированию
данных
• Это допустимо в системах, где мало
модификаций, много операций чтения
2. Ссылки помогут если связанных объектов слишком
много
• Гибридный подход
• Использовать оба способа
{
_id: 2,
name: “Oak Valley Hospital”,
city: “New York”,
beds: 131,
physicians: [12345, 12346]}
{
_id: 12345,
name: “Joe Doctor”,
address: {…},
…}
{
_id: 12346,
name: “Mary Well”,
address: {…},
…}
Hospitals
Reference
Doktors
Подгонка схемы к важным запросам
{
"_id" : 593340651,
"first" : "Gregorio",
"last" : "Lang",
"addr" : {
"street" : "623 Flowers Rd",
"city" : "Groton",
"state" : "NH",
"zip" : 3266
},
"physicians" : [10387 33456],
"procedures” : ["551ac”,“343fs”]
}
{
"_id" : "551ac”,
"date" :"2000-04-26”,
"hospital" : 161,
"patient" : 593340651,
"physician" : 10387,
"type" : "Chest X-ray",
"records" : [ “67bc6”]
}
Patient Procedure
Пример: найти всех пациентов,
кому делали рентген грудной
клетки (Сhest x-rays)
Подгонка схемы к важным запросам (оптимизация)
{
"_id" : 593340651,
"first" : "Gregorio",
"last" : "Lang",
"addr" : {
"street" : "623 Flowers Rd",
"city" : "Groton",
"state" : "NH",
"zip" : 3266
},
"physicians" : [10387 33456],
"procedures” : [
{id : "551ac”,
type : “Chest X-ray”},
{id : “343fs”,
type : “Blood Test”}]
}
{
"_id" : "551ac”,
"date" :"2000-04-26”,
"hospital" : 161,
"patient" : 593340651,
"physician" : 10387,
"type" : "Chest X-ray",
"records" : [ “67bc6”]
}
Patient Procedure
Пример: найти всех пациентов,
кому делали рентген грудной
клетки (Сhest x-rays)
Другие стандартные шаблоны проектирования
• Наследование
Решается легко за счет гибкой схемы
• Деревья
– Фактически – отношения 1:m, m:n (графы)
– В качестве ссылок могут использоваться _id «родителей» или «детей»
– Деревья могут быть очень «высокими»
– Чаще всего применяется «гибридный подход»
• Очереди: например, упорядоченный список заданий, задание
должно выполниться только один раз, список выполняющихся
– Поле “in_progress”: F|T
– Поиск: db.jobs.findAndModify({…})
Time Series Data : медицинский мониторинг
Жизненные показатели:
• Кровяное давление
• Пульс
• Уровень кислорода в крови
Постоянно выдают данные
• Раз в минуту
©mongodb.org
Из приборов приходят данные
{
deviceId: 123456,
spO2: 88,
pulse: 74,
bp: [128, 80],
ts: ISODate("2013-10-16T22:07:00.000-0500")
}
• Реляционный подход: один документ в минуту для устройства
Rich Document
{
deviceId: 123456,
spO2: { 0: 88, 1: 90, …, 59: 92},
pulse: { 0: 74, 1: 76, …, 59: 72},
bp: { 0: [122, 80], 1: [126, 84], …, 59: [124, 78]},
ts: ISODate("2013-10-16T22:00:00.000-0500")
}
• Один документ для прибора в час (с поминутной модификацией)
Влияние схемы на производительность и ресурсы
Document Per Minute Document Per Hour
Number Documents
52.6 B 876 M
Total Index Size 6364 GB 106 GB
_id index 1468 GB 24.5 GB
{ts: 1, deviceId: 1} 4895 GB 81.6 GB
Document Size 92 Bytes 758 Bytes
Database Size 4503 GB 618 GB
• 100K приборов
• данные за 1 год
100000 *
365 * 24 *
60
100000 *
365 * 24
100000 *
365 * 24 *
60 * 130
100000 *
365 * 24 *
130
100000 *
365 * 24 *
60 * 92
100000 *
365 * 24 *
758
Архитектура и модели в эпоху NoSQL
• Модели данных содержат гораздо больше, чем просто диаграммы
• Есть много вариантов использования NoSql. Рассмотрите все
способы
• Современные архитектуры данных чаще всего представляют
смешанные решения. Нельзя поддерживать только одну часть из
общего
Классические СУБД и технологии Hadoop могут работать вместе
Программная
аналитика
Стандартные
Средства (SQL)
Реляционные
Многоструктурные
данные
SQL
Hadoop
DW
Stagingdata
Data
Warehouse
Анализ
данных
Delphi, Java, C++, C#, PHP, Python,
Perl, Ruby
Где еще пригодятся инструменты Embarcadero для работы с БД
N
Итоги
• Проектирование данных для NoSQL отличается от RDBMS
• Хотя основные принципы проектирования данных те же
• Сфокусированность на том, как приложения обрабатывают данные
• Легкая эволюция схемы для соответствия изменившимся
требованиям
• Проект данных оказывает драматическое влияние на
производительность и масштабирование
• Пользуйтесь новой степенью свободы разумно
Передовая поддержка Big Data в Data Architect
• MongoDB
– Сертификация для MongoDB версий 2.x и 3.0
– Поддержка прямого проектирования (генерация незаполненного шаблона
на JSON)
– Улучшения аутентификации
• Сертификация для HDP 2.1
• Поддержка Sybase IQ 15.x, 16.x
Архитектура данных, управляемая бизнесом
• ER/Studio улучшает обозримость и совместное использование
информационных активов
• Более эффективное и автоматизированное моделирование данных
• Распространение общих моделей и метаданных в рамках компании
• Ведение бизнес-глоссариев с четкими терминами и определениями
• Создает основу решений для соответствия нормам, DG (data
governance), и MDM (master data management)
ER/Studio Enterprise Team Edition
47
Включает:
ER/Studio Data Architect
Моделирование и анализ информационных активов
компании для получения новых прибылей
ER/Studio Team Server
Совместная работа с корпоративными моделями
данных и метаданными
Repository
Управление объектами моделей с применением
версионности и Agile-методик управления
изменениями
MetaWizard
Интеграция разнообразных источников данных с
помощью кросс-платформенных метаданных
Business Architect
Создание концептуальных и моделей бизнес-
процессов для понимания контекста данных
Software Architect
Визуальный анализ и проектирование ПО на UML s
Viewer
Data Lineage
UDM
Дополнительные продукты
Пользователи ER/Studio
Спасибо за внимание!
Powering Today’s Applications and Data
Андрей Совцов
Embarcadero
Email: Andrew.Sovtsov@Embarcadero.com
Blog: http://embt.co/ASovtsov
Tel: +7(495)708 4393
Записи вебинаров: http://embt.co/MrAndySova
Блоги Embarcadero
(все языки):
http://community.embarcadero.com/index.php/blogs
Более подробно о семействе продуктов
ER/Studio:
http://www.embarcadero.com/data-modeling
Ознакомительная версия:
http://www.embarcadero.com/downloads
Вопросы?
Приложения

More Related Content

What's hot

Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Ontico
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 
сервисы персонализации на основе данных
сервисы персонализации на основе данныхсервисы персонализации на основе данных
сервисы персонализации на основе данных
Roman Zykov
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
Sveta Bozhko
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
aragozin
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Ontico
 
Spark overview (18.06.2015)
Spark overview (18.06.2015)Spark overview (18.06.2015)
Spark overview (18.06.2015)
bddmoscow
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
Илья Середа
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийaragozin
 

What's hot (10)

Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
сервисы персонализации на основе данных
сервисы персонализации на основе данныхсервисы персонализации на основе данных
сервисы персонализации на основе данных
 
Databases on Client Side
Databases on Client SideDatabases on Client Side
Databases on Client Side
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
 
Spark overview (18.06.2015)
Spark overview (18.06.2015)Spark overview (18.06.2015)
Spark overview (18.06.2015)
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решений
 

Viewers also liked

Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQL
Tony Tam
 
20151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 201620151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 2016
Andrew Sovtsov
 
DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!
Andrew Sovtsov
 
InterBase XE7: Применение Change Views для синхронизации данных
InterBase XE7: Применение Change Views для синхронизации данныхInterBase XE7: Применение Change Views для синхронизации данных
InterBase XE7: Применение Change Views для синхронизации данных
Andrew Sovtsov
 
20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"  20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"
Andrew Sovtsov
 
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
Andrew Sovtsov
 
20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве
Andrew Sovtsov
 
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Andrew Sovtsov
 
Embarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БДEmbarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БД
Andrew Sovtsov
 
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДКак использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Andrew Sovtsov
 
20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле
Andrew Sovtsov
 
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
Andrew Sovtsov
 
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
Andrew Sovtsov
 
20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) 20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS)
Andrew Sovtsov
 
2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах 2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах
Andrew Sovtsov
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios android
Andrew Sovtsov
 
RAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных системRAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных систем
Andrew Sovtsov
 
Управление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения WindowsУправление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения Windows
Andrew Sovtsov
 
5 Data Modeling for NoSQL 1/2
5 Data Modeling for NoSQL 1/25 Data Modeling for NoSQL 1/2
5 Data Modeling for NoSQL 1/2
Fabio Fumarola
 

Viewers also liked (19)

Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQL
 
20151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 201620151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 2016
 
DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!DBArtisan 2016 это не просто face lifting!
DBArtisan 2016 это не просто face lifting!
 
InterBase XE7: Применение Change Views для синхронизации данных
InterBase XE7: Применение Change Views для синхронизации данныхInterBase XE7: Применение Change Views для синхронизации данных
InterBase XE7: Применение Change Views для синхронизации данных
 
20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"  20160330 Занятие 6. Серия практических занятий "Чеклист"
20160330 Занятие 6. Серия практических занятий "Чеклист"
 
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
 
20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве20160309 Простейший контрольный список на мобильном устройстве
20160309 Простейший контрольный список на мобильном устройстве
 
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
 
Embarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БДEmbarcadero Team Server для администраторов БД
Embarcadero Team Server для администраторов БД
 
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДКак использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
 
20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле20160323 Пример бизнес-приложения контроля качества в розничной торговле
20160323 Пример бизнес-приложения контроля качества в розничной торговле
 
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
10 причин перехода пользователей с ERwin на Embarcadero ER/Studio
 
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
 
20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) 20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS)
 
2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах 2015/06/18 Как работать с InterBase Change Views в Delphi программах
2015/06/18 Как работать с InterBase Change Views в Delphi программах
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios android
 
RAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных системRAD Server для разработки современных корпоративных систем
RAD Server для разработки современных корпоративных систем
 
Управление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения WindowsУправление метаданными графических файлов на примере VCL приложения Windows
Управление метаданными графических файлов на примере VCL приложения Windows
 
5 Data Modeling for NoSQL 1/2
5 Data Modeling for NoSQL 1/25 Data Modeling for NoSQL 1/2
5 Data Modeling for NoSQL 1/2
 

Similar to Моделирование для NoSQL БД

Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
Sergey Makrushin
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
Сергей Макрушин
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
mikhaelsmirnov
 
2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд
KewpaN
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
Serguei Gitinsky
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Alexey Zinoviev
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Yury Petrov
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложенийYandex
 
Миграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами EmbarcaderoМиграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами Embarcadero
Andrew Sovtsov
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHighLoad2009
 
Дмитрий Долгов
Дмитрий ДолговДмитрий Долгов
Дмитрий Долгов
CodeFest
 
Top big data architecture patterns by Igor Chub
Top big data architecture patterns  by Igor ChubTop big data architecture patterns  by Igor Chub
Top big data architecture patterns by Igor Chub
.NET User Group Dnipro
 
Соединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектированияСоединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектирования
Yulia Madorskaya
 
Подход КРОК к построению MDM-решения
Подход КРОК к построению MDM-решенияПодход КРОК к построению MDM-решения
Подход КРОК к построению MDM-решения
КРОК
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
Sergei Seleznev
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
Lohika_Odessa_TechTalks
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
Омские ИТ-субботники
 

Similar to Моделирование для NoSQL БД (20)

Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
 
Миграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами EmbarcaderoМиграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами Embarcadero
 
10 субд
10 субд10 субд
10 субд
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus Ready
 
Дмитрий Долгов
Дмитрий ДолговДмитрий Долгов
Дмитрий Долгов
 
Top big data architecture patterns by Igor Chub
Top big data architecture patterns  by Igor ChubTop big data architecture patterns  by Igor Chub
Top big data architecture patterns by Igor Chub
 
Соединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектированияСоединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектирования
 
Подход КРОК к построению MDM-решения
Подход КРОК к построению MDM-решенияПодход КРОК к построению MDM-решения
Подход КРОК к построению MDM-решения
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
 

Моделирование для NoSQL БД

  • 1. МОДЕЛИРОВАНИЕ ДЛЯ NOSQL БД Кросс-платформенные инструменты для работы с БД Андрей Совцов Embarcadero,Москва email: Andrew.sovtsov@embarcadero.com
  • 2. Embarcadero Technologies • Основана в 1993 • 3.2 M пользователей - 97% из списка Fortune 2000 • 35+ Наград продуктов за постоянные инновации
  • 3. Темы 1. NoSQL и Реляционные БД 2. NoSQL БД проектируется не так, как реляционная. Особенности 3. Инструменты для проектирования и моделирования 4. Моделирование – полезно! 5. Разные схемы драматически влияют на производительность
  • 4. Что требуется от хранилища данных? • Удобная для решения моих задач структура данных • Скорость и возможность масштабирования (верт. и гор. ) • Богатые и удобные средства доступа и разработки приложений
  • 5. Что означает «масштабирование»? • Перенос обработки как можно ближе к данным • Массивно-параллельная обработка • Использование более дешевого, стандартного оборудования, но в больших количествах • Оптимизация для: запросов / чтения / вопросов / аналитики
  • 6.
  • 7. NoSQL – не только SQL
  • 8. - это?.. • Самая популярная NoSQL СУБД (на 4 месте в общем списке) • Тип NoSQL: Документ-ориентированная СУБД • Документы представляются как Name/Value пары в формате BSON • Binary представление JSON (с минимальными отличиями) • Встроенные документы и массивы снижают потребность в операциях join • Гибкие схемы – для хранения неструктурированных и комплексных данных • Легко масштабируется • Простая установка, open source, free User • Name • Email Address Article • Name • Slug • Publish date • Text • Author Tag[] • Value Comment[] • Comment • Date • Author Category[] • Value В базе данных MongoDB хранятся документы
  • 9. MongoDB Горизонтальная масштабируемость { author : “steve”, date : new Date(), text : “About MongoDB...”, tags : [“tech”, “database”]} Хранит документы Приложение Высокая производительность Целостные данные
  • 10. Богатые возможности • Богатый язык запросов (полный CRUD) • GeoSpatial – географические запросы • Текстовый поиск • Гибкие схемы • Aggregation и MapReduce • GridFS (distributed & replicated file storage для больших объектов) • Интеграция с Hadoop, Storm, Solr и т.п. Автоматическая репликация данных Горизонтальное масштабирование
  • 11. Schema для записи/ Schema на чтение Schema для записи(RDBMS) Директивное моделирование данных: • Создать схему БД • Загрузить данные в формате RDBMS • Запросы к данным в формате RDBMS Новые колонки должны быть добавлены ДО ТОГО, как новые данные будут помещены в систему. Хорошо для Known Unknowns (повторяемости) Schema на чтение(Hadoop/NoSQL) Описательное моделирование данных: • Собрать данные в натуральном формате • Создать схему • Запросы к данным в натуральном формате Новые данные могут появляться в любое время и появляться задним числом если схема правильно описывает их Хорошо для Unknown Unknowns (исследования)
  • 12. Терминология MongoDB RDBMS MongoDB Catalog / Database Database Table Collection Record JSON document SQL CRUD = Insert, Find, Update, Delete, и т.п. Аргументы в формате JSON. SELECT (joins, nested SELECT’s, etc) Single collection Find (no joins) Transaction / ACID Single document / ACID Foreign key --
  • 13. Устройство MongoDB. Documents. Чтение. db.Restaurants.Find({}) db.Restaurants.Find({“address.street:”: “2 Avenue”}) • Гибкий язык запросов в формате JSON-document, включающий разделы: – Projection – список выдаваемых полей (как список SELECT) – Match – критерии отбора (аналог WHERE) – Sort – критерии сортировки (аналог ORDER BY) • Операции join отсутствуют • Возвращает cursor с отобранными JSON-документами
  • 14.
  • 15. Хранение медицинских данных (историй больных) • Hospitals – Работают доктора • Doktors – Лечат пациентов – Выполняют процедуры – Работают в больнице • Patients – Лечатся у доктора – Принимают процедуры • Procedures – Назначаются пациентам – Выполняются доктором – Записываются в журнал – Различные метрики • Records – Относятся к процедурам – Сложные данные – Переменное число полей
  • 17. Реляционная модель данных • Запросы по любому полю • Замена по месту • Универсальная для всех запросов и операций • Табличное, «плоское» хранение • Сложные нормализованные, «жесткие» схемы • Каждое поле содержит единственное значение строго определенного типа • Нормализация приводит к необходимости операций JOIN «мелких» таблиц • Поддержка межтабличных транзакций на уровне СУБД
  • 18. Rich Documents : сложные и гибкие структуры данных { first_name: ‘Paul’, surname: ‘Miller’, cell: ‘+447557505611’ city: ‘London’, location: [45.123,47.232], Profession: [banking, finance, trader], cars: [ { model: ‘Bentley’, year: 1973, value: 100000, … }, { model: ‘Rolls Royce’, year: 1965, value: 330000, … } ] } Fields can contain an array of sub-documents Fields Typed field values Fields can contain arrays
  • 19. Документальная модель данных • «Представляем» данные больше на уровне важнейших сущностей (верхнего уровня) • Учитываем как они будут представлены в физической БД • Можно применять агрегирование информации Преимущества ‘Rich Documents’ • E-commerce (например, Magento): много «движущихся» частей в БД. Сложно что-то изменить – нужно «тронуть» слишком многое • Реализация на MongoDB: весь Purchase Order целиком содержится в одном документе – все изменения затрагивают только это документ
  • 20. Критерии проектирования схемы документальной БД • Предполагаемые схемы доступа к данным: • CRUD • Как мы обрабатываем эти данные? – Динамические запросы – Вторичные индексы – Атомарные изменения – Использование Map Reduce • % Read/Write • Типы Update – модификации данных • Типы важнейших и наиболее частых запросов • Жизненный цикл данных Главное правило Проектируйте документы для конкретных приложений
  • 21. Моделирование отношений • В документной модели отсутствуют операции JOIN. Реализуются в приложениях • «Отношения» отражают связи в реальном мире • Существует несколько способов реализации отношений в документной модели данных • Выбор зависит от самих данных и приложений • Шаблоны: – 1:1 – 1:M – M:N
  • 22. Ссылки Procedure { "_id" : 333, "date" : "2003-02-09T05:00:00"), "hospital" : “County Hills”, "patient" : “John Doe”, "physician" : “Stephen Smith”, "type" : ”Chest X-ray", ”result" : 134 } Results { “_id” : 134 "type" : "txt", "size" : NumberInt(12), "content" : { value1: 343, value2: “abc”, … } } • Используются две разные коллекции и ссылка • Аналогично реляционной модели В MongoDB нет многодокументных транзакций. Реализуются в приложении
  • 23. Вложенный документ Procedure { "_id" : 333, "date" : "2003-02-09T05:00:00"), "hospital" : “County Hills”, "patient" : “John Doe”, "physician" : “Stephen Smith”, "type" : ”Chest X-ray", ”result" : { "type" : "txt", "size" : NumberInt(12), "content" : { value1: 343, value2: “abc”, … } } } Advantages • Доступковсейинформациизаодинзапрос • НенужнореализовыватьJOINитранзакциив приложении • Атомарнаямодификациядокумента • Недостатки • Вбольшихдокументахвыдаетсямноголишних полейиданных • Размердокументаограничен16MB
  • 24. Атомарные операции • Операции с документами - атомарны db.patients.update({_id: 12345}, {$inc : {numProcedures : 1}, $push : {procedures : “proc123”}, $set : {addr.state : “TX”}}) • Нет поддержки транзакций с несколькими документами db.beginTransaction(); db.patients.update({_id: 12345}, …); db.procedure.insert({_id: “proc123”, …}); db.records.insert({_id: “rec123”, …}); db.endTransaction();
  • 25. { _id: 2, first: “Joe”, last: “Patient”, addr: { …}, procedures: [ { id: 12345, date: 2015-02-15, type: “Cat scan”, …}, { id: 12346, date: 2015-02-15, type: “blood test”, …}] } Patients Вложенность 2 способа реализации отношений 1:M { _id: 2, first: “Joe”, last: “Patient”, addr: { …}, procedures: [12345, 12346]} { _id: 12345, date: 2015-02-15, type: “Cat scan”, …} { _id: 12346, date: 2015-02-15, type: “blood test”, …} Patients Ссылки Procedures ©mongodb.org
  • 26. Общие рекомендации. Отношения 1:1 и 1:M • Как правило, используйте встраивание – Доступ ко всей информации за один шаг – Преимущество атомарных модификаций – Нет дополнительного дублирования – Поиск и построение индексов по любому полю например, { “phones.type”: “mobile” } • Исключения: – Документы размером более 16 MB – Большое число редко используемых полей { _id: 2, first: “Joe”, last: “Patient”, addr: { …}, procedures: [ { id: 12345, date: 2015-02-15, type: “Cat scan”, …}, { id: 12346, date: 2015-02-15, type: “blood test”, …}] } ©mongodb.org
  • 27. Реляционный подход к отношениям M:N Join table Physicians name specialty phone Hospitals name HosPhysicanRel hospitalId physicianId X NoSQL: Отсутствуют операции JOIN Используйте массивы ©mongodb.org
  • 28. { _id: 1, name: “Oak Valley Hospital”, city: “New York”, beds: 131, physicians: [ { id: 12345, name: “Joe Doctor”, address: {…}, …}, { id: 12346, name: “Mary Well”, address: {…}, …}] } Отношения M:N Способ 1: вложение объектов ‘doktor’ в коллекцию ‘hospitals’ { _id: 2, name: “Plainmont Hospital”, city: “Omaha”, beds: 85, physicians: [ { id: 63633, name: “Harold Green”, address: {…}, …}, { id: 12345, name: “Joe Doctor”, address: {…}, …}] } Дублирование ©mongodb.org
  • 29. { _id: 1, name: “Oak Valley Hospital”, city: “New York”, beds: 131, physicians: [12345, 12346] } Отношения M:N Способ 2: Ссылки hospitals { _id: 2, name: “Plainmont Hospital”, city: “Omaha”, beds: 85, physicians: [63633, 12345] } { id: 63633, name: “Harold Green”, address: {…}, …} doktors { id: 12345, name: “Joe Doctor”, address: {…}, …} { id: 12346, name: “Mary Well”, address: {…}, …} ©mongodb.org
  • 30. Отношения M:N. Общие рекомендации • Что применять, вложения или ссылки определяется: 1. Дублированием данных • Вложение может привести к дублированию данных • Это допустимо в системах, где мало модификаций, много операций чтения 2. Ссылки помогут если связанных объектов слишком много • Гибридный подход • Использовать оба способа { _id: 2, name: “Oak Valley Hospital”, city: “New York”, beds: 131, physicians: [12345, 12346]} { _id: 12345, name: “Joe Doctor”, address: {…}, …} { _id: 12346, name: “Mary Well”, address: {…}, …} Hospitals Reference Doktors
  • 31. Подгонка схемы к важным запросам { "_id" : 593340651, "first" : "Gregorio", "last" : "Lang", "addr" : { "street" : "623 Flowers Rd", "city" : "Groton", "state" : "NH", "zip" : 3266 }, "physicians" : [10387 33456], "procedures” : ["551ac”,“343fs”] } { "_id" : "551ac”, "date" :"2000-04-26”, "hospital" : 161, "patient" : 593340651, "physician" : 10387, "type" : "Chest X-ray", "records" : [ “67bc6”] } Patient Procedure Пример: найти всех пациентов, кому делали рентген грудной клетки (Сhest x-rays)
  • 32. Подгонка схемы к важным запросам (оптимизация) { "_id" : 593340651, "first" : "Gregorio", "last" : "Lang", "addr" : { "street" : "623 Flowers Rd", "city" : "Groton", "state" : "NH", "zip" : 3266 }, "physicians" : [10387 33456], "procedures” : [ {id : "551ac”, type : “Chest X-ray”}, {id : “343fs”, type : “Blood Test”}] } { "_id" : "551ac”, "date" :"2000-04-26”, "hospital" : 161, "patient" : 593340651, "physician" : 10387, "type" : "Chest X-ray", "records" : [ “67bc6”] } Patient Procedure Пример: найти всех пациентов, кому делали рентген грудной клетки (Сhest x-rays)
  • 33. Другие стандартные шаблоны проектирования • Наследование Решается легко за счет гибкой схемы • Деревья – Фактически – отношения 1:m, m:n (графы) – В качестве ссылок могут использоваться _id «родителей» или «детей» – Деревья могут быть очень «высокими» – Чаще всего применяется «гибридный подход» • Очереди: например, упорядоченный список заданий, задание должно выполниться только один раз, список выполняющихся – Поле “in_progress”: F|T – Поиск: db.jobs.findAndModify({…})
  • 34. Time Series Data : медицинский мониторинг Жизненные показатели: • Кровяное давление • Пульс • Уровень кислорода в крови Постоянно выдают данные • Раз в минуту ©mongodb.org
  • 35. Из приборов приходят данные { deviceId: 123456, spO2: 88, pulse: 74, bp: [128, 80], ts: ISODate("2013-10-16T22:07:00.000-0500") } • Реляционный подход: один документ в минуту для устройства
  • 36. Rich Document { deviceId: 123456, spO2: { 0: 88, 1: 90, …, 59: 92}, pulse: { 0: 74, 1: 76, …, 59: 72}, bp: { 0: [122, 80], 1: [126, 84], …, 59: [124, 78]}, ts: ISODate("2013-10-16T22:00:00.000-0500") } • Один документ для прибора в час (с поминутной модификацией)
  • 37. Влияние схемы на производительность и ресурсы Document Per Minute Document Per Hour Number Documents 52.6 B 876 M Total Index Size 6364 GB 106 GB _id index 1468 GB 24.5 GB {ts: 1, deviceId: 1} 4895 GB 81.6 GB Document Size 92 Bytes 758 Bytes Database Size 4503 GB 618 GB • 100K приборов • данные за 1 год 100000 * 365 * 24 * 60 100000 * 365 * 24 100000 * 365 * 24 * 60 * 130 100000 * 365 * 24 * 130 100000 * 365 * 24 * 60 * 92 100000 * 365 * 24 * 758
  • 38. Архитектура и модели в эпоху NoSQL • Модели данных содержат гораздо больше, чем просто диаграммы • Есть много вариантов использования NoSql. Рассмотрите все способы • Современные архитектуры данных чаще всего представляют смешанные решения. Нельзя поддерживать только одну часть из общего
  • 39. Классические СУБД и технологии Hadoop могут работать вместе Программная аналитика Стандартные Средства (SQL) Реляционные Многоструктурные данные SQL Hadoop DW Stagingdata Data Warehouse Анализ данных Delphi, Java, C++, C#, PHP, Python, Perl, Ruby
  • 40. Где еще пригодятся инструменты Embarcadero для работы с БД
  • 41. N
  • 42.
  • 43. Итоги • Проектирование данных для NoSQL отличается от RDBMS • Хотя основные принципы проектирования данных те же • Сфокусированность на том, как приложения обрабатывают данные • Легкая эволюция схемы для соответствия изменившимся требованиям • Проект данных оказывает драматическое влияние на производительность и масштабирование • Пользуйтесь новой степенью свободы разумно
  • 44. Передовая поддержка Big Data в Data Architect • MongoDB – Сертификация для MongoDB версий 2.x и 3.0 – Поддержка прямого проектирования (генерация незаполненного шаблона на JSON) – Улучшения аутентификации • Сертификация для HDP 2.1 • Поддержка Sybase IQ 15.x, 16.x
  • 45. Архитектура данных, управляемая бизнесом • ER/Studio улучшает обозримость и совместное использование информационных активов • Более эффективное и автоматизированное моделирование данных • Распространение общих моделей и метаданных в рамках компании • Ведение бизнес-глоссариев с четкими терминами и определениями • Создает основу решений для соответствия нормам, DG (data governance), и MDM (master data management)
  • 46. ER/Studio Enterprise Team Edition 47 Включает: ER/Studio Data Architect Моделирование и анализ информационных активов компании для получения новых прибылей ER/Studio Team Server Совместная работа с корпоративными моделями данных и метаданными Repository Управление объектами моделей с применением версионности и Agile-методик управления изменениями MetaWizard Интеграция разнообразных источников данных с помощью кросс-платформенных метаданных Business Architect Создание концептуальных и моделей бизнес- процессов для понимания контекста данных Software Architect Визуальный анализ и проектирование ПО на UML s Viewer Data Lineage UDM Дополнительные продукты
  • 48. Спасибо за внимание! Powering Today’s Applications and Data Андрей Совцов Embarcadero Email: Andrew.Sovtsov@Embarcadero.com Blog: http://embt.co/ASovtsov Tel: +7(495)708 4393 Записи вебинаров: http://embt.co/MrAndySova Блоги Embarcadero (все языки): http://community.embarcadero.com/index.php/blogs Более подробно о семействе продуктов ER/Studio: http://www.embarcadero.com/data-modeling Ознакомительная версия: http://www.embarcadero.com/downloads