2009-09-23 4 views
7

Ich versuche eine Bibliothek zu finden, um von einem OCaml-Programm auf eine Datenbank zuzugreifen. Nach dem Versuch, ocaml-sqlite, bin ich nicht zufrieden, da es etwas langsam ist.Datenbankbindung für OCaml?

Ich habe ein MySQL-Modul gesehen, aber es scheint nicht gepflegt zu werden.

+0

Sie können immer Ihre eigenen C-Schnittstellen für die db/Funktionalität schreiben, die Sie brauchen ... aber ich habe ocaml-mysql für ein kleines Projekt verwendet (verwendet nur einfache, einfügen/aktualisieren/Abfragen auswählen). – nlucaroni

+0

aber funktioniert ocaml-mysql mit den letzten mysql-releases? Soll ich lieber Postgres verwenden? Das ist ziemlich einfach DB Zeug .. – LB40

+0

Ich benutze mysql-ocaml mit einer mysql v5 remote db. Obwohl meine spezifischen Operationen nicht wie erwähnt v5 spezifisch sind. – nlucaroni

Antwort

6

Haben Sie die Caml Hump überprüft? Es hat Links zu vielen Datenbankbindungen.

Gute, reife Bindungen, die ich empfehlen kann, sind PG'OCaml von Richard Jones und postgresql-ocaml von Markus Mottl. Sie zielen beide auf Postgresql ab (was wahrscheinlich eine bessere Wahl für Sie ist, wenn Sie an Ocaml denken).

+0

sicher, ich habe das überprüft ... meine Sorge war, dass die letzten Veröffentlichungen ziemlich alt aussehen. Also wollte ich wissen, was die Leute tatsächlich benutzen. – LB40

+0

Was meinst du mit ziemlich alt? Im Fall von PG'OCaml ist die neueste Version einige Monate alt und es scheint eine konstante Aktivität in SVN zu geben. Wie für postgresql-ocaml gibt es keine neue Version, weil es keine Notwendigkeit gibt, zu aktualisieren, was gut läuft ... :-) –

+0

ok, mein Schlechter, ich bin nicht auf die neue Website von PG'Ocam gegangen. und für postgresql-ocaml wollte ich keine Zeit auf etwas verwenden, das ich nicht nutzen kann. Danke. – LB40

2

Ich bin ziemlich überrascht, dass Sie die ocaml-sqlite Bindungen langsam finden. sqlite ist schnell eigenständig und ich glaube, dass die sqlite Bindungen sehr gut geschrieben sind. Sie sollten sicherstellen, Sie verwenden die up-to-date Bindung von Markus Mottl's page

+0

vielleicht bin ich ein bisschen anspruchsvoll, ich analysiere eine 100 Mo Textdatei und baue eine Datenbank. Ich habe viele Einfügungen zu tun, also musste ich schlauer sein bezüglich der Aufrufe an Exec. Ich benutze die letzte Version. Ich weiß nicht, was die Leistungseinbuße ist, die durch das IO zur Datenbank verursacht wird. Datei – LB40

+1

Nur 100Mo ?! Ich analysiere das im Schlaf ... buchstäblich! – nlucaroni

+0

ich weiß nicht, was ich antworten soll :-). Sie analysieren es im Schlaf, weil es so lange dauert, dass Sie einschlafen? – LB40

3

ocaml-mysql funktioniert ohne Probleme hier - mysql api für connect/query/Fetch ändert sich nicht so viel :) Es fehlt vorbereitete Anweisungen obwohl, mysql_stmt_ * wrappers selbst implementieren musste.

+0

Ich verwende die MySQL-Bindungen ziemlich stark, einschließlich der vorbereiteten Anweisungsunterstützung. Sie funktionieren gut mit 5.0.x und 5.5.x meiner Erfahrung nach. – hcarty

0

Wenn Ihre Datenbank PostgreSQL ist, empfehle ich ocaml-postgresql. (Es gibt auch ocaml-sql, die einige SQL-Operationen bequemer macht, wenn ocaml-postgresql verwenden.)

Da PG'OCaml stark auf dem Kompilierung-Typ-System OCaml beruht, ist es unmöglich Abfragen zur Laufzeit komponieren, die es macht, Meiner Meinung nach nicht nützlich in den meisten realen Szenarien.