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 résultats
- 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 https://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
https://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
- (en) Site officiel
- (en) « Accueil du projet Buzhug », sur SourceForge.net.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.