ublog

Знайомство з erlang: ets

programming [41]erlang [39]

Вітаю!

При роботі з php нам просто необхідно користуватись memcached/redis
для зберігання в оперативній памяті певних потрібних для роботи даних.

У нашому випадку, нам не потрібно нічого окрім самого erlang -
ерланг/OTP містить в собі ETS - erlang term storage.

Також існує DETS - disk-based term storage -
можна сказати що це той же ETS, котрий зберігає дані на диску, а не в оперативній памяті.

Перейдемо до коду:

1> Table = ets:new(my_table, [set, public]).
#Ref<0.3191872875.2723282945.79717>
2> ets:insert_new(Table, {<<"1">>, <<"test77">>}).
true
3> ets:insert_new(Table, {<<"2">>, <<"779">>}).
true
4> ets:insert_new(Table, {<<"3">>, <<"тест 99"/utf8>>}).
true
5> ets:match(Table, {'$1', '$2'}).
[[<<"3">>,<<209,130,208,181,209,129,209,130,32,57,57>>],
 [<<"1">>,<<"test77">>],
 [<<"2">>,<<"779">>]]
6> ets:delete(Table, <<"2">>).
true
7> ets:match(Table, {'$1', '$2'}).
[[<<"3">>,<<209,130,208,181,209,129,209,130,32,57,57>>],
 [<<"1">>,<<"test77">>]]
8> ets:delete(Table).
true


9> Table2 = ets:new(my_table, [set, public]).
#Ref<0.3191872875.2723282945.79856>
10> ets:insert_new(Table2, {<<"1">>, <<"test77">>}).      
true
11> ets:insert_new(Table2, {<<"2">>, <<"779">>}).
true
12> ets:insert_new(Table2, {<<"3">>, <<"тест 99"/utf8>>}).
true
13> ets:match(Table2, {<<"1">>, '$2'}).
[[<<"test77">>]]
14> ets:match(Table2, {<<"7">>, '$2'}).
[]
15> ets:delete(Table2).
true


ETS та DETS в ерланг-документації -
http://erlang.org/doc/man/ets.html
http://erlang.org/doc/man/dets.html

Також erlang/OTP містить в собі Mnesia - базу даних, побудовану на основі ETS та DETS
http://erlang.org/doc/man/mnesia.html

Чи чули ви про Whatsapp?
Чи знаете ви, що всі повідомлення у Whatsapp зберігаються-крутяться в ETS/Mnesia в оперативній памяті?)))

Далі буде)