2009-09-23 59 views
7

我試圖從OCaml程序中找到一個庫來訪問數據庫。嘗試ocaml-sqlite後,我不滿意,因爲它有點慢。OCaml的數據庫綁定?

我見過一個MySQL模塊,但似乎沒有被維護。

+0

你可以隨時編寫你自己的C接口來獲得你需要的數據庫/功能......但是我用ocaml-mysql做了一個小項目(儘管只用了簡單的插入/更新/選擇查詢)。 – nlucaroni 2009-09-23 18:43:19

+0

但是ocaml-mysql能夠與最近的mysql版本一起工作嗎?我應該使用postgres嗎? 這是相當基本的數據庫的東西.. – LB40 2009-09-23 19:13:37

+0

我使用mysql-ocaml與mysql v5遠程數據庫。儘管如此,我的具體操作並不是v5特定的,如前所述。 – nlucaroni 2009-09-24 13:26:27

回答

6

你是否檢查了Caml Hump?它有很多數據庫綁定的鏈接。

好的,成熟的,我可以推薦的綁定是理查德瓊斯的PG'OCaml和馬庫斯莫特爾的postgresql-ocaml。它們都是針對Postgresql的(這對於考慮到Ocaml來說可能是更好的選擇)。

+0

當然,我檢查過這個......我擔心的是最後的版本看起來很老。所以我想知道人們在使用什麼。 – LB40 2009-09-23 23:34:11

+0

你是什麼意思,相當古老?在PG'OCaml的情況下,最新版本是幾個月前的版本,SVN中似乎有不斷的活動。至於postgresql-ocaml,沒有新的版本,因爲沒有必要升級什麼運行良好... :-) – 2009-09-24 12:49:10

+0

好吧,我的壞,我沒有去PG'Ocaml新的網站。對於postgresql-ocaml,我不想把時間花在我不能使用的東西上。謝謝。 – LB40 2009-09-24 13:02:00

2

我很驚訝你發現ocaml-sqlite的綁定很慢。 sqlite本身就很快,我相信sqlite綁定寫得非常好。你應該確保你使用了最新的無這裏的問題從Markus Mottl's page

+0

也許我有點苛刻,我解析一個100 Mo文本文件並建立一個數據庫。我有很多插入操作,所以我必須更聰明地調用exec。我正在使用最新版本。我不知道IO對數據庫造成的性能損失。檔案 – LB40 2009-09-24 13:04:14

+1

只有100Mo ?!我在睡夢中解析......真的! – nlucaroni 2009-09-24 13:29:27

+0

我不知道該回答什麼:-)。你在睡夢中解析它,因爲它要花很長時間才能入睡? – LB40 2009-09-24 14:27:20

3

ocaml的MySQL的作品結合 - mysql的API,用於連接/查詢/取指令並不會改變太多:) 它缺乏準備語句儘管如此,我必須自己實現mysql_stmt_ * wrappers。

+0

我使用MySQL綁定相當重要,包括準備好的語句支持。根據我的經驗,它們在5.0.x和5.5.x下運行良好。 – hcarty 2012-07-15 19:36:26

0

如果您的數據庫是PostgreSQL,我建議ocaml-postgresql。 (還有ocaml-sql,使用的OCaml PostgreSQL的時候,這使得一些SQL操作更加方便。)

由於PG'OCaml嚴重依賴OCaml中的編譯時類型系統,它是不可能在運行時編寫查詢,這使得它,在我看來,在大多數現實世界的場景中沒有用。