Eine einfache Datenbank in Erlang


Mit Erlang ist die prinzipielle Erstellung eines Datenbankmanagementssystems (DBMS) relativ einfach zu bewältigen.

Dafür spricht auch, dass einige Datenbanken in Erlang entwickelt worden sind:

  • CouchDB
  • SimpleDB

Aber auch andere sehr bekannte Projekte.

Beispiel Datenbank Statements in Erlang

Bei einer vorgegebenen Menge von Daten namens DB sollen

DB = [{sebastian, jan, 26}, {daniel, jan, 10}, {susi, jan, 10},{thomas, dez, 19}].

1. Alle Personen extrahiert werden, die im januar Geburtstag haben:

[Name || {Name,Monat,_} <- DB, Monat == jan].                                     
[sebastian,daniel,susi]

2. Alle Monate und die Namen der Geburtstagskinder extrahiert werden

[{Monat,[Name || {Name,MonatOuter,_} <- DB,  MonatOuter == Monat ]} || {_,Monat,_} <- DB].
[{jan,[sebastian,daniel,susi]},
 {jan,[sebastian,daniel,susi]},
 {jan,[sebastian,daniel,susi]},
 {dez,[thomas]}]

Wenn man keine doppelten Elemente in der Ergebnismenge haben will kann man  die Liste in ein Set umwandeln und wieder zurück in eine Liste, weil ein Set hat nur eindeutige Keys enthält:

sets:to_list(sets:from_list([{Monat,[Name || {Name,MonatOuter,_} <- DB,  MonatOuter == Monat ]}||{_,Monat,_} <- DB])).
[{jan,[sebastian,daniel,susi]},{dez,[thomas]}]

3. Wieviele Leute haben im Januar Geburtstag?

lists:sum([1 || {_,jan,_} <- DB]).  
3

4. Wieviele Leute haben durchschnittlich (AVG) im Dezember Geburtstag?

lists:sum([1 || {_,dez,_} <- DB]) / length(DB).      
0.25