Hi Michael,

I am facing the same problem. You was talking about the feature to add.

I am currently using 3.x.x.

Is the feature available in this version?? 

On Monday, 27 October 2014 18:13:59 UTC+5:30, Michael Hackstein wrote:
>
> Hi Jérémy, 
>
> i will add that as a feature request.
> I think you are right and it is needed quite often.
> I will keep you updated here.
>
> About the 3rd way, i think it is a good approach but there are some things 
> to consider:
> * You can only use _key of your persons as "/" is not allowed within the 
> key.
> * You have to add a spaceing symbol between both _key's which is not in 
> your _key values (if you do not set key's yourself in the vertices you can 
> go with "-" f.e.)
> * If you are using several vertex collections the _key is probably not 
> unique. {_id: "v/1", _key:"1"}, {_id:"v2/1", _key:"1"} can coexist in 
> different collections, but key is equal.
>
> So in the list is nothing hard to implement in your logic, it is just to 
> avoid going into the trap ;)
>
> best
> Michael
>
>
> Am 27.10.2014 um 12:30 schrieb Jérémy Berthet <[email protected] 
> <javascript:>>:
>
> Hello Michael,
>
> Thank you for your complete answer and suggestions. I've also thought 
> about a 3rd way, similar to the 2nd where I would use deterministic keys 
> for the edge (like the concatenation of person1_id and person2_id) to maybe 
> simplify the needed AQL a bit.
>
> Anyway, I was hoping that the graph module of Arango would offer a 
> standard function to find the edges existing between 2 vertices. Look like 
> it isn't the case.
>
> Regards,
> Jérémy
>
> Le mercredi 22 octobre 2014 11:29:02 UTC+2, Michael Hackstein a écrit :
>>
>> Hi Jérémy, 
>>
>> there are several conceptional approaches you could follow for your use 
>> case.
>> I will try to explain all of them and give some hints on their pros & 
>> cons:
>>
>> 1) Create one edge per contact:
>> * Simply store a new edge (_from, _to, details) for edge contact.
>> + Will be fastest write performance.
>> + You do not have to take care of writing conflicts if several instances 
>> are storing these edges.
>> + You can directly see how many calls a person has made in total (to any 
>> other person) (Length of connected edges)
>> - Edge collection grows rather fast
>> - You have to write an AQL Filter to find all contacts between person A 
>> and B.
>>
>> 2) Create one edge per person-pair:
>> * Store one (directed) edge per person pair and add a counter and all 
>> other relevant values.
>> + Stored amount of data is minimal
>> + You can directly see how many other persons one person has contacted 
>> (Length of connected edges)
>> + You can directly see how many contacts a person has to a specific other 
>> person on one edge.
>> + Graph-queries should perform faster as their runtime is typically bound 
>> by the amount of edges per vertex.
>> - Requires a transaction for each write
>> - Reduces write performance in case of many concurrent writers.
>>
>>
>> I would always prefer version 2) above version 1) except one specific 
>> case, you have a large amount of concurrent writers of edges.
>>
>> To update the edge you can for example use the AQL statement:
>>
>> FOR contact in in_contact
>>   FILTER contact._from == @from AND contact._to @to
>>   LET oldCount = contact.count
>>   LET dates = contact.dates
>>   UPDATE contact WITH  {count: oldCount + 1, dates: UNION(dates, 
>> [@newDate]) } in in_contact
>>
>> and replace the bindVars @from, @to, @newDate accordingly.
>> This will then be transactional and can be used concurrently.
>>
>> hope that helps
>>
>> best
>> Michael
>>
>>
>> Am 21.10.2014 um 17:49 schrieb Jérémy Berthet <[email protected]>:
>>
>> Hello,
>>
>> I'm trying to play a bit with the concept of graph database. I have a 
>> simple use case to implement. This is not a real project, just something 
>> for testing how everything goes one. I'm tracing contact (let says phone 
>> call) between people and I want to log the date of each contact. I was 
>> thinking of a vertices collection called "person" and a unoriented relation 
>> definition "in_contact" beetween 2 persons.
>>
>> It is pretty easy to create an edge beetween 2 persons with the date for 
>> the first contact. But what to do when a second contact beetween the 2 same 
>> persons is happening ? I wanted to update the already existing edge data 
>> for adding the new date, but I couldn't figure out a simple way to find the 
>> id of an already existing edge given 2 persons id.
>>
>> Did I miss something ? Maybe my way to think is wrong and I should create 
>> a new edge on each contact with the date ?
>>
>> The final goal, in that use case, would be then to weight and report 
>> relations between people by the number and frequency of contacts.
>>
>> Thanks for any answer,
>> Jérémy
>>
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "ArangoDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>> -----------------------------------
>>
>> Michael Hackstein
>>
>>  
>> eMail:   [email protected]
>> Mobil:   +49-176-44410782
>> Fax:     +49-221-2722999-88
>>
>>  
>> triagens GmbH
>> Hohenstaufenring 43-45
>> 50674 Köln
>>
>>  
>> Sitz der Gesellschaft: Köln
>> Registergericht Köln; HRB 53597
>>
>>  
>> Geschäftsführung:
>> Dr. Frank Celler
>> Martin Schönert
>> Claudius Weinberger
>>
>>  
>>
>>  
>> Diese e-Mail enthält vertrauliche und/oder rechtlich geschützte 
>> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese e-Mail 
>> irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und 
>> vernichten Sie diese e-Mail. Wir haben alle verkehrsüblichen Maßnahmen 
>> unternommen, um das Risiko der Verbreitung virenbefallener Software oder 
>> e-Mails zu minimieren, dennoch raten wir Ihnen, Ihre eigenen 
>> Virenkontrollen auf alle Anhänge an dieser e-Mail durchzuführen. Wir 
>> schließen außer für den Fall von Vorsatz oder grober Fahrlässigkeit die 
>> Haftung für jeglichen Verlust oder Schäden durch virenbefallene Software 
>> oder e-Mails aus.
>>
>>  
>> This e-mail may contain confidential and/or privileged information. If 
>> you are not the intended recipient (or have received this e-mail in error) 
>> please notify the sender immediately and destroy this e-mail. We have taken 
>> precautions to minimize the risk of transmitting software viruses but 
>> nevertheless advise you to carry out your own virus checks on any 
>> attachment of this message. We accept no liability for loss or damage 
>> caused by software.
>>
>>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "ArangoDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ArangoDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to