Le site officiel de l'OREDERDB dit:
sur les quincailleries communes jusqu'à 150.000 documents par seconde, 10 des milliards de documents par jour. Les gros graphiques sont chargés dans quelques millisecondes sans exécuter des jointures coûteuses telles que le rapport relationnel DBMSS. P> BlockQuote>
Mais, exécutant le code suivant montre qu'il faut ~ 17000ms pour insérer 150000 documents simples. p>
xxx pré> mon matériel: p>
- Dell OptiPlex 780 LI>
- Intel (R) Core (TM) 2 Duo CPU E7500 @ 2.93GHz LI>
- 8 Go de RAM LI>
- Windows 7 64bits LI> ul>
Qu'est-ce que je fais mal? P>
Séparez les sauvegardes dans 10 threads simultanés pour minimiser les frais générales de Java rendu à environ 13 000 ms. Encore beaucoup plus lentement que ce que dit la page d'avant Orientdb. P> p>
3 Réponses :
Vous pouvez y parvenir en utilisant "base de données plate" et orientedb en tant que bibliothèque intégrée en Java voir plus expliqué ici http://code.google.com/p/orient/wiki/javaapi p>
Ce que vous utilisez est le mode serveur et il envoie de nombreuses demandes au serveur Oriendb, à en juger par votre référence, vous avez environ 10 000 inserts par secondes qui n'est pas mauvais, E.g Je pense que 10 000 demandes / s sont très bonnes performances pour tout serveur Web (Et Oriendb Server est en fait un serveur Web et vous pouvez la demander via HTTP, mais je pense que Java utilise le mode binaire) P>
Lire la documentation d'abord sur la manière de faire de la meilleure performance!
Peu de conseils: p>
-> strong> N'instanciez pas toujours l'odocument: P> final ODocument doc;
for (...) {
doc.reset();
doc.setClassName("Class");
// Put data to fields
doc.save();
}
Il n'y a pas de problème pour un test de fonctionnement aussi long pour utiliser System.CurrentTimeMemillis comme chronomètre. Bien sûr, vous pourriez faire de l'échauffement avant de mesurer (et utiliser Nanotime), mais je ne pense pas que cela change le résultat d'un ordre de magnitut. Vous pouvez même maîtriser le temps et il serait valide.
Les chiffres du site Oriendb sont compensés pour une base de données locale (sans frais de réseau de réseau), donc si vous utilisez un protocole distant, attendez-vous à des retards. p>
comme Krisztian a souligné, réutiliser des objets si possible. P>
Avez-vous pu obtenir le plus de performance? J'étudie ce problème, mais ma performance est encore pire que vous
J'ai décidé d'utiliser H2 au lieu de Oriendb. H2 convient à mon cas d'utilisation.