SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
Шаблоны структур данных  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

Weitere ähnliche Inhalte

Was ist angesagt?

Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Ontico
 
Андрей Дроздов "Создание высокопроизводительных 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
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Badoo Development
 
Типичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.jsТипичный стек технологий для использования с Node.js
Типичный стек технологий для использования с Node.js
Serge Shirokov
 

Was ist angesagt? (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 - Многопоточное программирование в языке С++. Р...
 

Andere mochten auch

ночью через лес 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
 
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Ontico
 

Andere mochten auch (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...
 

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

SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кодаSECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
Конференция разработчиков программного обеспечения SECON'2014
 
презентация лекции №9
презентация лекции №9презентация лекции №9
презентация лекции №9
student_kai
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
Technopark
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Ontico
 

Ähnlich wie Паттерны и примеры структур данных в 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 фреймворк для обработк...
 

Mehr von Alexandre Kalendarev

Mehr von 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
 

Kürzlich hochgeladen

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 

Kürzlich hochgeladen (9)

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 

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