ݺߣ

ݺߣShare a Scribd company logo
Шаблоныструктурданных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 (20)

Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
Badoo 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 particularities
mcroitor
контейнеры STL
контейнеры STLконтейнеры STL
контейнеры STL
mcroitor
"Почему язык 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– есть ли жизнь после Java
Olim Saidov
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
Alexey Paznikov
file handling in c
file handling in cfile handling in c
file handling in c
Maxim Shaptala
Типичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.jsТипичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.js
Serge Shirokov
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
Alexey Paznikov
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
Alexey Paznikov
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
Badoo 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 particularities
mcroitor
контейнеры STL
контейнеры STLконтейнеры STL
контейнеры STL
mcroitor
"Почему язык 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– есть ли жизнь после Java
Olim 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.js
Serge Shirokov
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
Alexey Paznikov
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
Alexey Paznikov

Viewers also liked (8)

Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
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 DB"
"Обзор Tarantool DB""Обзор Tarantool DB"
"Обзор Tarantool DB"
Badoo Development
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Ontico
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Ontico
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
Alex Polorotov
ночью через лес 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

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. Сравнение во...
DevDay
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кодаSECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
Конференция разработчиков программного обеспечения SECON'2014
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
Yandex
Семинар 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 explanations
evamariiagure
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
Vladimir Parfinenko
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
Mikhail Kurnosov
презентация лекции №9
презентация лекции №9презентация лекции №9
презентация лекции №9
student_kai
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
Python Meetup
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
Pavel Egorov
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Platonov Sergey
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
Technopark
Лекция 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 Blocks
Mikhail 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
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 и Python
Yandex
Семинар 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 explanations
evamariiagure
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
Vladimir Parfinenko
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
Mikhail Kurnosov
презентация лекции №9
презентация лекции №9презентация лекции №9
презентация лекции №9
student_kai
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
Python Meetup
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
Pavel Egorov
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Platonov Sergey
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
Technopark
Лекция 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 Blocks
Mikhail 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

More from Alexandre Kalendarev (6)

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

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