문제

Haskell을 사용하여 데이터베이스와 상호작용하는 가장 좋은 방법은 무엇입니까?나는 일종의 ORM(Django의 ORM, 최대 절전 모드 등)을 사용하는 데 익숙하며 다음을 사용하여 앱을 만들 때 비슷한 것이 좋을 것입니다. 햅스.

편집하다: 실제 데이터베이스에 관한 한 Postgresql MySql과 SQLite 중에서 자유롭게 선택하고 싶습니다.

도움이 되었습니까?

해결책

내가 염두에 두고 있는 라이브러리는 ORM은 아니지만 여전히 원하는 작업을 수행할 수 있습니다.

프로그램에 항목을 훌륭하게 통합하면서 데이터베이스 액세스를 안전하게 만드는 것을 원한다면 시도해 보십시오. 하스켈DB.기본적으로 스키마를 살펴보고 일부 데이터 구조를 생성한 다음 안전한 쿼리 방법을 제공합니다.꽤 오랫동안 사용되어 왔고 커뮤니티 의견은 좋고 안정적이라는 것입니다.

이를 사용하려면 HSQL과 같은 기본 Haskell DB 라이브러리가 필요합니다.

행운을 빌어요!

다른 팁

ORM 라이브러리가 존재하는 이유는 C#이나 Java의 개체와 데이터베이스에 저장하는 개체 간에 상대적으로 큰 차이가 있기 때문입니다.Haskell에서는 이것이 그다지 큰 문제가 되지 않습니다. 그 이유는 다음과 같습니다.

  1. 객체가 없습니다.
  2. 데이터베이스와 하스켈 목록은 모두 수학적 집합 이론에서 영감을 얻었으므로 데이터베이스와 객체 사이보다 마찰이 훨씬 적습니다.

영구는 사용하기가 다소 좋으며 유형 추론을 사용하여 쿼리와 관련된 테이블을 결정할 수 있습니다.예를 들어, "모델" 파일에 다음이 있는 경우:

User
    name Text
    age Int

Login
    user UserId
    login Text
    passwd Text

그러면 나는 이렇게 할 수 있다:

Just (Entity uid _)          <- selectFirst [ UserName ==. "Some User ] []
Just (Entity lid Login {..}) <- selectFirst [ LoginUser ==. uid ] []

그리고 내가 의미하는 테이블이 무엇인지 알 것입니다.물론 이렇게 부분적인 코드를 작성하고 싶지 않을 수도 있지만 쿼리만 강조하고 싶었습니다.

개인적으로만 사용했는데 데이터베이스.HDBC "Real World Haskell"에서 권장하는 것입니다:http://book.realworldhaskell.org/read/using-databases.html

그러나 나는 더 높은 수준의 DB 액세스 계층을 사용하는 것이 확실히 합리적이라는 데 동의하며 향후 프로젝트에서는 그러한 모델로 전환하려고 노력할 것입니다.이 주제에 관해 저는 Haskell에 대한 솔루션의 역사와 비교를 제공하는 2012년 게시물을 찾았습니다.http://www.yesodweb.com/blog/2012/03/history-of-persistence

그것으로부터 나는 Persist(선적 서류 비치) 및 성촉 (일부 문서, )은 이 분야에서 가장 유망한 도서관입니다.두 라이브러리 모두 언급한 데이터베이스를 지원합니다.Groundhog의 경우 이 게시물에는 작성되지 않았지만 이번 발표에서 관심 있는 DB를 정확하게 지원하는 것을 확인할 수 있습니다.

또한 참고 Haskell 초보자를 위한 이 스레드 어느 에스켈레토 업데이트 작업을 위한 더 나은 선택으로 언급됩니다.

Perspective는 Yesod와 함께 배송되므로 더 많은 추종자가 있을 수 있습니다.

사실 저는 HAppS의 접근 방식을 매우 좋아합니다(HAppS 상태)를 사용하면 ORM의 마샬링/비마샬링 복잡함을 잊어버리고 간단히 Haskell의 데이터 유형을 사용할 수 있습니다.

다음에서 데이터베이스 매핑 및 액세스 패키지를 살펴보셨나요?http://hackage.haskell.org/packages/archive/pkg-list.html#cat:데이터베이스

나는 그것들을 사용하지 않았으므로 특정 것을 추천할 수 없습니다.또한 어떤 데이터베이스를 사용할 계획인지 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top