/
README
108 lines (82 loc) · 3.07 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
ErlSDB README
-------------
This code is an overhaul of Shahzad Bhatti's original code (apparently not maintained anymore).
Summary
-----------
Amazon SimpleDB is a web service for running queries on structured data
in real time. See aws.amazon.com/simpledb.
This erlsdb library provides interface to access SimpleDB web service using
REST APIs.
Author: Shahzad Bhatti <bhatti@plexobject.com>
Author: Eric Cestari <eric@ohmforce.com>
Version: 1.0
Date: 2009/02/23
Requirements
------------
- OTP-R12B (http://erlang.org/download.html)
- An Amazon Web Services account - See http://www.amazonaws.com
Features
---------
- Uses Signature V2
- Multiple servers are ran (default : 5)
- HTTP calls are asynchronous, per server.
- SSL support enabled by default (for deactivating see example usage below)
- Full support of the SimpleDB API version 2007-11-07
TODO
-----
- Update documentation
- Implement a type system as described by James Murty in his book
License
-------
Released under the GNU General Public License v2.
= BUILDING =
./rebar compile
sudo ./rebar install
= Configuration =
You'll need to set your credentials to Amazon SDB :
- by passing them as OTP application parameters or
- by setting the AMAZON_ACCESS_KEY_ID and AMAZON_SECRET_ACCESS_KEY environment variable
= Running the incomplete test suite =
Set the AMAZON_ACCESS_KEY_ID and AMAZON_SECRET_ACCESS_KEY environment variables
erl -boot start_sasl -pa lib/erlsdb/ebin -pa lib/erlsdb/test/ -s erlsdb_test test -s init stop
Expected output (if you did not create any domains previously):
Listing domains {ok,[],nil}
Creating test domain ["TestDomain"]
Adding attributes [{"City","Seattle"},
{"State","WA"},
{"StreetAddress","705 5th Ave"},
{"Zip","98101"}]
Removing attributes ok
Removing test domain []
= A FEW EXAMPLES =
# SSL is deactivated in the following :
erl -boot release_local/erlsdb-initial -erlsdb access '"<AWS_ACCESS_ID>"' secret '"<AWS_SECRET_KEY>"' ssl false
1> erlsdb:create_domain("fubar").
nil
2> erlsdb:list_domains().
{ok,["fubar"],[]}
3> erlsdb:put_attributes("fubar", "test", [{"foo", "bar"}]).
nil
4> erlsdb:get_attributes("fubar", "test").
{ok,[{"foo","bar"}]}
..
5> erlsdb:select("select count(*) from domain where toto = 'truc'",nil).
{ok,[{"Domain",[{"Count","2"}]}],nil}
6> erlsdb:domain_metadata("domain").
{ok,[{"Timestamp",1235403601},
{"ItemCount",4},
{"AttributeValueCount",8},
{"AttributeNameCount",4},
{"ItemNamesSizeBytes",24},
{"AttributeValuesSizeBytes",20},
{"AttributeNamesSizeBytes",19}]}
6> erlsdb:list_domains(nil,1). % paging works
{ok,["domain"],"ZnViYXI="}
7> erlsdb:list_domains("ZnViYXI=",1).
{ok,["fubar"],nil}
8> erlsdb:select("select count(*) from domain where toto = 'truc'",nil).
{ok,[{"Domain",[{"Count","2"}]}],nil}
9> erlsdb:select("select * from blobs where toto = 'truc'",nil).
{ok,[{"blob1",[{"toto","truc"},{"foo","bar"}]},
{"blob2",[{"toto","truc"},{"foo","bar"}]}],
nil}