Top Banner
Организация доступа к CAS Riak на языке Erlang Докладчики: П.К. Губин М.Г. Баженов
14

Access to CAS Riak with Erlang

Nov 12, 2014

Download

Technology

Kirill Krinkin

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Access to CAS Riak with Erlang

Организация доступа к CAS Riak на языке Erlang

Докладчики:П.К. Губин

М.Г. Баженов

Page 2: Access to CAS Riak with Erlang

Содержание

• Что такое Riak?• Структура Riak.• Организация хранения и доступа к файлам

в Riak.• Теорема CAP• Riak API, Erlang Clients

Page 3: Access to CAS Riak with Erlang

Что такое Riak?• Riak — это документно-ориентированная база данных. • Riak — это децентрализованное key-value хранилище данных, с

поддержкой стандартных операций — get, put и delete. • Riak — это распределенное, масштабируемое, отказоустойчивое

решение для хранения информации. • А так же Riak — это система с открытым исходным кодом и

поддержкой обращений с помощью HTTP, JSON и REST. • Ну и конечно Riak — это NoSQL.

Page 4: Access to CAS Riak with Erlang

Структура Riak.

Page 5: Access to CAS Riak with Erlang

Организация хранения и доступа к файлам в Riak.

Введем 3 термина:

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

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

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

Page 6: Access to CAS Riak with Erlang
Page 7: Access to CAS Riak with Erlang
Page 8: Access to CAS Riak with Erlang
Page 9: Access to CAS Riak with Erlang
Page 10: Access to CAS Riak with Erlang

Теорема CAP

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

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

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

• устойчивость к разделению (англ. partition tolerance)

Page 11: Access to CAS Riak with Erlang

Riak API, Erlang Clients

Riak имеет два API: • HTTP API • PBC API

Для доступа по этим протоколам существуют клиенты на языке Erlang, соответственно:• riak-erlang-http-client• riak-erlang-client

Page 12: Access to CAS Riak with Erlang

Riak API, Erlang Client %% create connectionIP = "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 objectBucket = <<"bar">>, Key = <<"foo">>, Data = <<"hello world">>,ContentType = <<"text/plain">>, Object0 = riakc_obj:new(Bucket, Key, Data, ContentType),rhc:put(C, Object0).

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

{ok,{riakc_obj,<<"bar">>,<<"foo">>, <<"hello world">>}}

Page 13: Access to CAS Riak with Erlang

Riak API, Erlang Client %% create connection{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087).{ok,<0.56.0>}

%% create objectObject = riakc_obj:new(<<"groceries">>, <<"mine">>, <<"eggs & bacon">>).{riakc_obj,<<"groceries">>,<<"mine">>, <<"eggs & bacon">>}

%% store objectriakc_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“>>}}

Page 14: Access to CAS Riak with Erlang

Подведем итог

Как мы убедились, Riak можно использовать для разработки высоконадежных, распределенных систем, идеален для создания облачных хранилищ и сервисов.