質問

私はよく知っています カウチDB そして、その結果を Scala オブジェクトにマッピングし、それを反復処理する自然な方法を見つけるというアイデアがすぐに浮かびました。

しかし、Ruby や Javascript などの動的言語は、CouchDB の json/document-centric/shchema-free アプローチで非常にうまく機能することがわかります。

静的言語で Couch を使用するための良いアプローチはありますか?

役に立ちましたか?

解決

CouchDB は純粋に JSON オブジェクトで動作することを理解しています。JSON は型指定されていないため、動的言語により自然に適していると信じたくなります。ただし、XML も一般に型指定されておらず、Scala には XML の作成と操作のための非常に優れたライブラリ サポートがあります。Scala の XML 機能の詳細については、以下を参照してください。 http://www.ibm.com/developerworks/library/x-scalaxml/

JSON も同様です。適切なライブラリ サポートがあれば、静的言語であっても JSON を自然に扱うことができます。Scala で JSON データを処理する 1 つのアプローチについては、この記事を参照してください。 http://technical.us/code/x/weaving-tweed-with-scala-and-json/

一般にオブジェクト データベースでは、(言語内のクラスなどを使用して) "モデル" を定義し、JSON、XML、またはその他の型なしドキュメント言語をクラスのシリアル化表現として使用すると便利な場合があります。適切なライブラリ サポートにより、静的型付けとそれに付随するすべての利点を使用して、シリアル化された形式 (JSON など) とメモリ内のデータ構造の間で変換を行うことができます。このアプローチの一例については、JSON との間の変換を追加した Lift のレコードを参照してください。 http://groups.google.com/group/liftweb/msg/63bb390a820d11ba

他のヒント

あなたは右の質問をした場合、私は疑問に思います。なぜあなたは動的言語をスカラ座を使用して、されていませんか?おそらくScalaはそれは私が想定し、あなたのために重要であり、あなたを提供し、いくつかの良さ、あなたのコードの品質の。そして、なぜあなたはいずれかの「静的型付け」(すなわち、スキーマベース)データベースを使用していませんか?もう一度私は仮定しているが、変化に対応する能力が頭に浮かぶ。生産SQLデータベースが変更とリファクタリングすることは非常に困難であることの恐ろしい傾向があります。

だから、あなたののデータの弱い型指定され、そしてあなたののコードが強く型付けされています。しかし、どこかで、あなたは、移行を行う必要があります。これはどこかで、あなたは、データベースが何を持っていなくても、あなたのデータのための「スキーマ」を持っているだろうことを意味します。このスキーマは、あなたが上にソファー文書をマッピングしているクラスによって定義されます。これは完璧な理にかなっています。私が見てきたソファーのほとんどの用途は、このような「タイプ」と、各タイプのキーの少なくともいくつかの共通セットとして鍵を持っています。これらのScalaのクラスにJSONをマッピング-手にまたは例えば使用するかどうか私はまだへの新たなんだ空想反射ツール(遅いが、かなり)、または一部でも手の込んだScalaの機能が詳細です。それは十分に速いかどうかを確認し、その後、ゆっくりと簡単しかし-1で開始します。

は大きなものが発生したときに、あなたのクラス、つまりあなたのスキーマ、の変更の。代わりに、あなたのテーブルをALTER'ingの、あなただけの、クラスを変更することができます(それはクラスの古いバージョンに基づいていたので)あなたが期待するキーが欠落しているいくつかの文書の場合は、スマート何かをすることを確認し、あなたが行くオフ。変化に対応することは容易ではありませんでしたし、まだそれが得ることができるようにコードをとして静的に型付けされます。

これはあなたのために十分ではない、とあなたは全くスキーマを希望しない場合は、

、あなたは効果的にあなたがあなたのデータを定義および操作するためのクラスを使用しないことを言っています。 (私は使用を想像することはできませんが)それはあまりにも大丈夫ですが、その後の質問は、静的な言語対について、動的ではなく、全くクラスベースのオブジェクト指向言語を使用するかどうか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top