La fonction begin_transaction prend un argument booléen qui indique quel type de synchronisation doit être effectué; physique quand elle est vraie ou logique lorsqu'elle est fausse. Qu'est-ce que cela signifie quand il se réfère à une synchronisation "physique", ou dure,?Qu'est-ce que la «synchronisation physique» de la base de données du Cabinet de Kyoto?
Répondre
Je ne suis pas exactement sûr les équivalents Java, mais:
signifie synchronisation logique que tout changement DB sont écrits à partir du cache SGBD du système de fichiers. En C, vous le feriez en utilisant fprintf/fwrite/write/etc. La synchronisation physique signifie ce qui précède, avec l'opération supplémentaire de demander au système d'exploitation de pousser ces changements vers le stockage permanent (disque dur, SSD, peu importe) plutôt que de les conserver dans le cache du système de fichiers. Cela garantit que ces changements ne sont pas perdus si quelque chose de mal se passe. Sur un système Linux/POSIX qui impliquerait d'appeler les appels système fsync() ou fdatasync().
EDIT:
Apparemment, l'équivalent de fsync() en Java est FileDescriptor.sync():
http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileDescriptor.html#
Le fait est que, pour obtenir une véritable sémantique d'acide pendant une DB , toutes les transactions doivent être synchronisées avec le support de stockage permanent. Sinon, votre application devra être capable de traiter les transactions qui ont échoué silencieusement - le SGBD enverra les transactions au système de fichiers et retournera avec succès, mais alors les changements pourraient être perdus si par ex. le système a perdu le pouvoir.
Le problème avec la synchronisation physique est qu'elle peut avoir un impact significatif sur les performances. Les disques durs peuvent gérer un nombre limité de transactions par seconde (les SSD sont un lot plus rapide), ce qui explique pourquoi la première chose à faire pour améliorer les performances de DB consiste à regrouper des insertions dans des transactions plus importantes.
Quelqu'un pourrait ajouter "kyotocabinet" à cette question s'il vous plaît? Je n'ai pas 1.500 pour créer de nouveaux tags. Merci! –