ArangoDB: การรวมจำนวนผ่านการข้ามกราฟ

ในกราฟ ArangoDB ของฉัน ฉันมีหัวเรื่อง เธรดข้อความที่เกี่ยวข้องกับหัวเรื่องนั้น และข้อความภายในเธรดข้อความเหล่านั้น ฉันต้องการสำรวจกราฟในลักษณะที่ฉันส่งคืนข้อมูลที่เกี่ยวข้องกับเธรดข้อความตลอดจนจำนวนข้อความภายในเธรดข้อความ

ข้อมูลมีโครงสร้างที่ค่อนข้างเรียบง่าย: ฉันมีโหนดหัวเรื่อง ขอบที่ขยายไปยังโหนดเธรดที่มีวันที่และหมวดหมู่ที่เกี่ยวข้อง และขอบจากโหนดเธรดไปยังโหนดข้อความ

ฉันต้องการส่งคืนข้อมูลที่เก็บไว้ในโหนดเธรดและจำนวนข้อความที่แนบมากับเธรด

ฉันไม่แน่ใจว่าจะทำอย่างไรกับไวยากรณ์ for v, e, p in 1..2 outbound ฉันควรทำ for v, e, p in outbound โดยมีกราฟซ้อนกันอยู่ข้างในหรือไม่ นั่นยังแสดงอยู่หรือเปล่า?


person Nate Gardner    schedule 21.09.2016    source แหล่งที่มา


คำตอบ (1)


ขออภัยในความล่าช้า เรากำลังดำเนินการอย่างเต็มที่ในเวอร์ชัน 3.1 ;)

ฉันคิดว่าคุณมาถูกทางแล้ว: ไม่ใช่เรื่องง่ายที่จะอธิบายสิ่งที่คุณต้องการบรรลุด้วยคำสั่ง 1..2 OUTBOUND ง่ายกว่ามากในการกำหนดคำสั่ง 1..1 OUTBOUND สองคำสั่ง

จากคำอธิบายของคุณ ฉันคิดว่าคำถามต่อไปนี้คือสิ่งที่คุณจะใช้:

FOR thread IN 1 OUTBOUND @start @@threadEdges
  LET nr = COUNT(FOR message IN 1 OUTBOUND thread @@messageEdges RETURN 1)
  RETURN {
    date: thread.date,
    category: thread.category,
    messages: nr
  }

สำหรับคำอธิบายบางอย่าง: ก่อนอื่นฉันต้องเลือกเธรดที่เกี่ยวข้อง ต่อไปฉันจะทำแบบสอบถามย่อยเพื่อส่งข้อความสำหรับหนึ่งเธรด ในที่สุดฉันก็ส่งคืนข้อมูลที่ฉันต้องการ

ในแง่ของประสิทธิภาพ: ในแง่ของการเข้าถึงข้อมูล (ซึ่งเป็นไปได้มากที่สุดว่าเป็นการดำเนินการ "คอขวด") ไม่มีความแตกต่างใน FOR x IN 1..2 OUTBOUND [...] และ FOR x IN 1 OUTBOUND [...] FOR y IN 1 OUTBOUND x [...] ทั้งคู่ต้องดูเอกสารเดียวกันทุกประการ การเพิ่มประสิทธิภาพการค้นหาอาจช้าลงเล็กน้อยในกรณีหลัง แต่ความแตกต่างอยู่ที่ต่ำกว่า 1ms มาก

person mchacki    schedule 21.10.2016
comment
นี่คือสิ่งที่ทีมของฉันทำอย่างมีประสิทธิภาพ ขณะนี้ การรวมเหล่านี้ใช้เวลาประมาณ 5 วินาทีในแต่ละครั้ง แต่เมื่อเรียกใช้หกรายการพร้อมกัน เซิร์ฟเวอร์จะทำงานช้าลงอย่างมาก และการสืบค้นจะเริ่มใช้เวลา 30-40 วินาที มีจำนวนกระทู้ประมาณ 60 กระทู้ โดยมีข้อความมากถึง 70,000 ข้อความ สมมุติว่าเมื่อเราไปยังคลัสเตอร์ เราจะเห็นว่าสิ่งนี้ย้อนกลับไปประมาณ 5 วินาที แต่เราอยากให้มันเร็วขึ้นจริงๆ - person Nate Gardner; 28.10.2016
comment
โอเค เข้าใจแล้ว ;) เป็นไปได้ไหมที่คุณจะให้ชุดข้อมูลที่ไม่เปิดเผยตัวตนแก่เรา เพื่อที่เราจะได้พยายามปรับสิ่งที่เกิดขึ้นให้เหมาะสมที่สุด สำหรับเรา การใช้ชุดข้อมูลจริงจะง่ายกว่าการที่เราสร้างขึ้นมาเสมอ เรายินดีที่จะลงนามใน NDA สำหรับเรื่องนั้น (ฉันไม่ได้แจ้งรายละเอียดเกี่ยวกับการสื่อสารทั้งหมดที่เกิดขึ้น ดังนั้นหากเราได้รับชุดข้อมูลจากคุณแล้ว ฉันจะได้จัดการและรับคำถามของคุณเร็วขึ้น) ฉันก็ไม่พอใจเช่นกัน ทุกอย่างที่อยู่เหนือ 1 วินาที - person mchacki; 29.10.2016