Oracle a récemment publié un Berkeley DB back-end pour SQLite. J'ai justement une des centaines de mégaoctets de base de données SQLite qui pourrait très bien profiter de "l'amélioration de la performance, la concurrence, l'évolutivité et la fiabilité", mais Oracle du site ne semble pas les mesures de l'amélioration. A quelqu'un ici fait un peu de benchmarking?
Réponses
Trop de publicités?J'ai participé à la bêta de l'évaluation de la BDB SQLite code et l'un des choses que j'ai essayé d'obtenir une poignée sur a la différence de performances. À ce stade, Je ne peux pas publier exactement ce que j'ai trouvé jusqu'à ce que j'ai au moins une autre personne évaluer mon code, exécutez les tests, et de confirmer les chiffres que j'ai eu (qui est fait). Cependant, je peux généraliser et dire qu'il y a des cas où BDB offre d'importantes améliorations de performances sur SQLite, plus précisément dans la domaine de la manipulation de lourdes charges qu'impliquent l'écriture de la simultanéité.
Il y a, en général, deux mesures "rapides" à droite -- (1) efficacité: depuis combien de temps faut-il pour qu'un processus unique de faire XYZ vs (2) de la simultanéité: combien de fois de nombreux processus ne XYZ par unité de temps. Le principal problème de la BDB adresses la simultanéité -- à grande échelle de traitement de la transaction. Donc vous pensez que de nombreux connexions simultanées de l'écriture et/ou de modifier le contenu de la base de données.
SQLite par la conception utilise la base de données de verrouillage au niveau de la sorte il y a un maximum d'une l'écrivain qui peut travailler dans la base de données à la fois. Ainsi, SQLite de la transaction le taux reste plus ou moins constante avec le nombre de connexions simultanées, donc c'est l'évolutivité en écriture intensive des applications est vraiment mesurée par sa l'efficacité (1).
BDB sur l'autre main utilise au niveau de la page de verrouillage, ce qui permet à plusieurs auteurs de travailler dans la base de données à un moment donné (à condition qu'ils travaillent sur des pages distinctes). Ainsi, BDB taux potentiellement augmente avec le nombre de connexions et donc son évolutivité est à la fois une question d'efficacité (1) et de la concurrence (2), ce qui peut ajouter jusqu'à.
Surtout de ce qu'il se résume à (écrire) la simultanéité. BDB peut pousser plus de TPS que SQLite par plusieurs écrivains. Par transaction, je veux dire quelque chose qui modifie le base de données (comment sont-ils d'une véritable aide pour les opérations en lecture seule?). Cela dit, pour lire la simultanéité (les applications qui effectuent principalement Sélectionne), SQLite pourrait très bien aller en tête à tête avec BDB car le verrouillage n'est plus un problème critique.
Comme pour la taille de la base de données, je ne suis pas sûr. Je n'ai pas regardé dans les qu'. En fin de compte, ils ont tous deux l'utilisation de B-arbres pour le stockage. Il y a peut être des facteurs dans leurs implémentations respectives à prendre en compte, mais je n'ai pas étudié ce que. J' savoir que SQLite peut facilement traiter des ensembles de données de plusieurs centaines de mo et deux chiffres (Sgb) (et peut-être plus maintenant que le sale page de la carte de mise en œuvre a été changé).
Par conséquent, si vous avez une application qui utilise beaucoup de connexions modifier une base de données et les conflits de pages est relativement faible, alors BDB peut offrir des améliorations de performances significatives. Mais les conflits de pages est une critique variable. À la limite, si vous aviez une BDB base de données dont les données a consisté en une seule page, alors elle pourrait correspondre à celle de SQLite dans tous les cas parce que au niveau de la page de verrouillage ici efficacement dégénère en l'équivalent de l' la base de données de niveau de verrouillage, tout le monde se bat sur une chose. Cependant, comme l' nombre de pages augmente BDB (et la page de contention diminue), alors la maximum de TPS va commencer à croître avec le nombre de connexions simultanées. Alors à partir de ce point, la mémoire devient le prochain facteur limitant. Mais c'est une autre histoire.
BTW, je suis en train d'écrire un article sur l'utilisation de la BDB pour ceux à venir de SQLite.
Liens vers les articles:
www.oracle.com/technetwork/database/berkeleydb/learnmore/bdbvssqlite-wp-186779.pdf
www.oracle.com/technetwork/database/berkeleydb/bdb-sqlite-comparison-wp-176431.pdf
C'est un peu une question piège. Les résultats varient considérablement selon votre disque vitesses d'accès, la taille du cache en mémoire, le nombre de plaquettes vs lit, la page se divise, la concurrence, etc, etc, etc.
Dans l'ensemble, BerkeleyDB peut être extrêmement rapide - j'ai récemment conçu une construit une analyse des données de la plateforme pour un employeur qui a été capable de faire 40k insère par seconde sur un 8 core x86 système (alors que dans le même temps faire des milliers de lectures par seconde) avec un jeu de données dans la 30G de gamme. Ce fut avec transactionnel complet de protection.
Qui a été le meilleur des cas, cependant, il y avait des moments où insère pourrait tomber aussi bas que 2k par seconde, selon les données entrantes et ce qui était actuellement stockés dans Berkeley. Les performances chutent de manière significative si vous avez des e/S disque lente et faible taux de recours au cache ou sont en constante expansion de la DB causant la page se divise à se produire. Il y a aussi une énorme quantité de réglage que vous pouvez faire pour augmenter les performances de votre jeu de données.
Dans l'ensemble c'est un excellent système, mais de la documentation et de la connaissance est assez mince. Je recommande Le BerkeleyDB Livre , probablement la meilleure référence actuellement disponibles.
En plus de la base de données Berkeley Livre que Brian mentionne, vous pouvez aussi consulter les ressources suivantes utile:
- Le Berkeley DB forums en ligne peut fournir beaucoup de suggestions de fois les utilisateurs et les développeurs du produit. Voir Berkeley DB forum,
- Le Berkeley DB ensemble de la documentation, qui peut être trouvé ici. En particulier, il y a plusieurs sections dans le Guide de Référence couvrant de réglage, de performance et de débit.
En ce qui concerne,
Dave