nosql - неспроста ли это ЖЖЖ / Даниил Подольский (incaller.org)

81
NoSQL — неспроста ли это "ЖЖЖ"? Даниил Подольский CTO inCaller.org

Upload: ontico

Post on 16-Apr-2017

657 views

Category:

Engineering


3 download

TRANSCRIPT

NoSQL — неспросталиэто"ЖЖЖ"?ДаниилПодольскийCTOinCaller.org

Почемуэтоважно

•Обчитавшиеся рекламыруководителипредставляютсобойпроблему

Почемуэтоважно

•Обчитавшиеся рекламыруководителипредставляютсобойпроблему•Обчитавшиеся форумовичатиков инженерыпредставляютсобойещебольшуюпроблему

Почемуэтоважно

•Обчитавшиеся рекламыруководителипредставляютсобойпроблему•Обчитавщиеся форумовичатиков инженерыпредставляютсобойещебольшуюпроблему•NoSQL– мощноеиэффективноетехническоесредство,хотьипредъявляетповышенныетребованиякоквалификацииразработчиков

ЧтотакоеNoSQL

ЧтотакоеNoSQL?АчтотакоеSQL?

ЧтотакоеSQL

•Язык запросов AKAStructuredQueryLanguage

ЧтотакоеSQL

•Язык запросов AKAStructuredQueryLanguage•РСУБДAKARDBMS•Типизация•Таблицы•Связи AKAforeign keys

ЧтотакоеSQL

•Язык запросов AKAStructuredQueryLanguage•РСУБДAKARDBMS•Типизация•Таблицы•Связи AKAforeign keys

•Транзакции

ЧтотакоеSQL

•Язык запросов AKAStructuredQueryLanguage•РСУБДAKARDBMS•Типизация•Таблицы•Связи AKAforeign keys

•Транзакции•One server to rule them all

ТакчтожетакоеNoSQL

• Нетязыказапросов• Этополуправда!

ТакчтожетакоеNoSQL

• Нетязыказапросов• Этополуправда!

• Нетжесткойтипизации• CREATE TABLE nosql (

key BIGINT,value BLOB

);

ТакчтожетакоеNoSQL

• Нетязыказапросов• Этополуправда!

• Нетжесткойтипизации• CREATE TABLE nosql (

key BIGINT,value BLOB

);• Norelations,всестроки– самипосебе• Денормализация какнормажизни

ТакчтожетакоеNoSQL

•ВсевышеперечисленноепозволяетNoSQLбытьбыстрееSQL

ТакчтожетакоеNoSQL

•ВсевышеперечисленноепозволяетNoSQLбытьбыстрееSQL•Иэтодажеправда

ТакчтожетакоеNoSQL

•ВсевышеперечисленноепозволяетNoSQLбытьбыстрееSQL•Иэтодажеправда•Местами!

WhyNoSQLissexy

•Скорость

WhyNoSQLissexy

•Скорость•Возможностьстроитьраспределенныесистемы

WhyNoSQLissexy

•Скорость•Возможностьстроитьраспределенныесистемы•Возможностьраспараллеливатьнагрузку

WhyNoSQLissexy

•Скорость•Возможностьстроитьраспределенныесистемы•Возможностьраспараллеливатьнагрузку•Возможностьжертвоватьконсистентностью

WhyNoSQLissexy

•Скорость•Возможностьстроитьраспределенныесистемы•Возможностьраспараллеливатьнагрузку•Возможностьжертвоватьконсистентностью

WhyNoSQLissexynotsomuch

• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!

WhyNoSQLissexynotsomuch

• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!

• Никакихсложныхзапросов• Дляраспределеннойсистемыониневозможны• Анераспределеннаяненужна

WhyNoSQLissexynotsomuch

• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!

• Никакихсложныхзапросов• Дляраспределеннойсистемыониневозможны• Анераспределеннаяненужна

• Сомнительнаяподдержкавторичныхиндексов• Эточрезвычайноважно

WhyNoSQLissexynotsomuch

• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!

• Никакихсложныхзапросов• Дляраспределеннойсистемыониневозможны• Анераспределеннаяненужна

• Сомнительнаяподдержкавторичныхиндексов• Эточрезвычайноважно

• Никакихсвязей• Денормализация какнормажизни• Исканпоresultset

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадообойтись без

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадообойтись без:•Маленькийdataset

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадообойтись без:•Маленькийdataset•99%read1%write

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадообойтись без:•Маленькийdataset•99%read1%write•Низкиетребованиякпроизводительности•Низкие- этоменьше100KUps

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадообойтись без:•Маленькийdataset•99%read1%write•Низкиетребованиякпроизводительности•Низкие- этоменьше100KUps•Высокиетребованиякконсистентности•NoSQL базанеконсистентна никогда!

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадообойтись без:•Маленькийdataset•99%read1%write•Низкиетребованиякпроизводительности•Низкие- этоменьше100KUps•Высокиетребованиякконсистентности•NoSQL базанеконсистентна никогда!

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью•Высокиетребованиякдоступностиданных

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью•Высокиетребованиякдоступностиданных•Высокиетребованиякlatency

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью•Высокиетребованиякдоступностиданных•Высокиетребованиякlatency•Высокаявероятностьнеобходимостипостоянногорасширениякластера•Какнистарайся,аРСУБДшардируется плохо

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаможнопопробовать

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаможнопопробовать•Никогда!

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаможнопопробовать•Никогда!

ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаможнопопробовать•Никогда!•Этокаксженитьбой…

ОсновывнедренияNoSQL

• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”

ОсновывнедренияNoSQL

• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь

ОсновывнедренияNoSQL

• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь•Нуразвечтовампростонравитсяидея

ОсновывнедренияNoSQL

• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь•Нуразвечтовампростонравитсяидея• Сказотом,какпрограммистАлександрборолсязасвободусамовыражения,иобиспользованииAnemometerкакинструментасвободоподавления

ОсновывнедренияNoSQL

• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь•Нуразвечтовампростонравитсяидея• Сказотом,какпрограммистАлександрборолсязасвободусамовыражения,иобиспользованииAnemometerкакинструментасвободоподавления• РСУБДзахватилимирнепонашейтупости,апотому,чтоэтапарадигманаиболеегибкаяизизвестных

ОсновывнедренияNoSQL

• In-memory,однаnode

ОсновывнедренияNoSQL

• In-memory,однаnode•Возьмитеmemcache

ОсновывнедренияNoSQL

• In-memory,однаnode•Возьмитеmemcache•Хотитеперсистентности - возьмитеTarantool

ОсновывнедренияNoSQL

• In-memory,однаnode•Возьмитеmemcache•Хотитеперсистентности - возьмитеTarantool•Давозьмитечтоугодно- результатнеизменится

ОсновывнедренияNoSQL

• In-memory,однаnode•Возьмитеmemcache•Хотитеперсистентности - возьмитеTarantool•Давозьмитечтоугодно- результатнеизменится•Дажеирепликациюможетевключить•Сможетемасштабироватьчтение

ОсновывнедренияNoSQL

• In-memory,несколько нод,replicationfactor1

ОсновывнедренияNoSQL

• In-memory,несколько нод,replicationfactor1•Возьмите memcache

ОсновывнедренияNoSQL

• In-memory,несколько нод,replicationfactor1•Возьмите memcache•Потому,что вам ничто не поможет

ОсновывнедренияNoSQL

•Несколько нод,replicationfactor>1

ОсновывнедренияNoSQL

•Несколько нод,replicationfactor>1•Вот тут,собственно,и начинается NoSQL

ОсновывнедренияNoSQL

•Несколько нод,replicationfactor>1•Вот тут,собственно,и начинается NoSQL•Write-optimizedи read-optimized•Что это

ОсновывнедренияNoSQL

•Несколько нод,replicationfactor>1•Вот тут,собственно,и начинается NoSQL•Write-optimizedи read-optimized•Что это•Почему это важно

ОсновывнедренияNoSQL

•Несколько нод,replicationfactor>1•Вот тут,собственно,и начинается NoSQL•Write-optimizedи read-optimized•Что это•Почему это важно•Почему нельзя сделать both-optimized

ОсновывнедренияNoSQL

•Несколько нод,replicationfactor>1•Вот тут,собственно,и начинается NoSQL•Write-optimizedи read-optimized•Что это•Почему это важно•Почему нельзя сделать both-optimized

•Репликация,ребалансинг,восстановление целостности

Немногопрактическогоопыта

• Aerospikeкак яркий представитель read-optimizedkey-valueхранилищ

Немногопрактическогоопыта

• Aerospikeкак яркий представитель read-optimizedkey-valueхранилищ•OpenSource с 2014года

Немногопрактическогоопыта

• Aerospikeкак яркий представитель read-optimizedkey-valueхранилищ•OpenSource с 2014года• Прекрасный GUIконтроля состояния кластера

Немногопрактическогоопыта

• Aerospikeкак яркий представитель read-optimizedkey-valueхранилищ•OpenSource с 2014года• Прекрасный GUIконтроля состояния кластера•Отлично работающие ребалансинг и восстановление

Немногопрактическогоопыта

• Aerospikeкак яркий представитель read-optimizedkey-valueхранилищ•OpenSource с 2014года• Прекрасный GUIконтроля состояния кластера•Отлично работающие ребалансинг и восстановление• Индексы всегда в памяти,данные возможно впамяти

Немногопрактическогоопыта

• Aerospikeкак яркий представитель read-optimizedkey-valueхранилищ•OpenSource с 2014года• Прекрасный GUIконтроля состояния кластера•Отлично работающие ребалансинг и восстановление• Индексы всегда в памяти,данные возможно впамяти• Достаточная производительность:150KUps,400KRpsна кластере из 4-хнод

Немногопрактическогоопыта

•Aerospike: ложкадегтя,илисказоГригориидевопсе и15minutespoweroutage

Немногопрактическогоопыта

•Aerospike: ложкадегтя,илисказоГригориидевопсе и15minutespoweroutage•НенадоиспользоватьAerospike длябольшихобъемовданных

Немногопрактическогоопыта

•Aerospike: ложкадегтя,илисказоГригориидевопсе и15minutespoweroutage•НенадоиспользоватьAerospike длябольшихобъемовданных•АещеуAerospike оченьмедленноеобновлениевторичныхиндексов

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД• OpenSource

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД• OpenSource• Написана на Java

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД• OpenSource• Написана на Java• Индексы хранятся на диске

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД• OpenSource• Написана на Java• Индексы хранятся на диске• Вторичные индексы обновляются быстро

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД• OpenSource• Написана на Java• Индексы хранятся на диске• Вторичные индексы обновляются быстро• Работающие средства восстановления целостности иребалансинга

Немногопрактическогоопыта

• Cassandraкак яркий представитель write-optimizedNoSQLСУБД• OpenSource• Написана на Java• Индексы хранятся на диске• Вторичные индексы обновляются быстро• Работающие средства восстановления целостности иребалансинга•Mmaped files

Немногопрактическогоопыта

•Cassandra:ложкадегтя,илисказоКонстантинедевопсе и100%diskutilisation

Немногопрактическогоопыта

•Cassandra:ложкадегтя,илисказоКонстантинедевопсе и100%diskutilisation•Дисковый cacheна SSD- наше все

Немногопрактическогоопыта

•Cassandra:ложкадегтя,илисказоКонстантинедевопсе и100%diskutilisation•Дисковый cacheна SSD- наше все•NoGUIforversion3yet

Итого

• ЕслиестьшансобойтисьбезNoSQL –обойдитесьбезнего•Личноемнениедокладчика,конечноже

Итого

• ЕслиестьшансобойтисьбезNoSQL –обойдитесьбезнего•Личноемнениедокладчика,конечноже

• Еслишансанет- выберитеправильныйпродукт•НевсеNoSQL базыполезныодинаково

Итого

• ЕслиестьшансобойтисьбезNoSQL –обойдитесьбезнего•Личноемнениедокладчика,конечноже

• Еслишансанет- выберитеправильныйпродукт•НевсеNoSQL базыполезныодинаково

• ЕсливашпаттернляжетнапарадигмуNoSQLхорошо- результатыбудутсущественнолучше,чемприиспользованииРСУБД

Вопросы?