web-dev-qa-db-fra.com

Comment les opérations de base de données (écrire, mettre à jour, alter) sur une cellule particulière dans une table sont écrites sur disque sans écraser le fichier complet?

Lorsque je veux écrire ou modifier une cellule particulière d'un fichier/table Excel utilisant python Je vais utiliser pandas read_csv puis modifier la valeur en particulier cellule et écrivez Retour au fichier avec to_csv. Mais écrire dans le fichier semble écraser l'intégralité du fichier avec une version mise à jour du fichier qui diffère uniquement dans une cellule unique. Ceci est un problème lors de la modification d'une ou deux cellules dans le tableau des rangées de billions et des colonnes de billions .

Lorsque nous effectuons des opérations de base de données d'écriture/alter de la base de données (comme dans SQL) sur une seule cellule hors milliers de dollars par billion, il semble apporter des modifications du disque sur les cellules modifiées plutôt que de remplacer les fichiers entiers.

Comment les bases de données facilitent-elles écrire/mettre à jour uniquement une cellule particulière dans une table dans le disque plutôt que sur l'écrasement du fichier complet?

BTW, je n'utilise pas la base de données SQL car ma table contient des noms de colonne numériques et SQL ne prend pas en charge cela. Si vous connaissez une base de données SQL/NOSQL prenant en charge les valeurs numériques comme noms de colonne, faites-le moi savoir.

4
Optic_Ray

Une idée fausse très courante sur les bases de données peut être dissipée avec ceci:

    Database != File 

Lorsque vous mettez à jour une ligne dans une base de données, le fichier de données sous-jacent sur le disque n'est pas touché du tout ​​- du moins pas pour "un peu de temps". Au lieu de cela, la base de données note de modification de son journal de transaction, puis met à jour la valeur en mémoire. "Quelque temps" plus tard, la base de données pourrait se déplacer pour avoir besoin de ce morceau de mémoire pour autre chose et écrira la valeur modifiée sur le disque. À quelle fréquence cela se passe-t-il et à quel point une grande partie de la mémoire est écrite à une époque varie de la DBMS à la SGBD.

Le stockage des données dans des bases de données est mesuré en pages, chacun peut contenir un certain nombre de lignes; Ces choses qui composent les tables que vous et moi jouons avec. Lorsqu'une base de données a besoin de données, il fonctionne lorsque ces données sont dans son ou des fichiers de données, puis chargent uniquement les pages qui sont pertinentes dans son cache tampon (mémoire). C'est pourquoi certaines requêtes fonctionnent lentement la première fois que vous les exécutions, mais que vous êtes rapide, servant la même page sur et sur le cache est voies plus rapide que de le transporter dans le fichier de données sur le disque .

... Je n'utilise pas de base de données SQL car ma table contient des noms de colonnes numériques ...

Voici une autre idée fausse des bases de données, encore une fois facilement dissipée:

    Database != SpreadSheet 

La façon dont vous structurez les données dans des bases de données peut sembler assez "étranger" lorsque vous commencez; Vous semblez avoir besoin d'utiliser des constructions "compliquées", "artificielles" au lieu de "lignes" et "colonnes" de données. Mais, une fois que vous avez compris pourquoi Vous avez besoin de ces structures et de POWER qu'ils vous donnent sur vos données, vous aurez assez rapidement.

... Opérations ... sur une seule cellule hors milliers de billions de billies ...

Avez-vous vraiment une valeur utile pour chaque valeur dans un billion de billion par billion? Personnellement, j'en douterais, sauf si vous travaillez pour Google.

Je suggérerais ce que vous en réalité avez est un tableau rare, où vous avez plus de "trous" que des données. C'est une structure que les tables relationnelles peuvent supporter très facilement et très efficacement.

14
Phill W.