Sent from my iPad

On 02-May-2013, at 4:33, Misa Simic <misa.si...@gmail.com> wrote:

> 
> 
> On Wednesday, May 1, 2013, Atri Sharma wrote:
>> Hi all,
>> 
>> Please find a probable prototype for the same:
>> 
>> struct GraphNode
>> {
>>     Oid NodeOid;    // Oid of the row which is the node here. We will
>> store an identifier to it here rather than the complete row(with data)
>> itself.
>>     AdjacencyList *list;   // Pointer to the node's adjacency list.
>> };
>> 
>> struct AdjacencyList
>> {
>>       Oid[] neighbours_list;
>> };
>> 
>> struct AdjacencyList is probably the 'hottest' data structure in our
>> entire implementation. We can think of making a cache of recently
>> accessed struct AdjacencyList instances, or the AdjacencyList(s) of
>> the neighbours of the recently accessed nodes, because, they are most
>> likely to be accessed in near future. Advice here, please?
>> 
>> So.
>> 
>> struct AdjacencyCache
>> {
>>      Oid[] cache_values;
>> };
>> 
>> push and pop functions for AdjacencyCache follow.
>> 
>> We need a replacement and invalidation algorithm for the cache. I feel
>> a version of LRU should be good here.
>> 
>> I have not given a prototype for operations and algorithm implementations.
>> 
>> I feel,as suggested by Peter and Jaime, we can look at pgRouting code
>> for algorithm implementations.
>> 
>> Florian's concerns are mitigated here to some extent,IMO. Since the
>> nodes and linkings are loosely coupled, and not represented as a
>> single representation, updating or changing of any part or adding a
>> new edge is no longer an expensive operation, as it only requires a
>> lookup of GraphNode and then its AdjacencyList. If we use the cache as
>> well, it will further reduce the lookup costs.
>> 
>> I have not yet thought of the user visible layer as suggested by Jim.
>> Probably. once we are ok with the internal layer, we can move to the
>> user visible layer.
>> 
>> Advice/Comments/Feedback please?
> 
> Honestly - I think I dont understand proposal...
> 
> Datatypes - are about values - what will be stored in that column in a 
> table....
> 
> Datatype - cant have any clue about "rows"
> 
> How I understand what you described - you can achieve the same with pure SQL 
> - struct are equvalent to graph tables... Instead od Oid column will store 
> PKs of nodes table... 
> 

Yes, I agree.I need to think more.

Let me get back with a deeper proposal.

Regards,

Atri

Reply via email to