2010-02-05 24 views
7

在Erlang中有很多数据存储区,例如Riak,Dynomite,CouchDb,Scalaris,我是否错过了?我知道Java和C/C++也被用来编写数据存储(Cassandra,Hypertable等),但是任何其他函数式语言(例如F#,Scala,Haskell,Clojure等)都已经编写了数据存储?我问这个问题(以及许多其他函数式编程和Erlang类型问题)的原因是评估函数式编程语言在现实世界项目中的可行性。生产级数据存储的功能语言实现

作为一个便笺,已经指出我的意思是数据存储本身的实际实现语言,而不是访问数据存储的客户端语言(即:通过ODBC)。

+2

第一部分:是的。 Mnesia附带Erlang ;-) – ConcernedOfTunbridgeWells 2010-02-05 10:12:53

+0

我只想提到Scala与您提到的其他语言相反,大多是一种面向对象的语言,它恰好集成了Functional Language功能。它的创造者最近称之为“后期功能”。 – 2010-02-05 11:10:00

+0

好的,所以我应该从列表中删除Scala,如果它主要是OO? – Zubair 2010-02-05 11:27:52

回答

9
  1. Data.Tcache是一个具有Haskell可配置持久性的事务缓存。
  2. Elephant是具有完整事务语义的Common Lisp的持久对象数据库。
  3. CLSQL - 用于Common Lisp接口的SQL数据库。
  4. AllegroCache是Allegro Common Lisp的高性能动态对象缓存数据库系统。
  5. Spark-Scheme附带内置数据库和ODBC支持。
+0

辉煌,我会研究这些。谢谢 – Zubair 2010-02-05 09:50:47

+0

我简要介绍了这些。星火似乎是最好的,但有最糟糕的网站:)他们中的任何一个工作在集群设置? – Zubair 2010-02-05 09:54:48

+0

@Zubair感谢您对Spark的好评。这是我个人的Lisp!关于网站,没有足够的资源(所有的时间,金钱和个人)来创建更好的资源。 – 2010-02-05 10:08:26

3

你的问题让我有点困惑。您可以通过多种语言询问编写的数据存储区。通常,当我编程时,我会寻找一个库或API来以我选择的语言获取数据存储区中的数据并将其放入数据存储区。底层数据存储的内容是什么(如果写入任何内容,某些数据存储不超过文件布局)我不在乎。

在这个基础上,一个小谷歌会打开Haskell到ODBC库,我想其他语言会有类似的设施。我不知道这些,所以不会评论他们对项目的适用性。

+0

是的,你是对的,我没有这么清楚地解释它。正如你所指出的那样,我的意思是“底层”数据存储。 – Zubair 2010-02-05 09:22:45

+0

另外,您所做的有趣的观点,哪些数据存储只是文件布局,因为我想评估它们? – Zubair 2010-02-05 09:42:10

+0

真的吗?您确定应用程序数据存储不在应用程序和数据库进程之间复制数据没有一些好处吗?性能?在这种情况下,特定语言的数据存储具有很大的意义。有序的嵌入式数据库在这里不是解决方案,因为锅炉板的必要性。例如,这就是Erlang中的mnesia在某些情况下具有重要意义的原因,特别是在本机“存储过程”和事务(涉及分发)的情况下。 – 2010-02-05 10:09:40

3

从某种意义上说,您已经回答了您自己的问题。你提到的系统,以及其他来自评论,ARE写在功能langauges和绝对真实世界的项目,所以答案是是的