Drupal en tant que (puissante) base de données relationnelle


8

Je voudrais créer un Drupalsite, fournissant une plate-forme aux personnes du monde entier qui travaillent sur le même sujet de recherche pour collaborer et communiquer. (Je suis sûr que Drupal est donc un excellent choix).

Cependant, ce site devrait également comprendre une base de données relationnelle (qui sera un outil de recherche très intéressant pour les visiteurs du site). Une version de test de cette base de données existe déjà dans ooo base: elle contient 50 tables avec beaucoup de relations plusieurs-à-plusieurs et un-à-plusieurs entre elles. Fondamentalement, il enregistre les relations entre les personnes, les événements et les organisations.

Je sais qu'il est possible de créer une base de données relationnelle dans drupal en créant des types de contenu personnalisés et en utilisant le module de connexion d'entité. Cependant, après avoir regardé la façon dont Drupal stocke ces données dans sa base de données mysql, je crains que cette façon de construire une base de données ne me soit pas très utile, car il semble très difficile d'interroger les données (ou d'utiliser [social réseau] sur eux). La possibilité d'interroger facilement les données est cruciale pour ma base de données.

Je sais qu'il est possible d'ajouter une deuxième base de données au site drupal (cf http://drupal.org/node/18429 ). Cependant, je ne sais pas si c'est la solution à mon problème.

Très court j'aimerais savoir:

(1) S'il est possible de changer la façon dont Drupal enregistre les données de certains types de contenu dans sa base de données mysql, d'une manière qui semble plus «naturelle» pour analyser les données (et pouvoir les interroger facilement)

(2) S'il est possible d'ajouter une seconde mysqldatabase au site drupal, qui organise les données de certains types de contenu de manière personnalisée (plus «naturelle»). Si possible, les utilisateurs du site drupal doivent pouvoir ajouter du contenu et analyser ces données, comme s'ils étaient enregistrés dans la même base de données.

Je serais très reconnaissant si quelqu'un pouvait m'aider!

Réponses:


3

Vous avez un bon départ pour travailler avec les bases de données. D'après ma propre expérience, je répugne à me fier / permettre à Drupal de conserver toutes les données sensibles. Et puisque vous avez déjà une base de données robuste, il semble que ce ne serait pas non plus une bonne option pour vous.

Cela dit, il semble que vous souhaitiez simplement vous connecter à la sauvegarde de nœud / contenu qui se produit dans Drupal. Vous pourrez alors vous connecter à une base de données externe et traiter et insérer les données comme bon vous semble.

Node API Hooks - D6 a des fonctions similaires, juste nommées différemment. Il y a beaucoup de points de crochet dans le processus. Vous pouvez même modifier des formulaires et ajouter vos propres fonctions d'envoi.


2

Si vous souhaitez avoir votre propre flux de travail pour enregistrer les types de contenu et ses champs dans la base de données, vous pouvez consulter l' API Field Storage . Il est utilisé pour effectuer tous les "accès à la base de données".

Par exemple, vous pouvez consulter le module MongoDB pour voir comment il peut être implémenté. (Je vois que vous avez besoin de SQL DB, utilisez simplement ce module comme exemple).

Consultez également l'article « Entités distantes dans Drupal 7 » qui décrit comment l'entité entière (c'est-à-dire le type de contenu) peut être enregistrée ailleurs que dans la base de données Drupal par défaut.


1

J'ai récemment lancé un sandbox pour l'intégration de Drupal <=> Neo4J.

http://drupal.org/sandbox/Letharion/1861580

C'est encore à un stade très précoce, mais Neo4j semble que ce serait un moyen pour vous de permettre une bien meilleure interrogation. L'idée n'est cependant pas de changer la façon dont Drupal stocke ses données, mais plutôt de dupliquer les liens entre les contenus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.