Access to CAS Riak with Erlang

384 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
384
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Access to CAS Riak with Erlang

  1. 1. Организация доступа кCAS Riak на языке Erlang Докладчики: П.К. Губин М.Г. Баженов
  2. 2. Содержание• Что такое Riak?• Структура Riak.• Организация хранения и доступа к файлам в Riak.• Теорема CAP• Riak API, Erlang Clients
  3. 3. Что такое Riak?• Riak — это документно-ориентированная база данных.• Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete.• Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации.• А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST.• Ну и конечно Riak — это NoSQL.
  4. 4. Структура Riak.
  5. 5. Организация хранения и доступа к файлам в Riak. Введем 3 термина:• N — это количество реплик каждого значения в хранилище.• R — количество данных реплик для выполнения операции чтения.• W — количество реплик необходимых для выполнения операции записи.
  6. 6. Теорема CAPТеорема CAP (теорема Брюера) - утверждение о том, что влюбой реализации распределённых вычислений возможнообеспечить не более двух из трёх следующих свойств:• согласованность данных (англ. Consistency)• доступность (англ. availability)• устойчивость к разделению (англ. partition tolerance)
  7. 7. Riak API, Erlang ClientsRiak имеет два API:• HTTP API• PBC APIДля доступа по этим протоколам существуют клиенты наязыке Erlang, соответственно:• riak-erlang-http-client• riak-erlang-client
  8. 8. 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 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">>}}
  9. 9. 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“>>}}
  10. 10. Подведем итогКак мы убедились, Riak можно использовать дляразработки высоконадежных, распределенных систем,идеален для создания облачных хранилищ и сервисов.

×