SlideShare a Scribd company logo
1 of 41
Download to read offline
Шаблоны структур данных  NoSQL
     на примере  Tarantool


                    Александр Календарёв
 План
  Коротко паттернах 

  Структуры данных в Tarantool

  РНР Интерфейс  

  Реализация Паттернов данных 

  Масштабирование
Виды паттернов
   Системной архитектуры

  Кодирования

  Структур данных (РСУБД)   

  Паттерны данных NoSQL
Структура данных Tarantool

                                 Namespace 0
             I        I      I
             N        N      N
             D        D      D
             E        E      E
             X        X      X

     Tuple    0        1      2
         Field 0   Field 1   Field 2   . . .Field N
Структура данных Tarantool
  Namespace (Пространство имен) 

  Tuple (Кортеж)

   Field (Поле)

  Index (Индекс)
Аналог структур данных


  Namespace -   Таблица  РСУБД

  Field – Колонка (столбец) РСУБД
Структура данных Tarantool
Типы полей

     Num 

    Num64

     String
Структура данных Tarantool
Типы  индексов


    Hash / Tree 


    Простой / Составной
Операции в Tarantool
  INSERT

  SELECT

  UPDATE 

  DELETE
PHP  интерфейс ‐ Конструктор               
Tarantool

$tnt = new Tarantool($host,$port,$admPort);

$host – хост (def: localhost);
$port – порт (def: 33013);

$admPort – административный порт (33015).
PHP  интерфейс ‐  INSERT               
Tarantool

define( ‘NS’,0); 
 
        // номер namespace
$tnt = new Tarantool();
$tuple = array(12345,‘spb’,’Hello Word’);
$res = $tnt->insert(NS, $tuple);
Если данные существуют – они замещаются
Возвращается результат true- успех / false...
PHP  интерфейс ‐  DELETE               
Tarantool

$tnt = new Tarantool();
$res = $tnt->delete(NS, $key, [$flag]);
1)Удаление всегда по первичному ключу
2) $flag = true – возвращать данные (def: $flag = false)
Возвращает: true/false – результат операции 
или данные (массив) если $flag = true
PHP  интерфейс ‐  UPDATE               
 Tarantool

$tnt = new Tarantool();
$data = array(1=>’msk’, 2=> ‘Hello Hi++!’);
$res = $tnt->update(NS, $key, $data);
1)$key – всегда первичный ключ 
2) $data –  асс. массив № поля =>  нов. значение
Возвращает результат операции : true=успех/false...
PHP  интерфейс ‐  INC (update)               
 Tarantool
$tnt = new Tarantool();
$res = $tnt->inc(NS, $key, $fieldNo, [$delta, $flag]);
1)$key – всегда первичный ключ; 
2) $fieldNo – номер инкременитируемого поля тип Num;
3) $delta – инкрементируемое значение (def: $delta = 1); 
4) $flag = true – возвращать данные (def: $flag = false);
Возвращает результат операции : true=успех/false ...
или новые данные если $flag = true
PHP  интерфейс ‐  SELECT 
 Tarantool
$tnt = new Tarantool();
$count = $tnt->select(NS, $indexNo, $key,[ $limit, $offset]);
1)$key – ключ, если используем составной то массив; 
2) $indexNo – номер индексного поля, по которому
  осуществляется выборка;
3) def: $limit = хFFFFFFFF; ,def: $offset = 0; 
Возвращает: кол-во найденных кортежей,
Выборка данных осуществляется методом getTuple();
PHP  интерфейс ‐  MSELECT  
  Tarantool                            множественный выбор
Является аналогом mget($keys) в memcache
или: SELECT * FROM t0 WHERE key IN ($keyList); 
$count = $tnt->mselect(NS, $indexNo, $keys,[ $limit, $offset]);
1)$keys –массив ключей; 
2) $indexNo – номер индексного поля, осуществляется выборка;
3) $limi , $offset – аналог метода select(); 
Возвращает: кол-во найденных кортежей, false- ошибка
Выборка данных осуществляется методом getTuple();
PHP  интерфейс – прочие методы  
 Tarantool

getTuple() – возвращает данные методов 
    
 
           select() и mselect();

getError() – описание ошибки последней операции

getConf() – конфигурационный файл сервера

getInfo() – переменные сервера

getStat() – информация по статистики сервера
Паттерн: справочник
   Field 0 , Primary index (PK)=0   Field1 = Name
   11-22-33-44                      Маня
   11-22-33-55                      Ваня
   11-22-33-66                      Таня


Аналог key/value
Доступ осуществляется по первичному ключу;
Возвращается один кортеж;
SQL аналог:
SELECT * FROM T0 WHERE key0=$key
Паттерн: справочник  
 реализация
define(‘PK’, 0);
$key = ’11-22-33-44’;
$res = $tnt->select(NS,PK, $key);
if($res===false) 

 echo $tnt->getError();
else 

 print_r( $tnt->getTuple());
Паттерн: обратный справочник
   Field 0 , Primary index (PK)=0   Field1 = Name
                                    INDEX 1
   11-22-33-44                      Маня
   11-22-33-55                      Ваня
   11-22-33-66                      Таня

Доступ осуществляется по вторичному ключу;
Возвращается массив кортежей;
SQL аналог:
SELECT * FROM T0 WHERE key1=$key
Паттерн: обратный справочник 
реализация
define(‘IDX_NAME’, 1);
$key = ’Маня’;
$res = $tnt->select(NS, IDX_NAME, $key);
if($res===false) 

 echo $tnt->getError();
else 

 print_r( $tnt->getTuple());
Паттерн: справочник с разделами 
 поиск по одному разделу
   Field 0, Primary index   Field1 = Name   Field2 = City 
   INDEX=0 (PK)                             INDEX=2
   11-22-33-44              Маня            SPB
   11-22-33-55              Ваня            MSK
   11-22-33-66              Таня            SPB

Представляет денормолизованное отношение 
Один ко Многим
Cтроится индекс по разделу
Доступ осуществляется по вторичному ключу;
SQL аналог:
SELECT * FROM T0 WHERE key1=$key
Паттерн: справочник с разделами 
 реализация
define(‘IDX_CITY’, 2);
$key = ’SPB’;
$res = $tnt->select(NS, IDX_CITY, $key);
if($res===false) 

 echo $tnt->getError();
else 

 print_r( $tnt->getTuple());
Паттерн: справочник с разделами 
 выборка по нескольким разделам
   Field 0, Primary   Field1 = Name   Field2 = City   Field3=Sex
   index                              (INDEX=3)       INDEX=3
   (PK)=0
   11-22-33-44        Маня            SPB             Ж
   11-22-33-55        Ваня            MSK             M
   11-22-33-66        Таня            SPB             Ж
   11-22-33-77        Саня            SPB             M

Cтроится составной индекс по двум и более полям;
Доступ осуществляется по вторичному ключу;
SQL аналог:

SELECT * FROM T0 WHERE (Field2=$city AND Field3=$sex)
Паттерн: Матрица 

                          x    M
                                   Х
Матрица [M x N]

Po = (x,y)
                  y       Po
Key = y * M + x

                  N



                      Y
Паттерн: Матрица 
Задача: выбор области 
                           x        M
                                        Х


                                w

     y                     Po
                       р
                   h



    N



         Y
Паттерн: Матрица 
выбор области

$key = array();

for ($i=0; $i<W; $i++ )

 for ($j=0; $j<H; $j++ )


 
   $key[] = $P0 + I + j *M;

$tnt->mselect(NS, PK, $key);
Паттерн: Автоинкрементная таблица
  Field 0 (PK)   Field 1 = Phone   Field2 = Name

  1              11-22-33-44       Маня
  2              11-22-33-55       Ваня
  3              11-22-33-66       Таня
  4              Новая строка 

При каждой вставки увеличиваем PK на 1
Аналог Autoincrement в MySQL
или SEQUENCE
Паттерн: Автоинкрементная таблица 
реализация

define(NS_USER, 1); // номер namespace USER

define(INC_USER,1); // номер ключа счетчика

define(FD_COUNTER,1); // номер поля счетчика

$key = 

 $tnt->inc(NS, INC_USER, FD_COUNTER,1,true);

$tnt->insert(NS_USER, $key, $data);
Паттерн: Отношение многие ко многим 




Подход 1: создать Ns с двумя полями
использовать составной индекс

Подход 2: использовать первичный индекс num64
Первая часть слова user_id, вторая часть map_id
Паттерн: Многие ко многим 
реализация варианта 2

define(NS_USER_TO_MAP, 3);

$key= $user_id << 32 + $map_id
$res=$tnt->select(NS_USER_TO_MAP, PK,$key);
Паттерн: Очередь
                       PK
                       ...
                       Data 1
   Begin Pointer
                       Data 2
   End Pointer         Data 3



Принцип FIFO - Первый пришел, первый ушел
Реализуется через два указателя на начало и конец
 очереди
Паттерн: Очередь 
добавление в очередь

define(BEG_PTR, 4); // номер ключа Beg Pointer

$key= 

 $tnt->inc(NS, BEG_PTR, FD_COUNTER,1,true);

$tnt->insert(NS_USER, $data);
Паттерн: Очередь 
взятие из очереди

define(END_PTR, 5); // номер ключа End Pointer

$key= 

 $tnt->inc(NS, END_PTR, FD_COUNTER,-1,true);

$data = $tnt->delete(NS_USER, $key, true);
 Масштабирование
Принцип шардинга


                   0 ... 10М

    0 ... 10М

    10 ... 20М     10 ... 20М

    20 ... 30М

                   20 ... 30М
Реализация  шардинга Tarantool Proxy



                                       0 ... 10М Server 1



Application    Tarantool Proxy     10 ... 20М Server 2



                                   20 ... 30М Server 3
Tarantool Proxy


Представляет многопоточный демон,
 перенаправляющий запросы на Tarantool сервера.
Определение номера сервера:

•  По конфигу или

•  С помощью плагина
Tarantool Proxy: Операции с первичным ключом


                                         Server 1
•  INSERT

•  UPDATE
                       Tarantool Proxy   Server 2
•  DELETE

•  SELECT * BY PK
                                         Server 3
Tarantool Proxy: Операции со вторичным ключом



SELECT * FROM T1
                       Server 1

WHERE k1=…
                      Tarantool Proxy   Server 2




                                        Server 3
   Александр Календарёв
akalend@mail.ru

@akalend                 http://githab.com/akalend

http://akalend.habrahabr.ru/blog

More Related Content

What's hot

Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORMBadoo Development
 
стандартная библиотека с++: введение
стандартная библиотека с++: введениестандартная библиотека с++: введение
стандартная библиотека с++: введениеmcroitor
 
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)Ontico
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данныхmcroitor
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Tanya Denisyuk
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularitiesmcroitor
 
контейнеры STL
контейнеры STLконтейнеры STL
контейнеры STLmcroitor
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотекPyNSK
 
Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Alexandr Nox
 
Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияMichael Pankov
 
Clojure – есть ли жизнь после Java
Clojure – есть ли жизнь после JavaClojure – есть ли жизнь после Java
Clojure – есть ли жизнь после JavaOlim Saidov
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...Alexey Paznikov
 
Типичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.jsТипичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.jsSerge Shirokov
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...Alexey Paznikov
 

What's hot (20)

Ngs 2 0_0
Ngs 2 0_0Ngs 2 0_0
Ngs 2 0_0
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
 
стандартная библиотека с++: введение
стандартная библиотека с++: введениестандартная библиотека с++: введение
стандартная библиотека с++: введение
 
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данных
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
 
Ngs 2
Ngs 2Ngs 2
Ngs 2
 
контейнеры STL
контейнеры STLконтейнеры STL
контейнеры STL
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
 
Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.
 
Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего внимания
 
Clojure – есть ли жизнь после Java
Clojure – есть ли жизнь после JavaClojure – есть ли жизнь после Java
Clojure – есть ли жизнь после Java
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
file handling in c
file handling in cfile handling in c
file handling in c
 
Типичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.jsТипичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.js
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
 

Viewers also liked

Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данныхAlex Polorotov
 
шардинг на коленке
шардинг на коленкешардинг на коленке
шардинг на коленкеAlexandre Kalendarev
 
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...Daniel Podolsky
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
Денис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требованийДенис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требованийDenis Beskov
 
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...Ontico
 
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Ontico
 

Viewers also liked (8)

Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
 
шардинг на коленке
шардинг на коленкешардинг на коленке
шардинг на коленке
 
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Денис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требованийДенис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требований
 
"Обзор Tarantool DB"
"Обзор Tarantool DB""Обзор Tarantool DB"
"Обзор Tarantool DB"
 
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
 
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
 

Similar to Паттерны и примеры структур данных в NoSQL на примере Tarantool

SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...DevDay
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonYandex
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 
Hadoops MapReduce framework explanations
Hadoops MapReduce framework explanationsHadoops MapReduce framework explanations
Hadoops MapReduce framework explanationsevamariiagure
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиVladimir Parfinenko
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиMikhail Kurnosov
 
презентация лекции №9
презентация лекции №9презентация лекции №9
презентация лекции №9student_kai
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Technopark
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksMikhail Kurnosov
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
2.3 Указатели и массивы
2.3 Указатели и массивы2.3 Указатели и массивы
2.3 Указатели и массивыDEVTYPE
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Mikhail Kurnosov
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...Ontico
 

Similar to Паттерны и примеры структур данных в NoSQL на примере Tarantool (20)

SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
 
Algo 00
Algo 00Algo 00
Algo 00
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кодаSECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
Hadoops MapReduce framework explanations
Hadoops MapReduce framework explanationsHadoops MapReduce framework explanations
Hadoops MapReduce framework explanations
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
 
презентация лекции №9
презентация лекции №9презентация лекции №9
презентация лекции №9
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
2.3 Указатели и массивы
2.3 Указатели и массивы2.3 Указатели и массивы
2.3 Указатели и массивы
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
 

More from Alexandre Kalendarev

Очереди и блокировки
Очереди и блокировкиОчереди и блокировки
Очереди и блокировкиAlexandre Kalendarev
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеAlexandre Kalendarev
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 

More from Alexandre Kalendarev (6)

Рецепты RabbitMQ
Рецепты RabbitMQ Рецепты RabbitMQ
Рецепты RabbitMQ
 
Очереди и блокировки
Очереди и блокировкиОчереди и блокировки
Очереди и блокировки
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
PHP daemons into social games
PHP daemons into social gamesPHP daemons into social games
PHP daemons into social games
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
TreeDb key/value noSQL database
TreeDb key/value noSQL databaseTreeDb key/value noSQL database
TreeDb key/value noSQL database
 

Паттерны и примеры структур данных в NoSQL на примере Tarantool