2009-07-24 7 views
0

Je souhaite classer les instances fortement liées de l'entité A à d'autres instances ou l'entité A dans mon graphe. Je n'ai besoin de le faire que pour les n dernières entités visualisées. Je décris les relations entre deux instances de l'entité A au moyen d'une autre entité B. C'est parce que j'ai besoin de décrire chaque relation.Données de base récupérées Propriétés pour classer la connectivité entre les objets

J'envisage d'utiliser une propriété tiré par les cheveux comme ceci:

ANY isSourceOfRelation.destinationThing == "$SOURCE_THING" 
OR ANY isDestinationOfRelation.sourceThing == "$SOURCE_THING" 

Mais je me méfie de le faire parce que je doute évaluera ce via les relations, mais par une recherche exhaustive. Ce ne serait pas un problème sur le bureau, mais sur iPhone ce ne serait pas pratique avec mon jeu de données. Comme les propriétés récupérées sont évaluées paresseusement et ensuite mises en cache, je pourrais peut-être accéder à la propriété récupérée sur chaque objet sur le bureau, mais ce cache serait-il conservé dans le magasin sqlite? Mon alternative à ceci serait d'évaluer dynamiquement ceci en accédant à chaque Entité B pour récupérer l'Entité de destination A et ensuite les ajouter à un dictionnaire.

Le graphique a 10 000 entités A et environ 30 000 relations entre elles (entité B).

Ma priorité est la performance.

Qu'en pensez-vous?

Répondre

0

Cela semble être un bon candidat pour pré-calculer et charger séparément à la demande, peut-être même dans un magasin séparé. Si les données réelles sont petites, ce n'est pas trop taxant et la plupart des iPhones peuvent épargner un ou deux méga de stockage 'disque' pour ce genre de chose.

Si les valeurs sont modifiables, vous pouvez exécuter un thread d'arrière-plan après les modifications pour vous assurer que les tables de pré-calcul sont à jour. Un drapeau "sale" vous permettra de savoir si l'utilisateur interrompt l'opération avant qu'elle ne soit faite pour que vous puissiez le faire à nouveau la prochaine fois que l'application est exécutée.

Questions connexes