1

Après avoir regardé "Google IO 2009: Building scalable, complex apps on App Engine" J'ai effectué quelques tests pour aider à comprendre l'impact sur la désérialisation de la liste, mais les résultats sont assez surprenants. Voici les descriptions des tests.GAE Datastore Performance (Column vs ListProperty)

  • Tous les tests sont exécutés sur le serveur GAE.
  • Chaque test est effectué 5 fois avec son temps et l'utilisation de l'UC enregistrée.
  • Ce test consiste à comparer la vitesse de récupération (flottante) des données dans les colonnes V.S Liste
  • Les tables Column et List contiennent une colonne datetime supplémentaire pour la requête.
  • La même requête est utilisée pour extraire des données dans les tables Column et List.

TEST 1
- Lit simple rangée
- Dimensions de la table: 500 colonnes vs Liste de 500 (les deux contiennent 500 lignes)

Tableau: ChartTestDbRdFt500C500R < - 500 colonnes x 500 lignes
OneRowCol Résultat < - Obtention d'une ligne
[0] 0,02 (52) < - test 0, le temps pris = 0,02, l'utilisation du processeur = 52
[1] 0,02 (60)
[2] 0,02 (56)
[3] 0,01 (46)
[4] 0,02 (57)

Tableau: ChartTestDbRdFt500L500R < - Liste de 500 x 500 lignes

OneRowLst Résultat [ 0] 0,01 (40)
[1] 0,02 (38)
[2] 0,01 (42)
[3] 0,05 (154)
[4] 0,01 (41)

TEST 2
- extraire toutes les lignes
- taille Tableau: 500 colonnes vs Liste de 500 (à la fois contenir 500 lignes)

Tableau: ChartTestDbRdFt500C500R
AllRowCol Résultat
[0] 11,54 (32753)
[1] 10,99 (31140)
[2] 11,07 (31245)
[3] 11,55 (37177)
[4] 10,96 (34300)

Tableau: ChartTestDbRdFt500L500R
AllRowLst Résultat
[0] 7,46 (20872)
[1] 7,02 (19632)
[2] 6.8 (18967)
[3] 6,33 (17709)
[4] 6 .81 (19006)

ESSAI 3
- Lit simple rangée
- Table size: 4500 colonnes vs Liste de 4500 (les deux contiennent 10 lignes)

Tableau: ChartTestDbRdFt4500C10R
OneRowCol Résultat
[ 0] 0,15 (419)
[1] 0,15 (433)
[2] 0,15 (415)
[3] 0,23 (619)
[4] 0,14 (415)

Tableau: ChartTestDbRdFt4500L10R
OneRowLst Résultat
[0] 0,08 (212)
[1] 0,16 (476)
[2] 0,07 (215)
[3 ] 0,09 (242)
[4] 0,08 (217)

CONCLUSION

Obtention d'une liste de N articles est effectivement plus rapide que N colonnes. Est-ce que quelqu'un sait pourquoi c'est le cas? Je pensais qu'il y avait un coup de performance sur la désérialisation de la liste? Ou ai-je effectué mes tests de manière incorrecte? Toute idée sera utile, merci!

Répondre

1

BigTable est une base de données orientée colonnes. Cela signifie que l'extraction d'une 'ligne' de N colonnes est en fait N opérations de lecture différentes, toutes sur le même index.

+0

Merci pour la réponse. Après quelques réflexions j'ai réalisé que je devrais construire mes 2 tables avec le même nombre de colonnes, l'une contient N rangées de données et l'autre contient la liste de N données dans une rangée. BTW, pourriez-vous s'il vous plaît donner une référence sur "N colonnes = N opérations de lecture"? Je pensais que BigTable est un mélange de conception orientée ligne + colonne où tous les qualificatifs de colonne d'une entité dans la même famille de colonnes sont récupérés en une seule opération? –

Questions connexes