2010-03-17 5 views
2

Je cherche à savoir si Cassandra pourrait être une option pour un magasin de base de données distribuée pour notre logiciel serveur.Comment accéder à une base de données distribuée Cassandra à partir de Delphi

Le logiciel serveur est écrit en Delphi, mais j'ai du mal à trouver des descriptions de la façon d'accéder à une base de données Cassandra à partir de Delphi.

+0

Y a-t-il une sorte d'interface «vanille» que vous pouvez utiliser pour accéder à Cassandra, ou est-ce vraiment ce que Thrift est? –

+1

Considérez memcachedb. Il a une interface si simple que vous pouvez tester des choses en utilisant telnet. C'est encore plus simple que l'interface http. :-) –

+0

J'ai trouvé un composant bigtable pour Delphi - Synopse Big Table - http://blog.synopse.info/ –

Répondre

2

Une suggestion elsewhere on SO consiste à écrire votre propre générateur Delphi pour le framework Thrift.

+0

J'ai regardé le générateur Thrift. C'est certainement l'option 'meilleure'/'la plus appropriée', mais il y a quelques problèmes: il est difficile de la compiler/l'exécuter sous Windows. C'est un code assez compliqué/dense en termes de génération de code source. Le manque de génériques dans pré D2009 signifie que deux versions devraient être créées (nous utilisons toujours D2007 pour un certain nombre de raisons). –

+0

J'ai localisé une copie du code généré par C# et des bibliothèques associées à partir de quelqu'un sur la liste de diffusion des utilisateurs de Cassandra. J'ai utilisé ce code comme modèle pour implémenter une application de preuve de concept relativement petite dans Delphi qui peut communiquer avec un nœud Cassandra et effectuer des opérations insert() et get(). En réalité, le code standard est un peu douloureux, mais c'est surtout une question de copier/coller et de tweak, donc le temps n'est pas important ... –

1

Je vois deux options, soit écrire votre propre pilote Delphi natif ou utiliser les pilotes disponibles en quelque sorte.

Une solution pourrait être d'utiliser Python4Delphi pour héberger Python dans l'application Delphi et d'utiliser du code Python pour interfacer Cassandra. Un peu maladroit et la performance n'est probablement pas la meilleure possible.


Edit: Option 3: Ecrire un serveur proxy avec le langage pris en charge, qui offre une interface pour votre application Delphi.

+0

Les relations entre Cassandra et Thrift - Generated Clients semblent plutôt confuses de l'extérieur. Je suppose qu'un pilote Delphi natif qui remplace la couche Thrift serait faisable, bien que j'ai besoin de rechercher l'API Thrift comme utilisé pour parler à Cassandra ... –

+0

Fondamentalement, vous devez d'abord implémenter le protocole Thrift RPC dans Delphi, puis générer l'API pour Cassandra utilisant Thrift. Je regarderais si d'autres solutions auraient plus facilement l'API implémentable d'abord. – Harriv

+0

Avez-vous des suggestions particulières pour un magasin d'index/valeur similaire à Cassandra avec une API plus simple? –

0

Cassandra a été écrit en Java, et est généralement déployé sur des systèmes Linux (le terme LAMP fait référence à la pile de suspects habituels: linux-apache-mysql-php). Dans ce cas, Cassandra serait une alternative à SQL Server pour MySQL, et serait utilisée par les développeurs java-centric, donc pas de PHP là-bas. Mais vous parlez toujours du monde Unix/Linux, alors que Delphi existe dans le monde Windows. Donc, avec Cassandra s'exécutant sur une machine Linux (serveur web), comment y accéder à partir d'une application Delphi sous Windows? Les API font partie de l'API facebook "Thrift". Vous pouvez utiliser un module d'intégration Python-Delphi pour charger les API Python Thrift. Ou vous pourriez écrire votre propre intégration native de pascal Thrift. Je vois des problèmes avec les deux approches. D'une part, vous seriez seul ici, d'une façon ou d'une autre.

On dirait que Cassandra peut fonctionner sous Windows (il est écrit en Java, donc mieux!), Et un fichier bat est inclus pour le démarrer sous Windows, mais la disposition des fichiers est "plus conçue pour Unix", et il est utilisé en déploiement presque exclusivement sur les systèmes Linux ou Unix.

+0

J'ai trouvé http://developers.facebook.com/thrift/thrift-20070401.pdf, ce qui semble être une discussion respectable sur la façon dont Thrift est implémentée et qui est la spécification de référence contre lequel (je suppose) toutes les autres implémentations de langage sont codées. Cependant, cela semble être un gros morceau de travail si vous devez le construire à partir de zéro, ou peut-être pas - c'est difficile à dire! Cassandra directement –

0

Juste pour mettre à jour sur cette question, comme c'était l'un des rares retours de Google sur ce sujet, il y a maintenant une implémentation Delphi de Thrift sur apache.org.

0

Une autre mise à jour: Il suffit de travailler sur PasCassa, un client Cassandra pour Delphi, basé sur l'interface Thrift mentionné here.

Questions connexes