[Résolu] Capacité en nombre de lignes
Modérateur : Vilains modOOs
Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
-
- Membre hOOnoraire
- Messages : 101
- Inscription : 12 févr. 2007 09:54
- Localisation : Paris
[Résolu] Capacité en nombre de lignes
Bonjour,
Je cherche à faire migrer un fichier Excel de 40 000 lignes, qui fait régulièrement 13Mo (il n'y a pas que les fichiers d'OpenOffice qui enflent...), et qui est de plus en plus lent à ouvrir.
Il ne s'agit que de données simples (nombres, dates, O/N, ...) mais fréquemment mises à jour.
Pensez-vous qu'avec 500ko, oBase pourrait supporter ces données, voire davantage ?
J'ai lu que les bases oBase "natives" sont en fait gérées par l'outil HSQLDB (moteur HSQL, driver JDBC). Pensez-vous que pour une utilisation mono-poste, il ne vaudrait pas mieux utiliser un autre moteur, par exemple SQLite (installation driver ODBC) ?
Avez-vous des exemples de bases ayant plus de 50k lignes ?
24/01/12 : J'ai trouvé une référence sur HSQLDB où ils parlent de bases de plusieurs gigas !!
http://hsqldb.org/web/hsqlFAQ.html#FAQ
Merci pour votre aide.
Je cherche à faire migrer un fichier Excel de 40 000 lignes, qui fait régulièrement 13Mo (il n'y a pas que les fichiers d'OpenOffice qui enflent...), et qui est de plus en plus lent à ouvrir.
Il ne s'agit que de données simples (nombres, dates, O/N, ...) mais fréquemment mises à jour.
Pensez-vous qu'avec 500ko, oBase pourrait supporter ces données, voire davantage ?
J'ai lu que les bases oBase "natives" sont en fait gérées par l'outil HSQLDB (moteur HSQL, driver JDBC). Pensez-vous que pour une utilisation mono-poste, il ne vaudrait pas mieux utiliser un autre moteur, par exemple SQLite (installation driver ODBC) ?
Avez-vous des exemples de bases ayant plus de 50k lignes ?
24/01/12 : J'ai trouvé une référence sur HSQLDB où ils parlent de bases de plusieurs gigas !!
http://hsqldb.org/web/hsqlFAQ.html#FAQ
Merci pour votre aide.
Dernière modification par jean-christophe le 26 janv. 2012 13:23, modifié 2 fois.
Ubuntu "EupTouDaite".
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: Capacité en nombre de lignes
Bonjour,
C'est moins une question de lignes (comme dans Calc) que de volumes de données.
Tout ce qui peut optimiser ce volume est à privilégier. Par exemple, stocker les id plutôt que des données textes redondantes, stocker les liens vers les images plutôt que les images elle-mêmes (nombreux exemples dans le forum de bases ayant "éclaté en plein vol" après l’enregistrement d'une dizaine de photos de 1 Mo chacune)
C'est moins une question de lignes (comme dans Calc) que de volumes de données.
Tout ce qui peut optimiser ce volume est à privilégier. Par exemple, stocker les id plutôt que des données textes redondantes, stocker les liens vers les images plutôt que les images elle-mêmes (nombreux exemples dans le forum de bases ayant "éclaté en plein vol" après l’enregistrement d'une dizaine de photos de 1 Mo chacune)
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre hOOnoraire
- Messages : 101
- Inscription : 12 févr. 2007 09:54
- Localisation : Paris
Re: Capacité en nombre de lignes
Bonjour,
Supposons qu'il s'agisse d'une base simple, alphanumérique, et relativement bien construite (ID en entier, Liens en texte, ...) mais avec plus de 50k lignes.
Cela tient à votre avis ?
Et côté performances ?
Je voudrais bien faire un test en liant une base HSQL à Calc pour injecter des lignes et voir jusqu'où on peut aller sans que cela pose problème... Par contre, je n'arrive toujours pas à lier la base à Calc et faire en sorte que les modifications dans Calc soient reportés dans la base... mpffff
Supposons qu'il s'agisse d'une base simple, alphanumérique, et relativement bien construite (ID en entier, Liens en texte, ...) mais avec plus de 50k lignes.
Cela tient à votre avis ?
Et côté performances ?
Je voudrais bien faire un test en liant une base HSQL à Calc pour injecter des lignes et voir jusqu'où on peut aller sans que cela pose problème... Par contre, je n'arrive toujours pas à lier la base à Calc et faire en sorte que les modifications dans Calc soient reportés dans la base... mpffff
Ubuntu "EupTouDaite".
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: Capacité en nombre de lignes
Nous avons eu dans le forum des demandes de connexion, ou de transferts de contenus, de Calc dans Base qui ont porté sur des centaines de lignes.
Comme Base charge toutes les données en mémoire, les limites seront atteintes par les capacités du PC et, comme écrit plus haut, par la stabilité des données.
Quant à la question sur l'actualisation depuis Calc, elle est traitée dans cette FAQ : http://wiki.services.openoffice.org/wik ... Q/Base/019
Comme Base charge toutes les données en mémoire, les limites seront atteintes par les capacités du PC et, comme écrit plus haut, par la stabilité des données.
Quant à la question sur l'actualisation depuis Calc, elle est traitée dans cette FAQ : http://wiki.services.openoffice.org/wik ... Q/Base/019
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre hOOnoraire
- Messages : 101
- Inscription : 12 févr. 2007 09:54
- Localisation : Paris
Re: Capacité en nombre de lignes
Re-bonjour,
Je viens de faire un test avec le driver SQLite3 (via ODBC).
Insertion de 48k lignes à partir d'un fichier Calc sous la forme :
NOM PRENOM NAISSANCEDATE NAISSANCELIEU
DUPONT PIERRE 12/02/77 BEAUVAIS
DURAND PAUL 13/02/77 LYON
... ... ...
Export SQL vers le fichier SQLlite (référencé dans "Nouvelle base de données4") : 10 minutes (attention, il faut exécuter la directive PRAGMA SYNCHRONOUS = OFF sinon à chaque insert, le fichier SQLite sera ouvert/fermé ce qui ralentit BEAUCOUP le transfert...).
Poids du fichier SQLlite : 1,9 Mo
Taille du fichier odb : 11 ko (hi hi hi)
Import du fichier SQLlite vers Calc (via F4, drag/drop de la table) : 2 minutes
Donc c'est possible pour du "gros" volume.
Pas fait le test avec HSQLDB du fait des instruction SQL qui fonctionnaient mal...
Je viens de faire un test avec le driver SQLite3 (via ODBC).
Insertion de 48k lignes à partir d'un fichier Calc sous la forme :
NOM PRENOM NAISSANCEDATE NAISSANCELIEU
DUPONT PIERRE 12/02/77 BEAUVAIS
DURAND PAUL 13/02/77 LYON
... ... ...
Export SQL vers le fichier SQLlite (référencé dans "Nouvelle base de données4") : 10 minutes (attention, il faut exécuter la directive PRAGMA SYNCHRONOUS = OFF sinon à chaque insert, le fichier SQLite sera ouvert/fermé ce qui ralentit BEAUCOUP le transfert...).
Ajout : -> créer une requête dans le fichier odb "PRAGMA SYNCHRONOUS = OFF" à activer à chaque import |
Taille du fichier odb : 11 ko (hi hi hi)
Import du fichier SQLlite vers Calc (via F4, drag/drop de la table) : 2 minutes
Donc c'est possible pour du "gros" volume.
Pas fait le test avec HSQLDB du fait des instruction SQL qui fonctionnaient mal...
Code : Tout sélectionner
REM ***** BASIC *****
' SOURCES :
Sub Main
sBaseName = "Nouvelle base de données4" 'TEXT, TEXT, DATE, TEXT
' "Nouvelle base de données4" -> SQLite
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
If ( oBaseContext.hasByName(sBaseName) = false ) Then
MsgBox("La base de données n'est pas enregistrée dans oBase", 16)
Exit Sub
Else
oDataSource = oBaseContext.getByName(sBaseName)
oConnection = oDataSource.getConnection("", "")
If ( oConnection.Tables.hasByName("Table1") = false ) Then
MsgBox("Table1 non créée dans la base de test", 16)
Exit Sub
End If
oStatement = oConnection.createStatement()
sQuery = "DELETE FROM " & Chr(34) & "Table1" & Chr(34)
oResultSet = oStatement.executeUpdate(sQuery)
oStatement = oConnection.createStatement()
sQuery = "PRAGMA SYNCHONOUS = OFF"
oResultSet = oStatement.executeUpdate(sQuery)
' prendre la feuille active du classeur
oSheet = thisComponent.CurrentController.getActiveSheet()
flag_continue = true
iIndexLine = 0 'index de ligne dans la feuille
sTextNom = ""
While (flag_continue = true)
sTextNom = oSheet.getCellByPosition(0, iIndexLine).String
If (sTextNom <> "") Then
sTextPrenom = oSheet.getCellByPosition(1, iIndexLine).String
sTextDate = oSheet.getCellByPosition(2, iIndexLine).String
sTextLieu = oSheet.getCellByPosition(3, iIndexLine).String
sQuery = "INSERT INTO " & Chr(34) & "Table1" & Chr(34) & " (" & Chr(34) & "NOM" & Chr(34) & "," & Chr(34) & "PRENOM" & Chr(34) & "," & Chr(34) & "NAISSANCEDATE" & Chr(34) & "," & Chr(34) & "NAISSANCELIEU" & Chr(34) & ")" &_
" VALUES (" & Chr(34) & sTextNom & Chr(34) & "," & Chr(34) & sTextPrenom & Chr(34) & "," & Chr(39) & sTextDate & Chr(39) & "," & Chr(34) & sTextLieu & Chr(34) & ")"
oStatement = oConnection.createStatement()
oResultSet = oStatement.executeUpdate(sQuery)
iIndexLine = iIndexLine + 1
Else
flag_continue = false
End If
Wend
oConnection.Close
oConnection.Dispose
End If
End Sub
Dernière modification par jean-christophe le 25 janv. 2012 08:14, modifié 1 fois.
Ubuntu "EupTouDaite".
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
-
- RespOOnsable forum
- Messages : 12236
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Re: Capacité en nombre de lignes
Bonjour,
Je rappelle que cette section n'est pas consacrée aux macros (voir le bandeau rouge en haut de la page). Si vous avez à poursuivre dans cette voie, merci de poster au bon endroit. Ceci dans un but de recherche efficace de l'information dans ce forum.
Si vous postez une solution, faites le en section "Macros et API" et ajoutez dans ce fil un lien vers celle-ci.
Je rappelle que cette section n'est pas consacrée aux macros (voir le bandeau rouge en haut de la page). Si vous avez à poursuivre dans cette voie, merci de poster au bon endroit. Ceci dans un but de recherche efficace de l'information dans ce forum.
Si vous postez une solution, faites le en section "Macros et API" et ajoutez dans ce fil un lien vers celle-ci.
-
- Membre hOOnoraire
- Messages : 101
- Inscription : 12 févr. 2007 09:54
- Localisation : Paris
Re: Capacité en nombre de lignes
Le but de ce sujet est de tester les bases mono-poste à "moyen" volume (c-à-d pour moi, de 20k à 100k lignes alphanumériques). Le macro SQL n'est là que pour générer un fichier exemple.
Voici quelques mesures de performance :
- Nombre lignes : 48 704, 7 Minutes d'import SQL INSERT, 1 944 ko (fichier SQLite), navigation fluide des données dans les formulaires du fichier oBase (5/5)
- Nombre lignes : 64 582, 9 Minutes d'import SQL INSERT, 2 586 ko (fichier SQLite), navigation fluide des données dans les formulaires du fichier oBase (5/5)
- Nombre lignes : 129 164, 17 Minutes d'import SQL INSERT, 5 195 ko (fichier SQLite), navigation fluide des données dans les formulaires du fichier oBase (4,5/5)
Dans le dernier cas, je n'ai pas pu réimporter la base dans un fichier Calc du fait de la limite atteinte (j'avais fait le transfert SQL en deux fois...). Le ré-import de la base dans Calc prend de 3 à 5 minutes.
Voici quelques mesures de performance :
- Nombre lignes : 48 704, 7 Minutes d'import SQL INSERT, 1 944 ko (fichier SQLite), navigation fluide des données dans les formulaires du fichier oBase (5/5)
- Nombre lignes : 64 582, 9 Minutes d'import SQL INSERT, 2 586 ko (fichier SQLite), navigation fluide des données dans les formulaires du fichier oBase (5/5)
- Nombre lignes : 129 164, 17 Minutes d'import SQL INSERT, 5 195 ko (fichier SQLite), navigation fluide des données dans les formulaires du fichier oBase (4,5/5)
Dans le dernier cas, je n'ai pas pu réimporter la base dans un fichier Calc du fait de la limite atteinte (j'avais fait le transfert SQL en deux fois...). Le ré-import de la base dans Calc prend de 3 à 5 minutes.
Dernière modification par jean-christophe le 25 janv. 2012 08:14, modifié 4 fois.
Ubuntu "EupTouDaite".
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: Capacité en nombre de lignes
Tu es un chef jean-christophe !
Dans l'exemple que j'évoquais plus tôt, nous étions allés jusqu'à 1500 lignes d'un tarif
Dans l'exemple que j'évoquais plus tôt, nous étions allés jusqu'à 1500 lignes d'un tarif
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- IdOOle de la suite
- Messages : 25197
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: Capacité en nombre de lignes
Salut,
Oui mais tu ne fais que tester les performances d'une base externe (SQLite).
Oui mais tu ne fais que tester les performances d'une base externe (SQLite).
Ici, Base ne sert que de connecteur. Il est donc normal que le poids de l'ODB soit si faible.jean-christophe a écrit :Poids du fichier SQLlite : 1,9 Mo
Taille du fichier odb : 11 ko (hi hi hi)
-
- Membre hOOnoraire
- Messages : 101
- Inscription : 12 févr. 2007 09:54
- Localisation : Paris
Re: Capacité en nombre de lignes
J'ai essayé de faire l'essai hier avec la base native HSQLDB... ça pédale dur arrivé aux 30k ...
Je pense que pour une base mono-poste de moyenne taille (60-100k lignes alphanum), SQLite est un meilleur choix que HSQLDB. Par contre, je viens de lire les comparatifs entre les deux moteurs, et en matière de types de données, SQLite est plus limité (INTEGER, REAL, TEXT, BLOB) par rapport à HSQL ; pour les dates, il faut utiliser les fonctions de conversion en entier.
Je pense que pour une base mono-poste de moyenne taille (60-100k lignes alphanum), SQLite est un meilleur choix que HSQLDB. Par contre, je viens de lire les comparatifs entre les deux moteurs, et en matière de types de données, SQLite est plus limité (INTEGER, REAL, TEXT, BLOB) par rapport à HSQL ; pour les dates, il faut utiliser les fonctions de conversion en entier.
Ajout : Ha ha !!!! : SQLite to become the LibreOffice Base default -> http://user.services.openoffice.org/en/ ... 13&t=40525 ...ce n'est peut être qu'une annonce... |
Ubuntu "EupTouDaite".
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
LibreOffice "EupTouDaite" aussi (4.2.3.3 en juin 2014)
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: Capacité en nombre de lignes
Ce que je retiens du lien, c'est qu'il n'y a pas de développeur qui s'implique sur Base ... et je pense que c'est chronique.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox