nosql basics

Post on 10-Feb-2017

1.274 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

eleks.com eleks.com

NoSQL: основи

План NoSQL концепції Види NoSQL NoSQL vs RDBMS Реплікація CAP теорема Redis MongoDB

NoSQL – це…сукупність технологій баз даних, які були розроблені у відповідь на вимоги сучасних додатків: великі об’єми нових типів даних, що швидко

змінюються; короткотривалі цикли розробки (1-2 тижні) аплікації як сервіси, завжди доступні,

масштабовані для мільйонів користувачів перевага масштабованих архітектур з

використанням відкритого ПЗ

Види NoSQL Ключ-значення Документні Графові Об’єктні Інші

NoSQL: Ключ-значення сховищавикористовують асоціативні масиви (також відомі як словники) як фундаментальну модель даних. В цій моделі дані зберігаються як колекція пар ключ-значення, так що кожен ключ зустрічається лише один раз.

Ключ-значення БД: приклади Redis Riak Dbm Berkeley DB

NoSQL: Документні БДставить у відповідність кожному ключу складну структуру даних відому, як документ. Документ може містити багато відмінних пар ключ-значеня, або ж ключ-масив і навіть вкладені документи

Документні БД: приклади MongoDB CouchDB DocumentDB MarkLogic

NoSQL: Графові БДвикористовують граф з вершинами, ребрами та властивостями для представлення та збереження даних.

Графові БД: приклади Neo4J Giraph OrientDB Stardog

NoSQL: Об’єктні БДпредставляють інформацію у вигляді об’єктів, що використовуються в об’єктно-орієнтованому програмуванні.

Об’єктні БД: приклади ObjectDB JADE Db4o Perst

NoSQL vs RDBMSSQL NoSQL

Типи Одного типу (SQL) з мінімальними відмінностями

Багато різних типів, наприклад, сховища ключ-значення, документні, графові та інші

Модель зберігання даних Окремі записи зберігаються як рядки в таблицях, де кожна колонка зберігає специфічну частину даних про даний запис. Пов’язані дані зберігаються в інших таблицях, а потім об’єднуються для виконання складних запитів.

Варіюється в залежності від виду бази даних. На приклад, ключ-значення сховища зберігають складні об’єкти як BLOB. Документні БД зберігають всю пов’язану інформацію разом в одному документі

NoSQL vs RDBMSSQL NoSQL

Схема Структура та типи даних є фіксованими. Для збереження нових даних, вся база даних повинна бути змінена. Протягом цього часу база даних є недоступною.

Переважно динамічна з дотриманням деяких правил валідації даних. Додатки можуть додавати нові поля «на льоту», і на відміну SQL таблиць, несхожі дані при потребі можуть зберігатись разом.

Масштабування Вертикальне: сервер повинен бути максимально потужним, щоб справлятись з вимогами. Можливо рознести SQL БД по багатьох серверах, що є складним технологічним процесом.

Горизонтальне: додавання нових серверів. Бази даних автоматично розподіляють дані між серверами при потребі.

NoSQL vs RDBMSSQL NoSQL

Модель розробки Поєднання відкритого ПЗ (Postgres, MySQL та інші) з закритим (Oracle, MSSQL та інші)

Відкрите ПЗ (open-source)

Підтримка транзакцій Так. Зміни можуть бути налаштовані таким чином, щоб завершуватись разом або ні.

При певних обставинах та на певних рівнях.

NoSQL vs RDBMSSQL NoSQL

Маніпулювання даними Використання операторів специфічної мови: Select, Insert, Update та інші.

Через об’єктно-орієнтовані APIs

Узгодженість (Consistency) Можливе налаштування для підтримки строгої узгодженості.

Залежить від продукту. Деякі забезпечують строгу узгодженість, інші – підсумкову узгодженість.

Реплікація

CAP теорема

Розподілена система може одночасно забезпечувати лише 2 з 3 властивостей: - узгодженість (consistency);- доступність (availability);- стійкість до розподілу (partition tolerance)

Redis – REmote DIctionary Service ключ-значення сховище; зберігає дані в оперативній пам’яті (по

замовчуванню).

Переваги Redis надзвичайно швидкий; можливість зберігати не тільки стрічки; постійність; реплікація; вбудована підтримка Lua-скриптів.

Redis: типи даних Strings Lists Hashes Sets Sorted Sets

Redis: Strings CRUD SET GET APPEND INCR and DECR (для чисел) GETRANGE (підрядок) MGET (багато значень) MSET STRLEN

Redis: List CRUD LPUSH and RPUSH LREM LSET LINDEX LRANGE LLEN LPOP and RPOP LTRIM

Redis: Set CRUD SADD SCARD SDIFF, SINTER and SUNION SISMEMBER SMEMBERTS SMOVE SREM

Redis: Hash CRUD HSET HMSET HGET HMGET HGETALL HDEL HEXISTS HINCRBY HKEYS HVALS

Redis: Sorted Set CRUD ZADD ZCARD ZCOUNT ZINCRBY ZRANGE ZRANK ZREM ZSCORE

MongoDBДокументно-орієнтована БД: документи – аналоги ключ-значення структур

у мовах програмування (словники, хеші, мапи, асоціативні масиви)

документи зберігаються у JSON форматі (насправді у BSON – бінарний JSON)

всі документи зберігаються в колекціях. Колекція – група пов’язаних документів, що мають набір спільних індексів

Переваги MongoDB відсутність схеми; індекси; auto-sharding; реплікація; масштабованість.

MongoDB: Приклад документа

MongoDB: Приклад запиту

MongoDB CRUD: Insert db.collection.insertOne() db.collection.insertMany() db.collection.insert()

MongoDB CRUD: Update db.collection.updateOne() db.collection.updateMany() db.collection.replaceOne() db.collection.update()

MongoDB CRUD: Delete db.collection.deleteOne() db.collection.deleteMany() db.collection.remove()

MongoDB: Запити- стосуються конкретної колекції

документів- вказують критерії чи умови, що

визначають документи, які поверне MongoDB

- можуть включати проекцію, що вказує, які поля повернути у знайдених документах

MongoDB CRUD: Find

MongoDB Find: Проекція

MongoDB Find: Курсор

MongoDB: ІндексиПокращують ефективність операції читання завдяки зменшенню кількості даних, яку запит повинен обробити.

MongoDB: Індекси

MongoDB: Види індексів- одинарні (single)- композитні (compound)- multikey (для значень в масивах)

Рекомендовані джерелаMongoDB:

https://university.mongodb.com/courses/M101P/aboutRedis

http://redis.io/documentation

Питання

andriy.pukalyak@eleks.com

eleks.com

Inspired by Technology.Driven by Value.

top related