Est-ce que quelqu'un connaît un moyen de réduire/compacter une base de données db4o?db4o: compactage/rétrécissement
Répondre
Qu'entendez-vous par compact/shrink? Rendre une base de données existante plus petite? Ou voulez-vous compresser la base de données? L'un des rôles est defragmentation. Cela libère de l'espace inutilisé dans la base de données. Lorsque vous supprimez des objets, la base de données ne rétrécit pas. Au lieu de cela, l'espace est marqué comme libre pour de nouveaux objets. Cependant, avec le temps supplémentaire avec la manipulation de la base de données, le fichier est fragmenté. La défragmentation ramène donc l'espace inutilisé dans la base de données.
Lorsque vous stockez beaucoup de chaînes, vous devez envisager d'utiliser UTF8 encoding au lieu d'unicode complet par défaut. Cela économise beaucoup d'espace, car un caractère utilise désormais un seul octet.
EmbeddedConfiguration config = Db4oEmbedded.newConfiguration();
config.common().stringEncoding(StringEncodings.utf8());
ObjectContainer database = Db4oEmbedded.openFile(config,"database.db4o");
Notez que vous ne pouvez pas modifier ce paramètre pour les bases de données existantes! Vous devez défragmenter la base de données afin de changer le codage de chaîne.
Pour compresser la base de données, vous pouvez utiliser une compression storage-implementation. Cependant, je ne connais aucune implémentation disponible qui le fait.
- 1. expériences db4o?
- 2. db4o Mvc Architecture d'application
- 3. Db4o sélectionnez la performance
- 4. db4o interrogation sous-objet
- 5. ninject 2 et db4o
- 6. Structure db4o Arbre C#
- 7. Db4o sélectionner des objets aléatoires
- 8. Exemples de sites utilisant db4o
- 9. db4o Système de réplication: NullReferenceException?
- 10. Ascenseur avec db4o Modèle d'utilisateur
- 11. Comment utiliser DB4O dans ASP.NET
- 12. db4o Outils et ressources de développement?
- 13. db4o SODA compare les valeurs des champs
- 14. linq à Db4o n'utilisant pas l'index
- 15. Exécuter un "SELECT TOP n" db4o
- 16. DB4O avec les services RIA Silverlight
- 17. db4o - ignore la propriété de classe spécifique
- 18. DB4O close() efface la base de données?
- 19. Syntaxe Lambda dans linq à db4o?
- 20. db4o problème avec le graphique des objets
- 21. db4o StartsWith et ignorer la casse
- 22. db4o sur l'hébergement partagé avec asp.net MVC
- 23. db4o objet mise à jour dilemme
- 24. Mise à jour de l'objet Db4o
- 25. Db4o, Java: Stockage d'images à l'aide de blobs
- 26. Comment s'inscrire aux rappels sur un serveur DB4O?
- 27. db4o multiple store() et un close() ne fonctionne pas?
- 28. db4o et OSGi - base de données vide après redémarrage
- 29. problème avec db4o (java) lors de l'exécution d'une requête
- 30. Comment utiliser la distincte sur les bases de données db4o
bien la raison pour laquelle je demande est parce que j'utilise un programme appelé RSSOwl (off of sourceforge). La base de données pour le programme est maintenant à près de 2 Go et on m'a dit sur leurs forums qu'il est possible de supprimer des nouvelles du programme, mais que le db ne sera jamais plus petit. Donc, si les objets sont supprimés de la base de données, mais la taille ne diminue pas, je supposais qu'il devait y avoir un moyen de perfrom une opération compacte ou rétrécir. Juste je ne peux pas le trouver ... – NinjaCat
db4o Défragmenter fera ce que vous voulez. Vous devriez l'exécuter avec les sources RSSOwl dans le CLASSPATH. Vous pouvez demander aux gars RSSOwl d'inclure Defragment dans leur produit. C'est vraiment facile pour eux. C'est juste 3 lignes qu'ils doivent ajouter à leur code et un élément de menu supplémentaire pour leur application. –
Wow ... existe-t-il un utilitaire pour cela, ou dois-je écrire une petite application? – NinjaCat