加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

用于数据库抽象的惯用haskell

发布时间:2020-12-12 06:36:07 所属栏目:MsSql教程 来源:网络整理
导读:在OOP语言中,我可能会编写一个数据库包装器,它封装数据库连接,管理模式并提供一些核心操作,例如exec,query,prepare_and_execute.我甚至可能有一个单独的数据库助手类来处理数据库模式,只留下数据库抽象来处理连接.然后,模型包装器/工厂将使用它,它使用数据库
在OOP语言中,我可能会编写一个数据库包装器,它封装数据库连接,管理模式并提供一些核心操作,例如exec,query,prepare_and_execute.我甚至可能有一个单独的数据库助手类来处理数据库模式,只留下数据库抽象来处理连接.然后,模型包装器/工厂将使用它,它使用数据库抽象类来创建模型类的实例.像这个UML图一样的东西:

在惯用的haskell中设计这样一个系统的首选方法是什么?

解决方法

Haskell中最常用的数据库抽象库是 HDBC.这意味着查询只是表示为带有占位符的字符串.更少的人使用 HaskellDB,它提供了一种类型安全的方法来构建查询.没有什么禁止用户数据类型来表示常见查询和自定义函数来构建它们.

Haskell中的值是不可变的,这意味着使可变对象与数据库中的记录相对应是没有用的.相反,我认为更常见的是定义用户数据类型和函数,这些类型和函数可以对这些类型的数据进行编组和推送/拉取.

每当需要更新数据库时,它们很可能在IO下的某些有状态monad中运行.例如,这将允许保持连接打开,或者在请求之间执行某些操作.

最后,函数是第一类的,因此可以动态构造所有函数.因此,函数本身可以封装您想要的任何信息.

所以,我认为,通常的Haskell方法包括

>代表实际数据的代数数据类型(作为不可变值)>转换这些值的应用程序的其余部分>生成查询的函数(封装模式详细信息,将数据封送到Haskell数据类型/从Haskell数据类型封送数据)>(可选)运行查询的有状态monad(隐藏数据库访问的详细信息)>运行查询的函数(隐藏数据库访问的详细信息)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读