Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)

252 views

Published on

РИТ++ 2017, Backend Conf
Зал Сан-Паулу, 6 июня, 12:00

Тезисы:
http://backendconf.ru/2017/abstracts/2788.html

Что такое NewSQL, почему NoSQL-движение превращается в NewSQL, и что эта трансформация привносит в SQL?

Попробуем разобраться, почему NoSQL-вендоры добавляют всё больше SQL-возможностей, почему стандарт SQL не пользуется популярностью, и куда это всё идёт.

Рассмотрим новые диалекты языка SQL, такие как:
- Cassandra QL
- Couchbase NQL
- Elastisearch
и сравним их с подходом MongoDB & RethinkDB, добавляющим новый язык работы с данными.
Останется ли в мире СУБД что-то ценного от NoSQL-движения?
Ну и, наконец, рассмотрим новый вызов реляционной модели: multi-model databases.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)

  1. 1. NewSQL: SQL никуда не уходит Константин, Осипов Developer http://tarantool.org
  2. 2. Содержание ● вспоминаем, зачем был нужен NoSQL ● что из NoSQL выдержало испытание временем ● SQL в NoSQL: смотрим на N1QL и CQL. ● NoSQL уже мёртв, а NewSQL ещё не рождён: чем тёплый, ламповый SQL отличается от SQL в NoSQL ● ищем уникальные ценности NoSQL ● изучаем Multi-Model databases и NewSQL
  3. 3. NoSQL tenets ● #nosql hashtag ● горизонтальное масштабирование ● новые модели данных ● новые модели консистентности NoSQL - выход для фрустрации, тэг который присвоили себе все кому оказалось недостаточно возможностей SQL
  4. 4. NoSQL сегодня ● горизонтальное масштабирование ● новые модели данных document and graph data models ● новые модели консистентности
  5. 5. Смерть CAP ● eventual consistency: инфляция термина ● MongoDB: atomic сменяется isolated, добавляются транзакции в 3.xx ● Redis transactions ● Кто использует Riak?
  6. 6. Трудности масштабирования Redis Cluster implements all the single key commands available in the non-distributed version of Redis. Commands performing complex multi-key operations like Set type unions or intersections are implemented as well as long as the keys all belong to the same node.
  7. 7. Трудности масштабирования
  8. 8. Трудности масштабирования
  9. 9. Трудности масштабирования
  10. 10. JSON в реляционных БД MySQL PostgreSQL Redis Couchbase Cassandra Neo4J Хранение JSON Yes Yes Yes Yes Yes Yes! JSON field ops Yes Yes Yes Yes No No JSON query Yes Yes No Yes Yes No JSON secondary index Yes Yes No Yes No No
  11. 11. Горизонтальное масштабирование в SQL
  12. 12. SQL в NoSQL MongoDB Couchbase Cassandra Redis Cхема данных Yes* No Yes No NULLs/Absent values Yes* Yes Yes No JOINs No Yes No No Secondary keys Yes* Yes Yes, but.. No GROUP BY Yes* Yes No No JDBC/ODBC No Yes No No
  13. 13. N1QL: отличия от SQL ● NEST/UNNEST ● LETTING -> AS ● IS MISSING -> IS NULL ● IS VALUED -> IS NOT UNKNOWN ● IN [] -> IN ()
  14. 14. SQL в NoSQL: консистентность Couchbase: Because indexes are by design outside the data service, they are eventually consistent with respect to changes to documents and, depending on how you issue the query, may at times not contain the most up-to-date information. This may especially be the case when deployed in a write-heavy environment: changes may take some time to propagate over to the index nodes. Crate.io: Crate does not provide transactions.
  15. 15. NoSQL: ищем ценности ● multi-model databases ● domain-specific languages ● UPSERT
  16. 16. Новые языки запросов к данным ● RethinkDB ReQL ● Elasticsearch Query Language ○ MIN/MAX/AVG ○ derivative/percentiles/histogram/cumulative sum/serial diff ● JSONIQ ● GraphQL ● SparQL ● Pregel -> Сообщество по-прежнему недовольно SQL ! -> потоковая, итеративная парадигма данных вместо реляционной алгебры
  17. 17. Multi-model databases: о чём это
  18. 18. Multi-model databases (2)
  19. 19. Multi-model databases (3)
  20. 20. UPSERT: зачем это ● SQL по своей семантике не содержит non-reading update ● LSM структуры данных неэффективны для операций чтения ● необходим оператор с новой семантикой
  21. 21. После NewSQL: temporal database ● time period datatype, including the ability to represent time periods with no end (infinity or forever) ● the ability to define valid and transaction time period attributes and bitemporal relations ● system-maintained transaction time ● temporal primary keys, including non-overlapping period constraints ● temporal constraints, including non-overlapping uniqueness and referential integrity ● update and deletion of temporal records with automatic splitting and coalescing of time periods ● temporal queries at current time, time points in the past or future, or over durations ● predicates for querying time periods, often based on Allen’s interval relations
  22. 22. После NewSQL: temporal database
  23. 23. После NewSQL: temporal database
  24. 24. После NewSQL: temporal database SELECT * FROM Employee FOR SYSTEM_TIME BETWEEN '2014-01-01 00:00:00.0000000' AND '2015-01-01 00:00:00.0000000' WHERE EmployeeID = 1000 ORDER BY ValidFrom;
  25. 25. @kostja_osipov Konstantin Osipov Developer tarantool.org Вопросы? tarantooldb tarantool.orgkostja@tarantool.org
  26. 26. Ссылки ● https://developer.couchbase.com/documentation/server/current/developer-guide/query-consistency.html ● https://martinfowler.com/books/nosql.html ● http://jimwebber.org/2011/02/on-sharding-graph-databases/ ● https://docs.mongodb.com/manual/core/document-validation/ ● http://www.oreilly.com/pub/e/3847 ● https://www.oreilly.com/ideas/data-modeling-with-multi-model-databases ● https://redislabs.com/blog/redis-as-a-json-store/

×