SlideShare a Scribd company logo
1 of 14
Организация доступа к
CAS Riak на языке Erlang




                   Докладчики:
                      П.К. Губин
                   М.Г. Баженов
Содержание
• Что такое Riak?
• Структура Riak.
• Организация хранения и доступа к файлам
  в Riak.
• Теорема CAP
• Riak API, Erlang Clients
Что такое Riak?
• Riak — это документно-ориентированная база данных.
• Riak — это децентрализованное key-value хранилище данных, с
  поддержкой стандартных операций — get, put и delete.
• Riak — это распределенное, масштабируемое, отказоустойчивое
  решение для хранения информации.
• А так же Riak — это система с открытым исходным кодом и
  поддержкой обращений с помощью HTTP, JSON и REST.
• Ну и конечно Riak — это NoSQL.
Структура Riak.
Организация хранения и доступа к
          файлам в Riak.
                   Введем 3 термина:

• N — это количество реплик каждого значения в
  хранилище.

• R — количество данных реплик для выполнения операции
  чтения.

• W — количество реплик необходимых для выполнения
  операции записи.
Теорема CAP
Теорема CAP (теорема Брюера) - утверждение о том, что в
любой реализации распределённых вычислений возможно
обеспечить не более двух из трёх следующих свойств:

• согласованность данных (англ. Consistency)

• доступность (англ. availability)

• устойчивость к разделению (англ. partition tolerance)
Riak API, Erlang Clients
Riak имеет два API:
• HTTP API
• PBC API

Для доступа по этим протоколам существуют клиенты на
языке Erlang, соответственно:
• riak-erlang-http-client
• riak-erlang-client
Riak API, Erlang Client
%% create connection
IP = "127.0.0.1“, Port = 8098, Prefix = "riak“, Options = [],
C = rhc:create(IP, Port, Prefix, Options).

{rhc,"10.0.0.42",80,"riak“,[{client_id,"ACoc4A=="}]}

          %% store object
          Bucket = <<"bar">>, Key = <<"foo">>, Data = <<"hello world">>,
          ContentType = <<"text/plain">>,
          Object0 = riakc_obj:new(Bucket, Key, Data, ContentType),
          rhc:put(C, Object0).

          Ok                     %% retrieve object
                                 Bucket = <<"bar">>, Key = <<"foo">>,
                                 {ok, Object1} = rhc:get(C, Bucket, Key).

                                 {ok,{riakc_obj,<<"bar">>,<<"foo">>, <<"hello world">>}}
Riak API, Erlang Client
%% create connection
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087).
{ok,<0.56.0>}
                    %% create object
                    Object = riakc_obj:new(<<"groceries">>, <<"mine">>, <<"eggs
                    & bacon">>).
                    {riakc_obj,<<"groceries">>,<<"mine">>, <<"eggs & bacon">>}
     %% store object
     riakc_pb_socket:put(Pid, Object).
     Ok
            %% retrieve object
            {ok, Object 1} = riakc_pb_socket:get(Pid, <<"groceries">>, <<"mine">>).
            {ok,{riakc_obj,<<"groceries">>,<<"mine">>, <<"eggs & bacon“>>}}
Подведем итог
Как мы убедились, Riak можно использовать для
разработки высоконадежных, распределенных систем,
идеален для создания облачных хранилищ и сервисов.

More Related Content

Viewers also liked

Porting smart m3 to the MeeGo
Porting smart m3 to the MeeGoPorting smart m3 to the MeeGo
Porting smart m3 to the MeeGo
OSLL
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhova
OSLL
 
Lbs for transport monitoring based on geo2tag
Lbs for transport monitoring based on geo2tagLbs for transport monitoring based on geo2tag
Lbs for transport monitoring based on geo2tag
OSLL
 
Doctor search service with Geo2tag, Bezyazychnyy, Krinkin
Doctor search service with Geo2tag, Bezyazychnyy, Krinkin Doctor search service with Geo2tag, Bezyazychnyy, Krinkin
Doctor search service with Geo2tag, Bezyazychnyy, Krinkin
OSLL
 
Geo2tag performance evaluation, Zaslavsky, Krinkin
Geo2tag performance evaluation, Zaslavsky, Krinkin Geo2tag performance evaluation, Zaslavsky, Krinkin
Geo2tag performance evaluation, Zaslavsky, Krinkin
OSLL
 
Smart-m3 Security Model
Smart-m3 Security Model Smart-m3 Security Model
Smart-m3 Security Model
OSLL
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video
OSLL
 

Viewers also liked (20)

Na opening photos acrobat
Na opening photos acrobatNa opening photos acrobat
Na opening photos acrobat
 
Na word
Na wordNa word
Na word
 
NA_EXER_LAYER_MASK_COMP
NA_EXER_LAYER_MASK_COMPNA_EXER_LAYER_MASK_COMP
NA_EXER_LAYER_MASK_COMP
 
Exer mask 2_filter_variation
Exer mask 2_filter_variationExer mask 2_filter_variation
Exer mask 2_filter_variation
 
A crise de 1929 prof nélia-2016
A crise de 1929 prof nélia-2016A crise de 1929 prof nélia-2016
A crise de 1929 prof nélia-2016
 
Porting smart m3 to the MeeGo
Porting smart m3 to the MeeGoPorting smart m3 to the MeeGo
Porting smart m3 to the MeeGo
 
Reinos africanos
Reinos africanosReinos africanos
Reinos africanos
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhova
 
Slidesharepresentation introphoto
Slidesharepresentation introphotoSlidesharepresentation introphoto
Slidesharepresentation introphoto
 
Na bridge pdf
Na bridge pdfNa bridge pdf
Na bridge pdf
 
Lbs for transport monitoring based on geo2tag
Lbs for transport monitoring based on geo2tagLbs for transport monitoring based on geo2tag
Lbs for transport monitoring based on geo2tag
 
Na pp
Na ppNa pp
Na pp
 
Doctor search service with Geo2tag, Bezyazychnyy, Krinkin
Doctor search service with Geo2tag, Bezyazychnyy, Krinkin Doctor search service with Geo2tag, Bezyazychnyy, Krinkin
Doctor search service with Geo2tag, Bezyazychnyy, Krinkin
 
Catalogo de conceptos clinica.xlsx
Catalogo de conceptos clinica.xlsxCatalogo de conceptos clinica.xlsx
Catalogo de conceptos clinica.xlsx
 
Geo2tag performance evaluation, Zaslavsky, Krinkin
Geo2tag performance evaluation, Zaslavsky, Krinkin Geo2tag performance evaluation, Zaslavsky, Krinkin
Geo2tag performance evaluation, Zaslavsky, Krinkin
 
Smart-m3 Security Model
Smart-m3 Security Model Smart-m3 Security Model
Smart-m3 Security Model
 
Exer._Mask_Variations
Exer._Mask_VariationsExer._Mask_Variations
Exer._Mask_Variations
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-training
 
Governo rodrigues alves
Governo rodrigues alvesGoverno rodrigues alves
Governo rodrigues alves
 

Similar to Access to CAS Riak with Erlang

CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Magneta AI
 

Similar to Access to CAS Riak with Erlang (15)

SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
 
Хватит писать инфраструктурный код
Хватит писать инфраструктурный кодХватит писать инфраструктурный код
Хватит писать инфраструктурный код
 
Vba 07
Vba 07Vba 07
Vba 07
 
Scorex framework
Scorex frameworkScorex framework
Scorex framework
 
Vsevolod Rodionov "Neural networks in js"
Vsevolod Rodionov "Neural networks in js"Vsevolod Rodionov "Neural networks in js"
Vsevolod Rodionov "Neural networks in js"
 
Нейронные сети на JS
Нейронные сети на JSНейронные сети на JS
Нейронные сети на JS
 
Реактивный двигатель для вашего Android-приложения — Матвей Мальков, 2ГИС
Реактивный двигатель для вашего Android-приложения — Матвей Мальков, 2ГИСРеактивный двигатель для вашего Android-приложения — Матвей Мальков, 2ГИС
Реактивный двигатель для вашего Android-приложения — Матвей Мальков, 2ГИС
 
Реактивный двигатель вашего Android приложения
Реактивный двигатель вашего Android приложенияРеактивный двигатель вашего Android приложения
Реактивный двигатель вашего Android приложения
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
Rambler.iOS #2: Введение в RestKit
Rambler.iOS #2: Введение в RestKitRambler.iOS #2: Введение в RestKit
Rambler.iOS #2: Введение в RestKit
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
«Построение Read Model-ей с использованием потоков событий» — Денис Иванов, 2ГИС
«Построение Read Model-ей с использованием потоков событий» — Денис Иванов, 2ГИС«Построение Read Model-ей с использованием потоков событий» — Денис Иванов, 2ГИС
«Построение Read Model-ей с использованием потоков событий» — Денис Иванов, 2ГИС
 

More from OSLL

More from OSLL (20)

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROS
 
Студентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеСтудентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работе
 
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
 
MOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationMOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern Education
 
Работа с геоданными в MongoDb
Работа с геоданными в MongoDbРабота с геоданными в MongoDb
Работа с геоданными в MongoDb
 
Testing with Selenium
Testing with SeleniumTesting with Selenium
Testing with Selenium
 
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagImplementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2Tag
 
[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool
 
Block-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraBlock-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contra
 
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFS
 
Обзор Btrfs
Обзор BtrfsОбзор Btrfs
Обзор Btrfs
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
 
Обзор Linux Control Groups
Обзор Linux Control GroupsОбзор Linux Control Groups
Обзор Linux Control Groups
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROS
 
Пространства имен Linux (linux namespaces)
Пространства имен Linux (linux namespaces)Пространства имен Linux (linux namespaces)
Пространства имен Linux (linux namespaces)
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersVirtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
 

Access to CAS Riak with Erlang

  • 1. Организация доступа к CAS Riak на языке Erlang Докладчики: П.К. Губин М.Г. Баженов
  • 2. Содержание • Что такое Riak? • Структура Riak. • Организация хранения и доступа к файлам в Riak. • Теорема CAP • Riak API, Erlang Clients
  • 3. Что такое Riak? • Riak — это документно-ориентированная база данных. • Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete. • Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации. • А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST. • Ну и конечно Riak — это NoSQL.
  • 5. Организация хранения и доступа к файлам в Riak. Введем 3 термина: • N — это количество реплик каждого значения в хранилище. • R — количество данных реплик для выполнения операции чтения. • W — количество реплик необходимых для выполнения операции записи.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Теорема CAP Теорема CAP (теорема Брюера) - утверждение о том, что в любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств: • согласованность данных (англ. Consistency) • доступность (англ. availability) • устойчивость к разделению (англ. partition tolerance)
  • 11. Riak API, Erlang Clients Riak имеет два API: • HTTP API • PBC API Для доступа по этим протоколам существуют клиенты на языке Erlang, соответственно: • riak-erlang-http-client • riak-erlang-client
  • 12. Riak API, Erlang Client %% create connection IP = "127.0.0.1“, Port = 8098, Prefix = "riak“, Options = [], C = rhc:create(IP, Port, Prefix, Options). {rhc,"10.0.0.42",80,"riak“,[{client_id,"ACoc4A=="}]} %% store object Bucket = <<"bar">>, Key = <<"foo">>, Data = <<"hello world">>, ContentType = <<"text/plain">>, Object0 = riakc_obj:new(Bucket, Key, Data, ContentType), rhc:put(C, Object0). Ok %% retrieve object Bucket = <<"bar">>, Key = <<"foo">>, {ok, Object1} = rhc:get(C, Bucket, Key). {ok,{riakc_obj,<<"bar">>,<<"foo">>, <<"hello world">>}}
  • 13. Riak API, Erlang Client %% create connection {ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087). {ok,<0.56.0>} %% create object Object = riakc_obj:new(<<"groceries">>, <<"mine">>, <<"eggs & bacon">>). {riakc_obj,<<"groceries">>,<<"mine">>, <<"eggs & bacon">>} %% store object riakc_pb_socket:put(Pid, Object). Ok %% retrieve object {ok, Object 1} = riakc_pb_socket:get(Pid, <<"groceries">>, <<"mine">>). {ok,{riakc_obj,<<"groceries">>,<<"mine">>, <<"eggs & bacon“>>}}
  • 14. Подведем итог Как мы убедились, Riak можно использовать для разработки высоконадежных, распределенных систем, идеален для создания облачных хранилищ и сервисов.