2009-08-15 6 views
6

私はErlangを掘り下げていきます。私はErlangを使って次のWebプロジェクトを開始することを考えています。この段階でRuby on Railsから本当に欠場するのはActiveRecordだけです。ErlangのActiveRecord

アーランには優れた代替技術がありますか?

更新: 私は解決策になってきた最も近いが、ErlyDBにErlyWebのコンポーネントです。

ErlyDBはErlangのデータベース抽象化層 です。 ErlyDBは データベースメタデータとユーザー提供の メタデータを組み合わせて、 の共通データアクセス の操作を直観的な方法で実行させる関数を生成します。 は、異なるデータベースエンジン (現在はMySQLが に対応していますが)を使用して、 の異なるデータベースエンジンで動作する単一のAPIも提供し、ポータブル データアクセスコードを記述できます。

+0

あなたはRubyユーザーではありませんが、ActiveRecordで必要な機能を記述できますか?それはSQLスキーマからコードを生成するものですか? – Christian

答えて

4

はまあ、ActiveRecordのの主な利点は(私はそれを見るように)している:あなたはほぼ透過的にリレーショナルデータベース内のオブジェクトを永続化することができます

  1. オブジェクトの任意の属性でデータベースを検索できます。
  2. オブジェクトを永続化するときに、オブジェクトを検証できます。
  3. オブジェクトの削除、更新、挿入時にコールバックを持つことができます。 Mnesiaで

  1. あなたは絶対に透過的に任意のErlangのデータを永続化することができます。
  2. パターンマッチングを使用すると、データの任意の属性またはその組み合わせでデータベースを検索できます。
  3. QLCは、パターンマッチングが十分でない場合に適したクエリインターフェイスを提供します。

検証し、コールバックのためのいかなる解決策は、しかし...だから

は、あなたはMnesiaに欠けていることのActiveRecordで他に何を持っていないのですか?

+2

問題の一部は、自分のRDBMSをあきらめる準備が整っていないということです。私はツールを知っている、私は最適化し、拡大縮小する方法を知っている。おそらく、これは未知のものに対する恐怖です。 –

+2

それから急落してください。それはあなたがそれを違うときにすべての問題を知っているだけで良いでしょう。あなたが複数のアプローチを知っているときは、良い呼び出しをする方がはるかに簡単です。より大きなツールボックスが便利な場合もあります。 –

+1

Erlangが現時点でWebアプリケーションにはあまり適していないことが問題のいくつかであるかどうかは疑問です。 –

4

私は本当にこの執筆の時点ではないと思います。これは、erlangで書かれているシステムの種類やそれらを書いている人のタイプが実際にリレーショナルデータベースを必要としないためかもしれません。 mnesia、CouchDB、Tokyo Cabinetなどの代替データベース技術を使って、もっと多くのコードを見ることができます。

これは、誰かがアクティブレコードのようなものを作成したくないと言っているわけではありません。それはまだ本当に必要ではありませんでした。多分あなたは最初になるでしょうか? :-)

1

いくつかのグーグルは、CouchDBのためのlibs /クライアント/ラッパーは "ActiveRecordのCouchFooなどのライブラリのように" 説明し、明確な舵取りすることをお勧め明らかにする:あなたのコメントになど

http://upstream-berlin.com/2009/03/31/the-case-of-activerecord-vs-couchdb/

http://debasishg.blogspot.com/2009/04/framework-inertia-couchdb-and-case-of.html#

のない」にまだウェブアプリケーションに適している "と私は思うが、そこには:mochiweb、couch、yaws、nitrogen、erlywebがあると思う。いくつかの強力なツール、まったく異なるパラダイムがあります。確かに、レール、django、PHPからです。

+0

これは本当に興味深いもので、私が最近行った考えを反映しています。私はActiveRecordを望んでいます。なぜなら、私は、ソフトウェアについての特定の考え方や推論に結びついているからです。私は、MySQLの代わりにCouchDBを真剣に検討しています。 –

1

あなたはシカゴボスの「BossRecords」に興味があるかもしれません:

http://www.chicagoboss.org/api-record.html

彼らは非常に明示的にActive Recordのパターンをモデルにし、構文がきしむきれいにするために、コンパイラの魔法の多くを使用しています。 BossRecordsは、has_many/belongs_toの関連付けだけでなく、保存/検証もサポートしています。データモデル内の属性は、生成された関数(「Employee:first_name()」など)を介して利用可能になります。