AccueilđŸ‡«đŸ‡·Chercher

Buzhug

Buzhug est un systĂšme de base de donnĂ©es rapide, Ă©crit en pur Python, y compris le langage de requĂȘte, Ă©crit par le mĂȘme auteur que Karrigell et licenciĂ© sous licence BSD.

Buzhug permet d'ĂȘtre utilisĂ© pour des applications de taille moyenne.

IntĂ©rĂȘt de Buzhug

Les données sont stockées et accessibles sur le disque. Elles ne sont pas dans une base de données mémorisée. Buzhug est plus rapide que d'autres modules écrits en pur-python (KirbyBase, gadfly). Buzhug permet de faire toutes les opérations, et spécifiquement les sélections, aussi vite que possible avec un langage interprété.

Capacités et limitations

On ne peut stocker pour un simple champ plus de 2,2 gigaoctets de données.

La charge mémoire est minimum.

Exemple

### Creation de la base
# Importation
from buzhug import Base
# Création de la Base auteurs
base_auteurs = Base('base_auteurs').create(('nom',str),('prenom',str))
# Création de la Base articles
base_articles = Base('base_articles').create(('titre',str),('article',str),('date_creation',str),('categorie',str),('auteur', base_auteurs))
# Ouvrir les bases créées
base_auteurs = Base('base_auteurs').open()
base_articles = Base('base_articles').open()
# Insérer les données dans la base auteurs
base_auteurs.insert(nom = "Torvald", prenom = "linus")
base_auteurs.insert(nom = "Stallman", prenom = "richard")
# Le champ auteur de la base base_articles fait une référence aux enregistrements dans la base base_auteurs
Torvald = base_auteurs.select(nom = "Torvald")[0]
Stallman = base_auteurs.select(nom = "Stallman")[0]
base_articles.insert(str("karrigell"), str("Karrigell est un framework python et buzhug sa base. Il a Ă©tĂ© pensĂ© pour ĂȘtre vraiment simple Ă  utiliser : serveur web intĂ©grĂ©, base de donnĂ©es, \
accĂšs facile aux donnĂ©es d'environnement et aux formulaires, et en mĂȘme temps complet et puissant."), str("01/10/2008"), str("informatique"), Torvald)
base_articles.insert(str("gnu"), str("Le projet GNU est lancé par Richard Stallman en 1984, alors qu'il travaillait au laboratoire d'intelligence artificielle du MIT, \
 afin de créer un systÚme d'exploitation libre et complet."), str("01/11/2008"), str("informatique"), Stallman)
### Utilisation de la base
# Affiche le nom de l'auteur du premier article.
print "Affiche le nom de l'auteur du premier article : " + base_articles[0].b_auteur.nom
# Affiche le nom de l'auteur du second article.
print "Affiche le nom de l'auteur du second article : " + base_articles[1].b_auteur.nom
# Affiche les titres des articles de l'auteur Stallman.
print "Titres des articles de l'auteur Stallman : "
for i in range(len(base_articles)):
	if base_articles[i].b_auteur.nom == "Stallman":
		print base_articles[i].titre
# Recherche tous les articles lies Ă  cet auteur.
resultats_articles_lies =[ (r.titre, r.article, r.date_creation, r.categorie) for r in base_articles if r.auteur.nom == "Stallman"]
	for i in range(len(resultats_articles_lies)):
		print "titre : %s\n	contenu: %s\n	date creation : %s\n	categorie : %s" % (resultats_articles_lies[i][0], resultats_articles_lies[i][1], \
 resultats_articles_lies[i][2], resultats_articles_lies[i][3])

Buzhug permet

  • de sĂ©lectionner des enregistrements par identifiants, par mots clefs, par liste comprĂ©hension ou gĂ©nĂ©rateur d'expressions
  • d'utiliser une mĂ©thode spĂ©ciale de sĂ©lection plus efficace avec de meilleures performances (tests d'Ă©galitĂ©s, de valeurs, et complexes)
  • d'utiliser les expressions rĂ©guliĂšres
  • de classer les resultats
  • de mettre Ă  jour les enregistrements, de les effacer, de dĂ©terminer leur nombre
  • de modifier les champs et les types
  • de nettoyer la base
  • de crĂ©er de façon trĂšs simple des liens dynamiques entre les bases
  • de modifier la structure (ajouts et suppression de champs)
  • d'ĂȘtre utilisĂ© sans problĂšmes pour des applications de taille moyenne
  • de fonctionner en mode client-server en utilisant un serveur HTTP asynchrone http://buzhug.sourceforge.net/client_server.html

Implementation

Buzhug a Ă©tĂ© pensĂ© pour faire toutes les opĂ©rations, surtout les sĂ©lections le plus vite possible. La vitesse a Ă©tĂ© optimisĂ©e, mĂȘme s'il y a un peu plus de fichiers Ă  gĂ©rer et un peu plus d'espace disque utilisĂ©. C'est pourquoi une base n'est pas conservĂ©e dans un simple fichier, mais dans un repertoire contenant plusieurs fichiers.

Comparaison de vélocité avec d'autres bases

   1000 records
              buzhug    kirbybase        gadfly           sqlite
                         index     no index    index   no index  index
   create     0.31       0.12        0.59      1.87    0.33      0.41
   select1    0.20       4.02        3.96      4.13    0.07      0.18
   select2    0.80       4.08        -         -       0.17      0.16
   delete1    0.04       0.06        -         -       0.26      0.28
   delete2    0.16       0.10        0.07      0.07    0.22      0.17
   update1    0.48       2.77        5.22      5.48    0.34      0.21
   update2    0.74      25.19       35.39      0.83    0.68      0.41
   25000 records
                buzhug   kirbybase   gadfly (1)          sqlite
                                   no index         no index   index
   create       6.54       2.49       19.50         1.62       2.49
   select1      3.68      97.19       74.71         2.29       2.30
   select2     18.99      96.42        -            3.64       3.69
   delete1      0.77       1.18        -            1.04       1.20
   delete2      2.61       1.79        1.02         0.44       0.62
   update1      1.30      11.33      110.78         1.72       0.46
   update2      0.77      22.51      975.67         9.35       0.46
   (1) not tested with index, creation time is +INF

http://buzhug.sourceforge.net/performance.html#conclusions

Liens internes

  • (fr) karrigell(français) Frameworks web en python trĂšs intuitif, crĂ©Ă© par l'auteur de Buzhug.

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.