我很熟悉 CouchDB 和映射它的结果为拉斯卡拉对象,以及发现一些自然的方式iteract,来立刻.

但我看到的动态语言,例如红宝石和Javascript做的事情非常好id/文件中心/shchema-免费的方法的CouchDB.

任何好的方法来做的事情与沙发在静的语言?

有帮助吗?

解决方案

我的理解是,CouchDB工作的纯属结果的方式的对象。由于JSON类型,它们很容易认为这是更自然地适合动态的语言。然而,XML一般类型也和卡拉具有非常好的图书馆支持创建和操纵XML。用于勘探的斯卡拉的XML特征,参见: http://www.ibm.com/developerworks/library/x-scalaxml/

同样结果的方式.用的适当图书馆的支持,在处理结果的方式可以感到自然即使在静态的语言。一个办法来处理结果的方式的数据在卡拉,请参阅本文: http://technically.us/code/x/weaving-tweed-with-scala-and-json/

与对象的数据库,在一般情况下,有时,它便于确定一个"模型"(使用,例如,一类语文)和使用JSON或XML或一些其他类型文件的语言的序列化表示的类。适当的库支持,然后可以翻译之间序列化形式(如JSON),以及在存储器数据结构、带有静态的打字和所有的东西。对于一个这种方法的例子,请参阅提升的记录其已加入的转换,并从JSON: http://groups.google.com/group/liftweb/msg/63bb390a820d11ba

其他提示

我不知道你问正确的问题。你为什么要使用Scala的,而不是动态语言?可能是因为一些善良是斯卡拉为您提供的是对你很重要,而且我认为,你的代码质量。那么你为什么不使用“静态类型”(即基于模式)数据库要么?再次我只是假设,但应对变化的能力想到的。生产SQL数据库具有作为很难改变和可怕的倾向重构。

所以,你的数据的是弱类型的,和你的代码的强类型。但是,地方你需要做的过渡。这意味着什么地方,你就会有一个“模式”为您的数据,即使数据库现在没有。该模式由你映射文件的沙发上的类定义。这是非常合情合理的;我见过沙发的大多数使用有一个关键,如“类型”,并为每种类型的至少一些常见的一组密钥。是否将JSON手工映射到这些Scala类或例如使用花哨的反射工具(较慢,但相当),或者一些更炫Scala的功能,我还没有新的细节。先从容易但很缓慢的过程,然后看看它的速度不够快。

发生大的事情,当你的类,即您的架构,更改的。相反ALTER'ing你的表,你可以更改类,请确保你做一些聪明的,如果由于某种文档您所期望的关键是缺少的(因为它是基于旧版本之类的),和您去。应对变化从未如此简单,并且仍然是你的代码作为静态类型的,因为它可以得到的。

如果这不是对你不够好,你不想要的模式的话,那么你实际上是说,你不希望使用类来定义和操纵数据。这是一件好事(虽然我不能想象一个使用),但随后的问题不是动态VS静态语言,但是否都使用基于类的面向对象语言。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top