Модель данных - moevm/nosql2018-big_five GitHub Wiki
Нереляционная БД
Графическое представление БД
Описание назначений коллекций, типов данных и сущностей
В данном проекте одна коллекция. В ней хранятся: имя, группа и результаты теста (взяты те характеристики теста, значения которых представлены по ссылке). Все данные представлены в формате JSON (пример):
{
"name": "Uteeva",
"group": "5381",
"url": "http://psytests.org/result?v=pfqMe_hMO8iAJSvgWSif",
"inrover": 48,
"passivn": 8,
"podchin": 10,
"zamknut": 8,
"izbegvpet": 11,
"izbegvnim": 11,
"obosob": 35,
"ravnodush": 5,
"sopern": 8,
"podozrit": 6,
"neponimanie": 8,
"samouvaz": 8,
"impulsiv": 41,
"neakkurat": 11,
"otsutnastoy": 8,
"bezotvet": 12,
"impulsivn2": 5,
"bespechn": 5,
"emocust": 62,
"bezzabotn": 14,
"rasslablen": 14,
"emockomfort": 14,
"samodost": 12,
"emocstabiln": 8,
"praktich": 55,
"konservatizm": 9,
"realist": 14,
"otsutartist": 11,
"nechuvstvit": 10,
"rigidnost": 11
}
Типы данных полей: {
"ID": ObjectID,
"name": string, - имя студента
"group": string, - группа студента
"url": string, - ссылка на результаты теста
"inrover": int, - показатель Интроверсия
"passivn": int, - пассивность
"podchin": int, - подчиненность
"zamknut": int, - замкнутость
"izbegvpet": int, - избегание впечатлений
"izbegvnim": int, - избегание внимания
"obosob": int, - Обособленность
"ravnodush": int, - равнодушие
"sopern": int, - соперничество
"podozrit": int, - подозрительность
"neponimanie": int, - непонимание
"samouvaz": int, - самоуважение
"impulsiv": int, - Импульсивность
"neakkurat": int, - неаккуратность
"otsutnastoy": int, - отсутствие настойчивости
"bezotvet": int, - безответственность
"impulsivn2": int, - импульсивность
"bespechn": int, - беспечность
"emocust": int, - Эмоциональная устойчивость
"bezzabotn": int, - беззаботность
"rasslablen": int, - расслабленность
"emockomfort": int, - эмоц. комфортность
"samodost": int, - самодостаточность
"emocstabiln": int, - эмоц. стабильность
"praktich": int, - Практичность
"konservatizm": int, - консерватизм
"realist": int, - реалистичность
"otsutartist": int, - отсутствие артистичности
"nechuvstvit": int, - нечувствительность
"rigidnost": int - ригидность
}
Оценка удельного объема информации, хранимой в модели
Размер каждого докудента: {
"ID": ObjectID, - 4 байта
"name": string, - имя студента - 16 байт(в среднем)
"group": string, - группа студента - 4 байта
"url": string, - ссылка на результаты теста - 40 байт (в среднем)
"inrover": int, - показатель Интроверсия - 4 байта
"passivn": int, - пассивность - 4 байта
"podchin": int, - подчиненность - 4 байта
"zamknut": int, - замкнутость - 4 байта
"izbegvpet": int, - избегание впечатлений - 4 байта
"izbegvnim": int, - избегание внимания - 4 байта
"obosob": int, - Обособленность - 4 байта
"ravnodush": int, - равнодушие - 4 байта
"sopern": int, - соперничество - 4 байта
"podozrit": int, - подозрительность - 4 байта
"neponimanie": int, - непонимание - 4 байта
"samouvaz": int, - самоуважение - 4 байта
"impulsiv": int, - Импульсивность - 4 байта
"neakkurat": int, - неаккуратность - 4 байта
"otsutnastoy": int, - отсутствие настойчивости - 4 байта
"bezotvet": int, - безответственность - 4 байта
"impulsivn2": int, - импульсивность - 4 байта
"bespechn": int, - беспечность - 4 байта
"emocust": int, - Эмоциональная устойчивость - 4 байта
"bezzabotn": int, - беззаботность - 4 байта
"rasslablen": int, - расслабленность - 4 байта
"emockomfort": int, - эмоц. комфортность - 4 байта
"samodost": int, - самодостаточность - 4 байта
"emocstabiln": int, - эмоц. стабильность - 4 байта
"praktich": int, - Практичность - 4 байта
"konservatizm": int, - консерватизм - 4 байта
"realist": int, - реалистичность - 4 байта
"otsutartist": int, - отсутствие артистичности - 4 байта
"nechuvstvit": int, - нечувствительность - 4 байта
"rigidnost": int - ригидность - 4 байта
}
Итого: 164 байта будет занимать каждый документ. Если рассматриваются результаты N студентов, то общий объем равен V = 164*N байта.
Запросы к модели, с помощью которых реализуются сценарии использования
Используется MongoDB.
- Запрос на получение данных о студентах с определенными результатами, например, студенты у которых критерий "Импульсивность" больше 3 и меньше 10:
db.collection.find({ rigidnost: { $gte: 3, $lte: 10 } })
- Запрос на получение результатов определенного студента:
db.collection.find({ name: Uteeva})
- Запрос на сортировку. Сортировка может быть по возрастанию (1) и по убыванию (- 1). Сортировка может производится по нескольким ключам в порядке их приоритета:
db.collection.find().sort({ praktich: 1})
.
Аналог модели данных для SQL СУБД
Графическое представление БД
SQL БД состоит из одной таблицы "Результаты".
Описание назначений коллекций, типов данных и сущностей
Таблица "Результаты":
"ID": ObjectID,
"name": string, - имя студента
"group": string, - группа студента
"url": string, - ссылка на результаты теста
"inrover": int, - показатель Интроверсия
"passivn": int, - пассивность
"podchin": int, - подчиненность
"zamknut": int, - замкнутость
"izbegvpet": int, - избегание впечатлений
"izbegvnim": int, - избегание внимания
"obosob": int, - Обособленность
"ravnodush": int, - равнодушие
"sopern": int, - соперничество
"podozrit": int, - подозрительность
"neponimanie": int, - непонимание
"samouvaz": int, - самоуважение
"impulsiv": int, - Импульсивность
"neakkurat": int, - неаккуратность
"otsutnastoy": int, - отсутствие настойчивости
"bezotvet": int, - безответственность
"impulsivn2": int, - импульсивность
"bespechn": int, - беспечность
"emocust": int, - Эмоциональная устойчивость
"bezzabotn": int, - беззаботность
"rasslablen": int, - расслабленность
"emockomfort": int, - эмоц. комфортность
"samodost": int, - самодостаточность
"emocstabiln": int, - эмоц. стабильность
"praktich": int, - Практичность
"konservatizm": int, - консерватизм
"realist": int, - реалистичность
"otsutartist": int, - отсутствие артистичности
"nechuvstvit": int, - нечувствительность
"rigidnost": int - ригидность
Оценка удельного объема информации, хранимой в модели
Таблица "Результаты":
"ID": длинное целое - 4 байта
"name": varchar(18), - имя студента - 19 байт
"group": char(4), - группа студента - 4 байта
"url": varchar(40), - ссылка на результаты теста - 41 байт
"inrover": длинное целое, - показатель Интроверсия - 4 байта
"passivn": длинное целое, - пассивность - 4 байта
"podchin": длинное целое, - подчиненность - 4 байта
"zamknut": длинное целое, - замкнутость - 4 байта
"izbegvpet": длинное целое, - избегание впечатлений - 4 байта
"izbegvnim": длинное целое, - избегание внимания - 4 байта
"obosob": длинное целое, - Обособленность - 4 байта
"ravnodush": длинное целое, - равнодушие - 4 байта
"sopern": длинное целое, - соперничество - 4 байта
"podozrit": длинное целое, - подозрительность - 4 байта
"neponimanie": длинное целое, - непонимание - 4 байта
"samouvaz": длинное целое, - самоуважение - 4 байта
"impulsiv": длинное целое, - Импульсивность - 4 байта
"neakkurat": длинное целое, - неаккуратность - 4 байта
"otsutnastoy": длинное целое, - отсутствие настойчивости - 4 байта
"bezotvet": длинное целое, - безответственность - 4 байта
"impulsivn2": длинное целое, - импульсивность - 4 байта
"bespechn": длинное целое, - беспечность - 4 байта
"emocust": длинное целое, - Эмоциональная устойчивость - 4 байта
"bezzabotn": длинное целое, - беззаботность - 4 байта
"rasslablen": длинное целое, - расслабленность - 4 байта
"emockomfort": длинное целое, - эмоц. комфортность - 4 байта
"samodost": длинное целое, - самодостаточность - 4 байта
"emocstabiln": длинное целое, - эмоц. стабильность - 4 байта
"praktich": длинное целое, - Практичность - 4 байта
"konservatizm": длинное целое, - консерватизм - 4 байта
"realist": длинное целое, - реалистичность - 4 байта
"otsutartist": длинное целое, - отсутствие артистичности - 4 байта
"nechuvstvit": длинное целое, - нечувствительность - 4 байта
"rigidnost": длинное целое - ригидность - 4 байта
Итого: 168 байт будет занимать каждая строка. Если рассматриваются результаты N студентов, то общий объем равен V = 168*N байт.
Запросы к модели, с помощью которых реализуются сценарии использования
- Запрос на получение данных о студентах с определенными результатами, например, студенты у которых критерий "Импульсивность" больше 3 и меньше 10:
SELECT * FROM Результаты WHERE impulsiv > 3 AND impulsiv < 10
- Запрос на получение результатов определенного студента:
SELECT * FROM Результаты WHERE name = "Uteeva"
- Запрос на сортировку:
SELECT * FROM Результаты WHERE name = "Uteeva" ORDER BY praktich
.
Сравнение моделей
Запросы, с помощью которых реализуются сценарии использования, и в нереляционной и реляционной БД оказались примерно одинаковыми по объему. Но данные в реляционной БД, при равных параметрах, занимают чуть больший объём (V = 168N байт против V = 164N байт). Поэтому, если требуется хранить много данных, лучше подходит нереляционная БД.