使用Clojure / ClojureScript进行Web开发的后端

时间:2012-04-14 04:09:26

标签: database clojure clojurescript

我熟悉在Clojure中开发桌面应用程序(编写多线程交互式可视化系统)。但是,我对使用Clojure进行Web开发很新。

我计划在服务器上使用Clojure来处理逻辑;和ClojureScript用于处理客户端工作。但是,我不知道我的数据库服务器要使用什么。我应该使用像Monogodb这样的东西吗?还是Hadoop?或者......?

该应用程序非常简单;一个基本的论坛。并发用户总数将是<在给定时间100。对我来说重要的一点是能够轻松备份/数据一致性 - 对我来说非常重要的是我可以轻松地进行每日备份(而不是丢失所有数据。)

谢谢!

3 个答案:

答案 0 :(得分:5)

您可以使用许多数据库;如果数据库有一个Java API,你应该好好去。 MySQLMongoDBPostgresHadoop ......等等。

如果想要了解Clojure中的webstack,请查看brehaut的article on the matter

要使用Clojure和ClojureScript快速启动并运行,请尝试ClojureScriptOne

有很多方法可以写出你想写的东西;如果你已经熟悉Clojure,那就不应该太难了。

答案 1 :(得分:5)

Haven没有自己使用它,但Datomic(http://datomic.com/)看起来很适合来自Clojure的任何人。

答案 2 :(得分:0)

Datomic是一个了不起的数据库,我强烈推荐它。它具有许多功能,使其与其他数据库系统不同:

  • 就像Clojure的数据结构一样,它是持久性的,这意味着默认情况下,向数据库中添加新事实不会删除旧事实,从而使您可以查询先前时间点的数据库状态,从而增强了审计能力并协助调试。
  • 底层实体属性值(EAV / triple)数据模型(至少部分受RDF和语义网的启发)非常灵活,可让您表达任意图形结构并毫不费力地处理多态性。
  • 查询语言是Datalog的一种,它是一种基于模式匹配的查询语言,严格比SQL等具有更高的表达力,因为它可以执行递归查询,使其特别适合处理图形数据/查询。 li>
  • 除了Datalog查询之外,还有一个pull api,它使您可以更简单地使用类似于GraphQL的表达式将数据从数据库中拉出,该表达式指定了要拉出的类似于文档的结构的形状超出数据库。这些查询甚至可以在Datalog查询的:find子句中使用。
  • 您可以在查询中使用Clojure函数。
  • 索引系统非常智能,或多或少是自动的,与通常为了优化性能而对SQL数据库进行调整的工作形成鲜明的对比。
  • 事务处理与查询通过的API /函数调用不同,这意味着在OWASP(SQL注入)中确定的第一大安全风险在Datomic中实际上是不可能的。
  • 事务处理器/读取副本设计使扩展读取/查询的超级容易,同时保持了事务处理器的压力。
  • 这真是好玩。

这里需要指出的一件事是,通过包含EAV数据模型和数据记录/拉取查询,Datomic最终具有与NoSQL数据库更接近的结构灵活性,而在本质上仍然是关系型的,甚至在它是关系查询,而不是SQL。

这太神奇了,您绝对应该试一试。它会稍微融化您的大脑。很好。

值得注意的是,它的受欢迎程度激发了许多成功的开源项目,因此基本方法不会在任何时候出现:

  • DataScript:clj / cljs在内存中的部分实现
  • Datahike:DataScript的叉子,它在磁盘索引上进行查询,这意味着您不必将所有内容都保留在内存中以进行查询
  • Mentat:Mozilla项目试图使Mozilla项目具有类似于Datomic的功能