Почемуэтоважно
•Обчитавшиеся рекламыруководителипредставляютсобойпроблему•Обчитавшиеся форумовичатиков инженерыпредставляютсобойещебольшуюпроблему
Почемуэтоважно
•Обчитавшиеся рекламыруководителипредставляютсобойпроблему•Обчитавщиеся форумовичатиков инженерыпредставляютсобойещебольшуюпроблему•NoSQL– мощноеиэффективноетехническоесредство,хотьипредъявляетповышенныетребованиякоквалификацииразработчиков
ЧтотакоеSQL
•Язык запросов AKAStructuredQueryLanguage•РСУБДAKARDBMS•Типизация•Таблицы•Связи AKAforeign keys
ЧтотакоеSQL
•Язык запросов AKAStructuredQueryLanguage•РСУБДAKARDBMS•Типизация•Таблицы•Связи AKAforeign keys
•Транзакции
ЧтотакоеSQL
•Язык запросов AKAStructuredQueryLanguage•РСУБДAKARDBMS•Типизация•Таблицы•Связи AKAforeign keys
•Транзакции•One server to rule them all
ТакчтожетакоеNoSQL
• Нетязыказапросов• Этополуправда!
• Нетжесткойтипизации• CREATE TABLE nosql (
key BIGINT,value BLOB
);
ТакчтожетакоеNoSQL
• Нетязыказапросов• Этополуправда!
• Нетжесткойтипизации• CREATE TABLE nosql (
key BIGINT,value BLOB
);• Norelations,всестроки– самипосебе• Денормализация какнормажизни
WhyNoSQLissexy
•Скорость•Возможностьстроитьраспределенныесистемы•Возможностьраспараллеливатьнагрузку
WhyNoSQLissexy
•Скорость•Возможностьстроитьраспределенныесистемы•Возможностьраспараллеливатьнагрузку•Возможностьжертвоватьконсистентностью
WhyNoSQLissexy
•Скорость•Возможностьстроитьраспределенныесистемы•Возможностьраспараллеливатьнагрузку•Возможностьжертвоватьконсистентностью
WhyNoSQLissexynotsomuch
• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!
WhyNoSQLissexynotsomuch
• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!
• Никакихсложныхзапросов• Дляраспределеннойсистемыониневозможны• Анераспределеннаяненужна
WhyNoSQLissexynotsomuch
• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!
• Никакихсложныхзапросов• Дляраспределеннойсистемыониневозможны• Анераспределеннаяненужна
• Сомнительнаяподдержкавторичныхиндексов• Эточрезвычайноважно
WhyNoSQLissexynotsomuch
• Никакихтранзакций• ACID- транзакциизаявлены,нораспространяютсяонинаобновлениеоднойстроки!
• Никакихсложныхзапросов• Дляраспределеннойсистемыониневозможны• Анераспределеннаяненужна
• Сомнительнаяподдержкавторичныхиндексов• Эточрезвычайноважно
• Никакихсвязей• Денормализация какнормажизни• Исканпоresultset
Основыпроектированиясистемсиспользованием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•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью
ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью•Высокиетребованиякдоступностиданных
ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью•Высокиетребованиякдоступностиданных•Высокиетребованиякlatency
ОсновыпроектированиясистемсиспользованиемNoSQL•Когдаточнонадовнедрять:•Большойdataset снизкойсвязанностью•Высокиетребованиякдоступностиданных•Высокиетребованиякlatency•Высокаявероятностьнеобходимостипостоянногорасширениякластера•Какнистарайся,аРСУБДшардируется плохо
ОсновывнедренияNoSQL
• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь•Нуразвечтовампростонравитсяидея
ОсновывнедренияNoSQL
• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь•Нуразвечтовампростонравитсяидея• Сказотом,какпрограммистАлександрборолсязасвободусамовыражения,иобиспользованииAnemometerкакинструментасвободоподавления
ОсновывнедренияNoSQL
• “MySQL тожеNoSQL”AKA“PostgreSQL тожеNoSQL”•Неведитесь•Нуразвечтовампростонравитсяидея• Сказотом,какпрограммистАлександрборолсязасвободусамовыражения,иобиспользованииAnemometerкакинструментасвободоподавления• РСУБДзахватилимирнепонашейтупости,апотому,чтоэтапарадигманаиболеегибкаяизизвестных
ОсновывнедренияNoSQL
• In-memory,однаnode•Возьмитеmemcache•Хотитеперсистентности - возьмитеTarantool
ОсновывнедренияNoSQL
• In-memory,однаnode•Возьмитеmemcache•Хотитеперсистентности - возьмитеTarantool•Давозьмитечтоугодно- результатнеизменится
ОсновывнедренияNoSQL
• In-memory,однаnode•Возьмитеmemcache•Хотитеперсистентности - возьмитеTarantool•Давозьмитечтоугодно- результатнеизменится•Дажеирепликациюможетевключить•Сможетемасштабироватьчтение
ОсновывнедренияNoSQL
• In-memory,несколько нод,replicationfactor1•Возьмите memcache•Потому,что вам ничто не поможет
Основывнедрения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хранилищ•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 длябольшихобъемовданных
Немногопрактическогоопыта
•Aerospike: ложкадегтя,илисказоГригориидевопсе и15minutespoweroutage•НенадоиспользоватьAerospike длябольшихобъемовданных•АещеуAerospike оченьмедленноеобновлениевторичныхиндексов
Немногопрактическогоопыта
• 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•Дисковый cacheна SSD- наше все
Немногопрактическогоопыта
•Cassandra:ложкадегтя,илисказоКонстантинедевопсе и100%diskutilisation•Дисковый cacheна SSD- наше все•NoGUIforversion3yet
Итого
• ЕслиестьшансобойтисьбезNoSQL –обойдитесьбезнего•Личноемнениедокладчика,конечноже
• Еслишансанет- выберитеправильныйпродукт•НевсеNoSQL базыполезныодинаково
Итого
• ЕслиестьшансобойтисьбезNoSQL –обойдитесьбезнего•Личноемнениедокладчика,конечноже
• Еслишансанет- выберитеправильныйпродукт•НевсеNoSQL базыполезныодинаково
• ЕсливашпаттернляжетнапарадигмуNoSQLхорошо- результатыбудутсущественнолучше,чемприиспользованииРСУБД