<p dir="ltr">Perhaps you are looking for an ORM. Something like <a href="https://github.com/evanmiller/boss_db">https://github.com/evanmiller/boss_db</a> could probably some your need?</p>
<div class="gmail_quote">On Aug 9, 2013 1:51 PM, "H.C. v. Stockhausen" <<a href="mailto:hc@vst.io">hc@vst.io</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello,<br>
<br>
I need a DB backend for my application but I'd like to be able to swap<br>
it out for different DBs if I choose so later on.<br>
<br>
I would like to code against an interface and tell the application<br>
what specific backend to use through config rather than code changes.<br>
<br>
Is there a pattern for doing that? Hot code upgrades and multi-node<br>
are not a real concern at this time - mostly, since I have no<br>
experience yet with either - however if doing it right means taking<br>
that into account too I'd also like to learn more about that.<br>
<br>
I am thinking of defining a custom behaviour ("my_crud" perhaps), then<br>
to implement it for various DBs and to also let a config driven<br>
adapter implement it that I then use to throughout the code to talk to<br>
the DB layer.<br>
<br>
For example, using Mnesia and AWS DynamoDB:<br>
<br>
- my_crud.erl (behaviour)<br>
- my_db_mnesia.erl (implements behaviour)<br>
- my_db_dynamo.erl (implements behaviour)<br>
- my_db.erl (configurable adapter that also implements behaviour)<br>
- my.config<br>
<br>
my_db:insert(Key, Value).<br>
<br>
Is that a reasonable approach that makes proper use of Erlang and<br>
behaviours or is this just not how one should do it?<br>
<br>
Thank you for any help & best regards,<br>
Hans<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>