Докладчик – Альперин Борис NOT ONLY SQL NOSQL 1
Различные модели представления информации: иерархическая, сетевая, реляционная, объектная, … Реляционная модель имеет наибольшее распространение. Причины: Простота Гибкость SQL Множество инструментальных средств 2
Развитие Интернета – поисковые системы, социальные сети, … Необходимы распределенные вычисления CAP – теорема (Consistence, Availability, Partition tolerance -согласованность, доступность, устойчивость к разделению ): нельзя одновременно выполнить C, A, P. 3
Возможные варианты: CA, CP, AP В любом варианте не выполняется ACID (Atomicity, Consistency, Isolation, Durability «атомарность, согласованность, изолированность, долговечность») Отход от ACID => масштабируемое производительное решение 4
Сложность моделирования деревьев, графов в реляционных БД. При больших объемах данных - неэффективно Результат – графовые СУБД 5
Ключ-значение Документо-ориентированные Графовые 6
Данные – коллекция пар (ключ, значение) Ключ – строка, значение – набор байтов Дополнительные типы значений: множества, списки, кортежи Операции: просмотр, добавление, удаление записей по ключам Преимущество – хорошая масштабируемость 7
Пример: data = memcached_fetch("userrow:" + userid); memcached_add("userrow:" + userid, data); Реализации: Apache Cassandra Redis memcached 8
Данные представлены в виде документов – наборов ключ-значение. Документ может содержать другие документы Документ не имеет схемы Коллекции документов Поддержка вторичных ключей 9
var user = {name: john, age: 19} Db.users.save(user) Db.users.find({name:john}).forEach(printJson) { "_id" : ObjectId("4c220a42f3924d31102bd856"), name: john, age: 19} Нет транзакций, гарантируется атомарность изменения документа 10
11
Эффективность запросов на обход графа Встроенные алгоритмы – кратчайшие пути между вершинами, алгоритм дейкстры, … Транзакционность Язык запросов Gremlin 12
Спасибо за внимание 13