Tag Archives: Base de données

  • 0

ATTENTION aux bases de données ISAM & accès fichiers par le réseau

Category:SMB,Technologies Tags : 

Parmi les logiciels de développement, on trouve couramment une vieille casserole connue ayant eu autrefois son heure de gloire, appelée Visual FoxPro.

Ce RAD inclut aussi un gestionnaire de base de données utilisant la technologie ISAM.

Dans un système de base de données ISAM, c’est le client qui gère ses propres accès aux tables de la base données en accédant directement aux tables ainsi qu’aux index.

Le client se repose donc sur un mécanisme de verrouillage des fichiers pour maintenir l’intégrité et la consistance du jeu de données global.

Cette méthode est simple et efficace en termes de vitesse, et permet de se passer d’un gestionnaire de base de données centralisé comme SQL Server ou Oracle.

Toutefois, par la nature même de cette technologie, la protection des données est très inférieure à un système SGBD centralisé, qui deviennent ainsi extrêmement sensibles aux différentes erreurs d’écritures, pouvant facilement corrompre l’entier des données.

Au début, Windows NT, à travers son protocole réseau SMB 1, mettait en jeu un certains nombres de mécanisme permettant d’accélérer les écritures en réseau au travers de différentes techniques de cache, dont la plus connue appelée Opportunistic locking or oplocks.

Le problème de oplocks est que si plusieurs demande d’accès avaient lieu sur un même fichier, le cache était relâché et les données écrites sur le disque, et potentiellement des corruptions pouvaient se produire dans le dit fichier.

Cette optimisation étant quelquefois non souhaitée, il était possible de la désactiver dans SMB1 (Q219022).

Par la suite, la couche réseau de Windows a passablement évolué. Depuis Windows Vista, le protocole est passé à la version SMB2, et avec Windows 8, SMB3.

L’inconvénient est que dans ses dernières versions SMB2 et SMB3, oplocks ne peut plus être désactivé, et les bases de données reposant sur la technologie ISAM ne fonctionnent plus correctement sans avoir continuellement des problèmes de corruption.

Selon Microsoft (Voir plus bas l’article original en anglais) oplocks ne permet plus de faire fonctionner en toute sécurité des bases de données utilisant la technologie ISAM, et une solution est de désactiver les protocoles récents SMB2 et SMB3 dans Windows 8 ou Windows 10, ainsi que sur le serveur Windows 2016, solution préconisée d’ailleurs par certains éditeurs sur leur site Internet, et de n’utiliser que SMB1.

Cette solution est extrêmement dangereuse, car le protocole SMB1 contient un grand nombre de problèmes de sécurité qui ne sera plus corrigé par Microsoft, au point même que l’éditeur désactive SMB1 dans ses dernières versions de Windows. De plus, cela rend plus lent le fonctionnement du réseau entre les postes clients et le serveur.

La seule solution que nous recommandons est dès lors de ne plus accéder directement aux données d’une base ISAM en passant par le réseau, mais de confiner le programme et ses données dans une session de type Services Bureaux à Distances sur un serveur.

Ainsi, en ne déportant que l’affichage sur les postes clients du logiciel, les informations de la base de données ne transitent plus par le réseau entre le programme et ses fichiers, ce qui élimine les risques de corruption.

La seconde recommandation que nous faisons est claire: Ne plus acquérir de logiciels utilisant la technologie de base de données de type ISAM. Les outils permettant de développer des programmes sur ce modèle, comme Visual Foxpro, sont maintenant totalement dépassés (Visual Foxpro n’est même plus supportés par Microsoft…), car ils n’ont plus la possibilité de suivre les évolutions de Windows.

Avant d’acquérir une solution informatique, il est de votre devoir de connaitre avec quel outil elle a été conçue, ce qui vous donnera une idée sur sa pérennité et son évolutivité,

Des éditeurs créant encore des logiciels avec des RAD utilisant la technologie ISAM prétendent faussement que si leurs solutions connaissent des problèmes de fonctionnement, il s’agit de « problèmes réseaux », mettant ainsi la faute sur les infrastructures des clients, ce qui est évidemment malhonnête, ou pour le moins démontre une méconnaissance totale de l’architecture des systèmes modernes.

“If a multiuser or single user database application accesses a common data store on a Windows NT file server using opportunistic locks (or OPLOCKS), it is possible for a given user to cache partial transactions on the client systems hard drive. This is a performance enhancement to the Windows client redirector to reduce network file I/O between the client and server. The data being cached on the client redirector is later written back to the server. However, in some cases, a client system may stop responding (hang), do a hard reboot, lose its network connection to the server, or experience any number of other technical difficulties. In such cases, the content of the local cache that has not yet been written to the server can be lost. As a result, the transaction integrity of the database structures on the server is compromised and the data on the file server can become corrupted.” (see Q224992)

The only thing that developers utilizing ISAM database systems can do to help mitigate the problem posed by network communications issues and optimistic locking, is to perform more regular flushes (writes of buffered information) to disk.  This process will both lessen performance, but may also still not resolve the issues that can arise from optimistic locking and network communications failures.

Our recommended solution is to place the data access inside a safe environment where file access and requests are not handled over the network at all.  We recommend accessing our software via Remote Desktop Services and to have the data stored directly on the server managing the remote access.  If file access is handled locally, and no network access is handled, the cache / locking / race conditions that can occur during read/write over the network are veritably eliminated.

If network file access is required, following Microsoft suggestion to downgrade to SMB 1.0 and disabling optimistic locking is the recommended solution.  There are known side effects with performance and file access is going to generally be slower after doing this.  This solution may still not eliminate all potential network file access issues, and has no effect on mitigating communications problems or failures leading to data corruption.

Maria Perez


Merci de partager cette page !