2009-09-22 5 views
0

J'ai un grand (plusieurs Go) berkeley db que je pense migrer de Windows (2K) à Linux (soit Redhat ou Ubuntu). Je ne suis pas sûr de savoir comment s'y prendre. Puis-je simplement déplacer les fichiers db, ou ai-je besoin d'un utilitaire de conversion spécial?Berkeley Db migration de la plate-forme

Répondre

1

Il existe un utilitaire de transfert de fichiers multi-plateforme décrit here.

Vous devrez peut-être également vous préoccuper de l'ordre des octets sur votre machine, mais cela a été évoqué un peu here.

Si vous utilisez Java Berkeley, cela ne devrait pas avoir d'importance?

+0

J'utilise la liaison C++. BTW, j'ai regardé le lien que vous avez fourni. Je ne suis pas sûr qu'il migre des données, à la place, il semble permettre l'avènement de fichiers sur différentes plates-formes - à moins que je me trompe? – scoobydoo

+0

Y a-t-il d'autres suggestions? Je ne pense pas que c'est la bonne réponse ... – scoobydoo

+0

Je pensais que cet utilitaire pourrait gérer les problèmes de compatibilité des fichiers de manière transparente. Je pense cependant que si vous essayez de faire en sorte que le système d'exploitation fonctionne bien, et que Berkeley DB fonctionne correctement sur vos autres plates-formes, alors vous devriez être configuré. Quoi qu'il en soit, meilleurs voeux; mes connaissances sont exploitées avec votre question. – John

3

Les fichiers de base de données et les fichiers journaux sont portables sur différents systèmes endian. Berkeley DB reconnaîtra le type de système sur lequel il se trouve et échangera des octets en conséquence pour les structures de données qu'il gère et qui constituent la base de données elle-même. Les fichiers de région de Berkeley DB, qui sont mappés en mémoire, ne sont pas portables. Ce n'est pas un gros problème parce que les fichiers régionaux contiennent le cache et les verrous qui, parce que votre application ne sera pas exécutée pendant la transition, seront recréés sur le nouveau système.

Mais, attention, Berkeley DB ne sait rien de l'ordre des octets ou des types dans vos données (dans vos clés et valeurs, stockées dans "DBT"). Votre code d'application est responsable de savoir quel type de système il exécute, comment il a stocké les données (grand ou petit endian) et comment le faire (ou un simple ré-ordre sur l'accès). Aussi, portez une attention particulière à votre fonction de comparaison btree. Cela peut aussi être différent selon l'architecture de votre système.

Les fichiers de base de données et les fichiers journaux sont également portables sur tous les systèmes d'exploitation avec la même mise en garde qu'avec la commande par octet - les données de l'application sont sous la responsabilité de l'application.

Vous pourriez envisager d'examiner les éléments suivants:

Divulgation: Je travaille pour Oracle en tant que chef de produit pour les produits Berkeley DB. :)