The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > High Level Programming
.
google unix.com



High Level Programming Posez vos questions à propos de C, C + +, Java, SQL, et d'autres langages de programmation ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Comment ajouter des métadonnées à des images numériques à partir de la ligne de commande iBot UNIX et Linux News RSS 0 09-19-2008 03:30 PM
Hachoir métadonnées 1,2 (Default branch) iBot Logiciel de presse - RSS News 0 09-03-2008 08:30 PM
Yet Another FLV MetaData Injector de 1,4 (Default branch) iBot Logiciel de presse - RSS News 0 05-25-2008 10:10 AM
Yet Another FLV MetaData Injector de 1,3 (Default branch) iBot Logiciel de presse - RSS News 0 04-27-2008 05:30 PM
d'aide, quelle est la différence entre le noyau et la panique dépotoir? Aileen UNIX pour les nuls Questions et réponses 1 06-11-2001 09:08 PM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 06-29-2009
emitrax emitrax is offline
Registered User
  
 

Date d'inscription: avril 2009
Posts: 38
La meilleure façon de larguer les métadonnées dans le fichier: quand et par qui?

Salut,

ma demande (en fait, bibliothèque), un fichier index de nombreux GB produire les tableaux (tableaux de l'offset et la longueur des données de l'index) pour les réutiliser plus tard. Les tableaux sont trop gros, si gros que j'ai manqué de mémoire dans mon processus (limite de 3 Go), lors de l'indexation de plus de 8 Go de fichiers ou plus. Même si je pouvais la fourche à un autre processus de travail autour de la taille limite de mémoire, cela ne résoudrait pas le problème, je voudrais à larguer les tableaux dans un fichier afin de libérer la mémoire, et d'éviter de re-indexer le même fichier plus qu'une seule fois.

Gardez à l'esprit qu'à l'heure actuelle, les tableaux sont conservés en mémoire en une seule liste liée, partagé avec un autre fil que l'utiliser pour produire une autre liste de données filtrées. Donc, je préfère ne pas modifier ce schéma. L'autre fil accéder à la liste une fois le fichier a été indexé.

Maintenant, les questions que je me pose sont les suivantes:

- Quand et comment il le meilleur temps de larguer les tableaux dans un fichier?

L'immersion d'une table car il est plein ne semble pas très efficace pour moi. Aurais-je rien de garder en mémoire? La liste liée serait toujours vide? Si je décide de garder N tables en mémoire, et de larguer toutes les N, comment puis-je éviter de faire un chèque de combien de tables je
en mémoire à chaque cycle?

- Qui devrait larguer les métadonnées produites au dossier? Différents fil? Même fil que l'indice des données? Je ne tiens pas à produire des métadonnées des fichiers lorsque le fichier est traitée en moins de giga (petit fichier de cas), mais en même temps, je ne voudrais pas que la complexité du code de l'indexation, ce droit est maintenant très simple: analyser, de trouver les données, créer une entrée de table, ajoutez-le. Si la table est pleine, en créer un autre et l'ajouter à la liste chaînée.

- Disons que j'ai réalisé (merci à vous) la meilleure manière (dans mon cas) à larguer les métadonnées. Quelle politique faut-il utiliser pour charger les données de manière à laisser l'autre thread
filtrage de l'index de données sans modifier radicalement la façon dont il travaille maintenant (par exemple grâce à la liste liée)?

Une solution qui me viennent à l'esprit, qui permettrait d'éviter un changement drastical dans mon schéma est de créer une "liste de gestionnaire», qui fournissent une interface d'ajouter et de récupérer l'élément de la liste. Cette entité (soit un thread ou un processus) qui prennent soin de conserver certaines données en mémoire (liste liée) et quelques autres dans le fichier.

S'il vous plaît partager avec moi votre compétence et votre expérience! :-)

Merci d'avance.

Observe,
S.
  #2 (permalink)  
Old 06-30-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Modérateur ala mode
  
 

Join Date: Feb 2007
Lieu: Innsbruck, Autriche
Messages: 1891
Wow, quelle question. Êtes-vous re-engineering d'une base de données du système?
Citation:
- Quand et comment il le meilleur temps de larguer les tableaux dans un fichier?
Sur un peu moins de Go-frontières. En fait, 256 kB bloque aussi très bien.
Citation:
- Qui devrait larguer les métadonnées produites au dossier? Différents fil?
Si c'est dans un autre thread, à quoi ça sert? Vous ne pouvez pas vous libérer de la mémoire, si l'autre fil a encore un verrou sur elle.
Citation:
Quelle politique faut-il utiliser pour charger les données
Je ne pense pas que le responsable à moins que l'on sait vraiment votre architecture logicielle.
  #3 (permalink)  
Old 07-08-2009
emitrax emitrax is offline
Registered User
  
 

Date d'inscription: avril 2009
Posts: 38
Citation:
Posté par otheus View Post
Wow, quelle question. Êtes-vous re-engineering d'une base de données du système?
Nope. Je suis tout simplement d'essayer d'écrire une application aussi efficace que possible, que les besoins à larguer les index de table, et je voudrais apprendre le plus possible de cette expérience.

Citation:
Posté par otheus View Post
Sur un peu moins de Go-frontières. En fait, 256 kB bloque aussi très bien.
Vous voulez exécuter un fwrite d'un tampon de 256 Ko? Actuellement, j'ai une liste où chaque élément (tableau) est un tableau de N entrée, pour une taille totale de 4 Ko par réseau, et je dump chaque table à la fois avec un seul fwrite.

Citation:
Posté par otheus View Post
Si c'est dans un autre thread, à quoi ça sert? Vous ne pouvez pas vous libérer de la mémoire, si l'autre fil a encore un verrou sur elle.

Je ne pense pas que le responsable à moins que l'on sait vraiment votre architecture logicielle.
Fondamentalement, un fil (A) les indices du fichier, tandis que l'autre thread (B) attend la fin de l'opération, afin d'utiliser la production de tableaux (dont j'avais l'habitude de garder en mémoire) à traiter les données dans le fichier. Le problème est que les fichiers indexés sont énormes (~ 30 Go) et de produire plus de 4 Go de données, que je ne peux pas garder en mémoire (limite de 3 Go par processus), ainsi, à un moment ou un autre, j'ai à larguer les données produites dans un fichier afin de libérer de la mémoire.

L'autre fil (B), sur la base d'un drapeau, soit lire les tables à partir du fichier ou la liste en mémoire.

Merci pour votre aide,
S.
  #4 (permalink)  
Old 07-08-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Modérateur ala mode
  
 

Join Date: Feb 2007
Lieu: Innsbruck, Autriche
Messages: 1891
Je ne peux pas aider les autres que de citer une vieille maxime de la conception de logiciels:

Citation:
ne pas réinventer la roue
  #5 (permalink)  
Old 07-08-2009
emitrax emitrax is offline
Registered User
  
 

Date d'inscription: avril 2009
Posts: 38
Citation:
Posté par otheus View Post
Je ne peux pas aider les autres que de citer une vieille maxime de la conception de logiciels:
Vous voulez dire que je devrais utiliser une base de données pour la tenue des tables, comme sqlite?
  #6 (permalink)  
Old 07-08-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Modérateur ala mode
  
 

Join Date: Feb 2007
Lieu: Innsbruck, Autriche
Messages: 1891
Quelle base de données dépend de la façon dont vous beaucoup de colonnes à indexer et unique que vous avez, sur le rapport du lecteur à des écrivains. sqlite? LOL. Je pensais plus dans le sens de MySQL ou BerkelyDB / DB de Sleepycat.
  #7 (permalink)  
Old 07-08-2009
emitrax emitrax is offline
Registered User
  
 

Date d'inscription: avril 2009
Posts: 38
Citation:
Posté par otheus View Post
Quelle base de données dépend de la façon dont vous beaucoup de colonnes à indexer et unique que vous avez, sur le rapport du lecteur à des écrivains. sqlite? LOL. Je pensais plus dans le sens de MySQL ou BerkelyDB / DB de Sleepycat.
C'est la raison pour laquelle je ne voudrais pas que d'utiliser une base de données. Le travail, la dépendance et de produits, il ne vaut pas dans mon cas (AMHA).

Je n'ai qu'un écrivain, et un lecteur.

Les données sont écrites de façon séquentielle, et jamais modifiée. Write once, read many.

Une solution ad hoc, je pensais que serait mon meilleur chemin à parcourir.

Je vous remercie de votre pensée sur ce point.

Merci,
S.
Reply

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 01:37 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0