OVH Cloud OVH Cloud

Aide sur ZODB

9 réponses
Avatar
Leuk
Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de données
et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)

9 réponses

Avatar
Gilles Lenfant
"Leuk" a écrit dans le message de news:
419f087b$0$32312$
Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de
données et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)



Pas évident de faire une réponse tranchée à cette question. Je peux juste
signaler plus loins quelques critères qui te permettront de faire le
meilleur choix.

En tout premier lieu, la ZODB n'est pas qu'une base de données.

Il y a dans la ZODB (pour simplifier) :

* une couche d'abstraction et des services qui permettent de produire des
objets Python persistants de façon _presque_ transparente.

* une couche de gestion du stockage des objets dans un back-end de
persistence, le FilesystemStorage.

Grace à l'APE (Adaptable Persistence Engine), il est possible de remplacer
le FileSystemStorage par un autre back-end, sachant que PostgreSQL est (sera
?) un back-end envisageable pour la ZODB.

Il y a donc possibilité d'utiliser conjointement la ZODB et PostgreSQL.

Attention, en tout état de cause et quelque soit le back-end de stockage
choisi, la ZODB - côté application - est une base en modèle BTree. Il est
toutefois possible de simuler le modèle relationnel en utilisant le ZCatalog
(qui peut être utilisé hors Zope).

D'autre part, l'utilisation de la ZODB te permettra par la suite de fournir
sans difficulté majeure une interface Web à ton application par
l'intermédiaire de Zope et ZEO.

D'un autre côté PostgreSQL est une base de données tabulaire et
relationnelle classique. Si ton application doit partager ses données aavec
une autre application non Python, l'utilisation directe de PostgreSQL par
l'intermédiaire de l'adaptateur ad hoc (popy ?) devra être préférée.

En souhaitant que ces quelques lignes te permettent de préciser ce choix.

--
Gilles

Avatar
Leuk
Merci pour les infos. Tes commentaire me sont bien utiles.
En fait je suis sur un projet ou je dois concevoir un système de supervision
de réseau. Programmé en Java de type 3 tiers. La base de donnée ou je vais
stocker mes objets sera donc sur un serveur (site) distant. Il me semblait
que PostgreSQL était aussi un BD objet. De toutes façon dans tous les cas
j'utiliserai uniquement ZODB ou (exclusif) PostgreSQL. Est-ce réalisable
simplement?
Du fait que le traitement se trouvera sur un autre serveur (site) que la
base et de plus sera en Java, cela ne va pas me compliquer la tâche? Je
pense que c'est jouable.
Qu'en penses-tu?(je n'utiliserai donc pas Zope ni ZEO.)
Merci d'avance.

Jean-Louis

"Gilles Lenfant" a écrit dans le message de
news: 419f187b$0$8187$
"Leuk" a écrit dans le message de news:
419f087b$0$32312$
Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de
données et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)



Pas évident de faire une réponse tranchée à cette question. Je peux juste
signaler plus loins quelques critères qui te permettront de faire le
meilleur choix.

En tout premier lieu, la ZODB n'est pas qu'une base de données.

Il y a dans la ZODB (pour simplifier) :

* une couche d'abstraction et des services qui permettent de produire des
objets Python persistants de façon _presque_ transparente.

* une couche de gestion du stockage des objets dans un back-end de
persistence, le FilesystemStorage.

Grace à l'APE (Adaptable Persistence Engine), il est possible de remplacer
le FileSystemStorage par un autre back-end, sachant que PostgreSQL est
(sera ?) un back-end envisageable pour la ZODB.

Il y a donc possibilité d'utiliser conjointement la ZODB et PostgreSQL.

Attention, en tout état de cause et quelque soit le back-end de stockage
choisi, la ZODB - côté application - est une base en modèle BTree. Il est
toutefois possible de simuler le modèle relationnel en utilisant le
ZCatalog (qui peut être utilisé hors Zope).

D'autre part, l'utilisation de la ZODB te permettra par la suite de
fournir sans difficulté majeure une interface Web à ton application par
l'intermédiaire de Zope et ZEO.

D'un autre côté PostgreSQL est une base de données tabulaire et
relationnelle classique. Si ton application doit partager ses données
aavec une autre application non Python, l'utilisation directe de
PostgreSQL par l'intermédiaire de l'adaptateur ad hoc (popy ?) devra être
préférée.

En souhaitant que ces quelques lignes te permettent de préciser ce choix.

--
Gilles





Avatar
bruno modulix
(top-post corrigé)

"Gilles Lenfant" a écrit dans le message de
news: 419f187b$0$8187$

"Leuk" a écrit dans le message de news:
419f087b$0$32312$

Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de
données et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)



Pas évident de faire une réponse tranchée à cette question. Je peux juste
signaler plus loins quelques critères qui te permettront de faire le
meilleur choix.

En tout premier lieu, la ZODB n'est pas qu'une base de données.

Il y a dans la ZODB (pour simplifier) :

* une couche d'abstraction et des services qui permettent de produire des
objets Python persistants de façon _presque_ transparente.

* une couche de gestion du stockage des objets dans un back-end de
persistence, le FilesystemStorage.

(snip)



D'un autre côté PostgreSQL est une base de données tabulaire et
relationnelle classique. Si ton application doit partager ses données
aavec une autre application non Python, l'utilisation directe de
PostgreSQL par l'intermédiaire de l'adaptateur ad hoc (popy ?) devra être
préférée.

En souhaitant que ces quelques lignes te permettent de préciser ce choix.

Merci pour les infos. Tes commentaire me sont bien utiles.

En fait je suis sur un projet ou je dois concevoir un système de supervision
de réseau. Programmé en Java de type 3 tiers.


Utilise postgreSQL.

La base de donnée ou je vais
stocker mes objets sera donc sur un serveur (site) distant. Il me semblait
que PostgreSQL était aussi un BD objet.


C'est une base "relationnel/objet", ce qui signifie (en simplifiant
outrageusement) qu'elle offre un support pour des types de données
structurés et un héritage entre tables.

De toutes façon dans tous les cas
j'utiliserai uniquement ZODB ou (exclusif) PostgreSQL. Est-ce réalisable
simplement?
Du fait que le traitement se trouvera sur un autre serveur (site) que la
base et de plus sera en Java, cela ne va pas me compliquer la tâche? Je
pense que c'est jouable.


Je ne vois pas trop comment tu comptes attaquer la ZODB en Java (ou bien
je ne suis pas réveillé et je n'ai pas compris ton post ?). Je ne dis
pas qu'il n'y ai pas de solutions techniques à cette question, mais je
ne vois pas lesquelles pour l'architecture que tu décris.

Bruno



Avatar
Gilles Lenfant
"Leuk" a écrit dans le message de news:
419fb59a$0$24770$
Merci pour les infos. Tes commentaire me sont bien utiles.
En fait je suis sur un projet ou je dois concevoir un système de
supervision de réseau. Programmé en Java de type 3 tiers. La base de
donnée ou je vais stocker mes objets sera donc sur un serveur (site)
distant. Il me semblait que PostgreSQL était aussi un BD objet. De toutes
façon dans tous les cas j'utiliserai uniquement ZODB ou (exclusif)
PostgreSQL. Est-ce réalisable simplement?
Du fait que le traitement se trouvera sur un autre serveur (site) que la
base et de plus sera en Java, cela ne va pas me compliquer la tâche? Je
pense que c'est jouable.
Qu'en penses-tu?(je n'utiliserai donc pas Zope ni ZEO.)
Merci d'avance.


C'est assez confus. L'application de supervision à réaliser est-elle en Java
ou en Python ? Ne t'es-tu pas gouré de NG :) ?

Bon, dans l'hypothèse où il faut réaliser un système de supervision en
Python, accédant à des données abritées dans une base PostgreSQL distante,
données partagées avec une (ou plus) applications Java, tu peux oublier la
ZODB qui ne sera d'aucune utilité dans ton cas.

L'accès à une base PostgreSQL depuis une appli en Python nécessitera un
adapteur ad hoc compatible avec la DB API 2. La bonne adresse de départ pour
cette API et les adaptateurs compatibles :

http://www.python.org/sigs/db-sig/

A partir d'une certaine complexité de requêtes, ou de structure de tables,
ou des deux, il est préférable de s'orienter vers des infrastructures
intermédiaires telles que dbobj ou modeling qui fournissent une couche
d'abstraction de la logique de persistence et la logique transactionnelle.

http://www.xs4all.nl/~bsarempt/python/dbobj.html

http://modeling.sourceforge.net/

Note : si tu connais déjà EOF (Next/Apple), "modeling" te deviendra
rapidement familier.

Bon courage

--
Gilles



Jean-Louis

"Gilles Lenfant" a écrit dans le message de
news: 419f187b$0$8187$
"Leuk" a écrit dans le message de news:
419f087b$0$32312$
Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de
données et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)



Pas évident de faire une réponse tranchée à cette question. Je peux juste
signaler plus loins quelques critères qui te permettront de faire le
meilleur choix.

En tout premier lieu, la ZODB n'est pas qu'une base de données.

Il y a dans la ZODB (pour simplifier) :

* une couche d'abstraction et des services qui permettent de produire des
objets Python persistants de façon _presque_ transparente.

* une couche de gestion du stockage des objets dans un back-end de
persistence, le FilesystemStorage.

Grace à l'APE (Adaptable Persistence Engine), il est possible de
remplacer le FileSystemStorage par un autre back-end, sachant que
PostgreSQL est (sera ?) un back-end envisageable pour la ZODB.

Il y a donc possibilité d'utiliser conjointement la ZODB et PostgreSQL.

Attention, en tout état de cause et quelque soit le back-end de stockage
choisi, la ZODB - côté application - est une base en modèle BTree. Il est
toutefois possible de simuler le modèle relationnel en utilisant le
ZCatalog (qui peut être utilisé hors Zope).

D'autre part, l'utilisation de la ZODB te permettra par la suite de
fournir sans difficulté majeure une interface Web à ton application par
l'intermédiaire de Zope et ZEO.

D'un autre côté PostgreSQL est une base de données tabulaire et
relationnelle classique. Si ton application doit partager ses données
aavec une autre application non Python, l'utilisation directe de
PostgreSQL par l'intermédiaire de l'adaptateur ad hoc (popy ?) devra être
préférée.

En souhaitant que ces quelques lignes te permettent de préciser ce choix.

--
Gilles









Avatar
Leuk
Mes questions sont a la fin du message.....

"bruno modulix" a écrit dans le message de news:
41a07711$0$5179$
(top-post corrigé)

"Gilles Lenfant" a écrit dans le message de
news: 419f187b$0$8187$

"Leuk" a écrit dans le message de news:
419f087b$0$32312$

Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de
données et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)



Pas évident de faire une réponse tranchée à cette question. Je peux juste
signaler plus loins quelques critères qui te permettront de faire le
meilleur choix.

En tout premier lieu, la ZODB n'est pas qu'une base de données.

Il y a dans la ZODB (pour simplifier) :

* une couche d'abstraction et des services qui permettent de produire des
objets Python persistants de façon _presque_ transparente.

* une couche de gestion du stockage des objets dans un back-end de
persistence, le FilesystemStorage.

(snip)



D'un autre côté PostgreSQL est une base de données tabulaire et
relationnelle classique. Si ton application doit partager ses données
aavec une autre application non Python, l'utilisation directe de
PostgreSQL par l'intermédiaire de l'adaptateur ad hoc (popy ?) devra être
préférée.

En souhaitant que ces quelques lignes te permettent de préciser ce choix.

Merci pour les infos. Tes commentaire me sont bien utiles.

En fait je suis sur un projet ou je dois concevoir un système de
supervision de réseau. Programmé en Java de type 3 tiers.


Utilise postgreSQL.

La base de donnée ou je vais stocker mes objets sera donc sur un serveur
(site) distant. Il me semblait que PostgreSQL était aussi un BD objet.


C'est une base "relationnel/objet", ce qui signifie (en simplifiant
outrageusement) qu'elle offre un support pour des types de données
structurés et un héritage entre tables.

De toutes façon dans tous les cas j'utiliserai uniquement ZODB ou
(exclusif) PostgreSQL. Est-ce réalisable simplement?
Du fait que le traitement se trouvera sur un autre serveur (site) que la
base et de plus sera en Java, cela ne va pas me compliquer la tâche? Je
pense que c'est jouable.


Je ne vois pas trop comment tu comptes attaquer la ZODB en Java (ou bien
je ne suis pas réveillé et je n'ai pas compris ton post ?). Je ne dis pas
qu'il n'y ai pas de solutions techniques à cette question, mais je ne vois
pas lesquelles pour l'architecture que tu décris.
----------------------------------------------------------------

en fait, je ne veux pas attaquer directement ZODB en Java, mais ce sera
uniquement mon traitement qui sera en Java( récupération des infos a
sauvegarder dans la base), c'est pour cela que je me demande comment je vais
pouvoir attaquer la base ZODB. (enrichissement + extractions).
Mais apparement ce que tu me dis c'est que ce serait plus simple pour moi de
le faire avec PostgreSQL.
De plus si mon traitement est en Java à quel moment (de quelle façon) je
vais utiliser Python pour manipuler ma base?
Merci beaucoup en tous cas pour les infos.
Jean-Louis
----------------------------------------------------------------


Bruno





Avatar
Leuk
Mes question dans le message .......
Dans tous les cas merci pour les infos précieuse que tu m'a données.

Jean-Louis

"Gilles Lenfant" a écrit dans le message de
news: 41a08a9a$0$8171$
"Leuk" a écrit dans le message de news:
419fb59a$0$24770$
Merci pour les infos. Tes commentaire me sont bien utiles.
En fait je suis sur un projet ou je dois concevoir un système de
supervision de réseau. Programmé en Java de type 3 tiers. La base de
donnée ou je vais stocker mes objets sera donc sur un serveur (site)
distant. Il me semblait que PostgreSQL était aussi un BD objet. De toutes
façon dans tous les cas j'utiliserai uniquement ZODB ou (exclusif)
PostgreSQL. Est-ce réalisable simplement?
Du fait que le traitement se trouvera sur un autre serveur (site) que la
base et de plus sera en Java, cela ne va pas me compliquer la tâche? Je
pense que c'est jouable.
Qu'en penses-tu?(je n'utiliserai donc pas Zope ni ZEO.)
Merci d'avance.


C'est assez confus. L'application de supervision à réaliser est-elle en
Java ou en Python ? Ne t'es-tu pas gouré de NG :) ?
----------------------------------------------------------------------------------

L'application de traitement et de récupération des données est en Java. Mais
je ne sais pas comment je peux sauvegarder ces donnée dans une base ZODB. Ne
sait-il pas plus simple pour moi d'utiliser PostgreSQL? Je ne sais pas à
quel moment Python intervient? Le système de supervision sera bien en Java.
Mais peut-être serait-il mieux de faire carrement tout en Python?
Les données ne seront utilisées que par mon appli.
----------------------------------------------------------------------------------

Bon, dans l'hypothèse où il faut réaliser un système de supervision en
Python, accédant à des données abritées dans une base PostgreSQL distante,
données partagées avec une (ou plus) applications Java, tu peux oublier la
ZODB qui ne sera d'aucune utilité dans ton cas.
----------------------------------------------------------------------------------

mon cas est trés simple je récupère des objets que je veux sauvegarder et
pouvoir récupérer pour afficher dans mon IHM. Je ne me compliquerai donc pas
la vie en utilisant PostgreSQL et Python.
En fait si j'ai bien compris PostgreSQL n'est pas réèlement une base de
donnée objet., c'est pour cela que je voudrai plutôt utilider ZODB, mais si
ça doit me compliquer la tâche...
----------------------------------------------------------------------------------

L'accès à une base PostgreSQL depuis une appli en Python nécessitera un
adapteur ad hoc compatible avec la DB API 2. La bonne adresse de départ
pour cette API et les adaptateurs compatibles :

http://www.python.org/sigs/db-sig/

A partir d'une certaine complexité de requêtes, ou de structure de tables,
ou des deux, il est préférable de s'orienter vers des infrastructures
intermédiaires telles que dbobj ou modeling qui fournissent une couche
d'abstraction de la logique de persistence et la logique transactionnelle.
----------------------------------------------------------------------------------

en fait le système en soit ne sera pas trés compliqué, il n'y aura pas de
requêtes trés complexes.
----------------------------------------------------------------------------------

http://www.xs4all.nl/~bsarempt/python/dbobj.html

http://modeling.sourceforge.net/

Note : si tu connais déjà EOF (Next/Apple), "modeling" te deviendra
rapidement familier.

Bon courage

--
Gilles



Jean-Louis

"Gilles Lenfant" a écrit dans le message de
news: 419f187b$0$8187$
"Leuk" a écrit dans le message de news:
419f087b$0$32312$
Bonjour,
je suis un nouvel utilisateur Python. Je dois utiliser ZODB, mais je ne
sais pas si PostgreSQL serai plus adaptée à mon utilisation.
Quelqu'un pourrait-il me dire les différences entre ces deux base de
données et laquelle serai plus adaptée à un "newbie".
Merci beaucoup. :-)



Pas évident de faire une réponse tranchée à cette question. Je peux
juste signaler plus loins quelques critères qui te permettront de faire
le meilleur choix.

En tout premier lieu, la ZODB n'est pas qu'une base de données.

Il y a dans la ZODB (pour simplifier) :

* une couche d'abstraction et des services qui permettent de produire
des objets Python persistants de façon _presque_ transparente.

* une couche de gestion du stockage des objets dans un back-end de
persistence, le FilesystemStorage.

Grace à l'APE (Adaptable Persistence Engine), il est possible de
remplacer le FileSystemStorage par un autre back-end, sachant que
PostgreSQL est (sera ?) un back-end envisageable pour la ZODB.

Il y a donc possibilité d'utiliser conjointement la ZODB et PostgreSQL.

Attention, en tout état de cause et quelque soit le back-end de stockage
choisi, la ZODB - côté application - est une base en modèle BTree. Il
est toutefois possible de simuler le modèle relationnel en utilisant le
ZCatalog (qui peut être utilisé hors Zope).

D'autre part, l'utilisation de la ZODB te permettra par la suite de
fournir sans difficulté majeure une interface Web à ton application par
l'intermédiaire de Zope et ZEO.

D'un autre côté PostgreSQL est une base de données tabulaire et
relationnelle classique. Si ton application doit partager ses données
aavec une autre application non Python, l'utilisation directe de
PostgreSQL par l'intermédiaire de l'adaptateur ad hoc (popy ?) devra
être préférée.

En souhaitant que ces quelques lignes te permettent de préciser ce
choix.

--
Gilles













Avatar
pbouige
In article <41a0fa8e$0$32026$, Leuk wrote:

----------------------------------------------------------------
en fait, je ne veux pas attaquer directement ZODB en Java, mais ce sera
uniquement mon traitement qui sera en Java( récupération des infos a
sauvegarder dans la base), c'est pour cela que je me demande comment je vais
pouvoir attaquer la base ZODB.


Est-ce que tu as pensé à regarder du coté de Jython (qui est
l'écriture de python en java)

Mais en tout cas pourquoi ne pas faire tout en python car ce
qui est possible en java est possible en python....

Cordialement Philippe Bouige


Avatar
bruno modulix
In article <41a0fa8e$0$32026$, Leuk wrote:


----------------------------------------------------------------
en fait, je ne veux pas attaquer directement ZODB en Java, mais ce sera
uniquement mon traitement qui sera en Java( récupération des infos a
sauvegarder dans la base), c'est pour cela que je me demande comment je vais
pouvoir attaquer la base ZODB.



Est-ce que tu as pensé à regarder du coté de Jython (qui est
l'écriture de python en java)


PAQJS, Jython ne permet pas d'accéder à l'API de CPython
(l'implémentation de référence en C).

Mais en tout cas pourquoi ne pas faire tout en python car ce
qui est possible en java est possible en python....


<aol/>


Avatar
Gilles Lenfant

Mes question dans le message .......
Dans tous les cas merci pour les infos précieuse que tu m'a données.

Jean-Louis

"Gilles Lenfant" a écrit dans le message de
news: 41a08a9a$0$8171$

"Leuk" a écrit dans le message de news:
419fb59a$0$24770$

Merci pour les infos. Tes commentaire me sont bien utiles.
En fait je suis sur un projet ou je dois concevoir un système de
supervision de réseau. Programmé en Java de type 3 tiers. La base de
donnée ou je vais stocker mes objets sera donc sur un serveur (site)
distant. Il me semblait que PostgreSQL était aussi un BD objet. De toutes
façon dans tous les cas j'utiliserai uniquement ZODB ou (exclusif)
PostgreSQL. Est-ce réalisable simplement?
Du fait que le traitement se trouvera sur un autre serveur (site) que la
base et de plus sera en Java, cela ne va pas me compliquer la tâche? Je
pense que c'est jouable.
Qu'en penses-tu?(je n'utiliserai donc pas Zope ni ZEO.)
Merci d'avance.


C'est assez confus. L'application de supervision à réaliser est-elle en
Java ou en Python ? Ne t'es-tu pas gouré de NG :) ?


----------------------------------------------------------------------------------
L'application de traitement et de récupération des données est en Java. Mais
je ne sais pas comment je peux sauvegarder ces donnée dans une base ZODB. Ne


ZODB en Java ? (quasi) impossible.

sait-il pas plus simple pour moi d'utiliser PostgreSQL? Je ne sais pas à
quel moment Python intervient? Le système de supervision sera bien en Java.
Mais peut-être serait-il mieux de faire carrement tout en Python?


Sans le moindre doute, tu prêches chez un converti :o)

--
Gilles