--
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 arangodb+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/arangodb/3fa4003d-90c6-4aa9-9e40-d833155c14d0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Jonathan,this is Jan from ArangoDB.Thanks for the hint with the LDBC Benchmark. We will have a look if this is a suitable setup for ArangoDB. Quite often these benchmarks are focused on RDF stores but the graph part of ArangoDBs multi model offering is rather following a property graph model.I forwarded the reported bulk load question to our Java specialist. Hope he will find some time to assist here.Please note, that the problem with the “very simple query” wasn’t necessarily on ArangoDB side and was solved by remodeling the data. The user was storing huge binaries in ArangoDB which is possible but its recommended to store it in a way that allows fast queries on the meta data and only access the binary data if necessary. E.g if you store pictures, pdfs or similar blobs, we recommend to store the meta data in collection A and the actual blob in collection B if you want to store both in Arango. Because if you store everything in one big JSON document, a query against it has to access the whole document during runtime -> a lot of unneeded processing -> query runtime increases.The recommended way fro mour side for best performance in these cases is to store meta data in ArangoDB and use a dedicated filesystem for your binary data.Hope that helped.Best, Jan
On Tue 9. Jul 2019 at 17:06, Jonathan Ellithorpe <j...@cs.stanford.edu> wrote:
Hello All,Has anyone worked on an implementation of the LDBC Social Network Benchmark for ArangoDB?I see some folks here evidently struggling with ArangoDB performance on even very simple queries (e.g. https://groups.google.com/forum/#!topic/arangodb/sIOQ1xzJSpc), as well as how to efficiently bulk load graph data (e.g. https://groups.google.com/forum/#!topic/arangodb/4eI3fvUzDYg).An implementation of the above mentioned benchmark should serve nicely to show how to performantly use ArangoDB and AQL, including the bulk loading of graph data, besides showing ArangoDB's performance capabilities.--Jonathan
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 aran...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/arangodb/3fa4003d-90c6-4aa9-9e40-d833155c14d0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to arangodb+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/arangodb/14150ba1-330c-416a-b264-2fb374f37f44%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/arangodb/14150ba1-330c-416a-b264-2fb374f37f44%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

657 /** 658 * Given a start Person, retrieve their first name, last name, birthday, IP 659 * address, browser, and city of residence.[1] 660 */
... 672 ArangoDatabase db = ((ArangoDbConnectionState) dbConnectionState).getDatabase(); 673 String statement = 674 "WITH Place" 675 + " FOR p IN Person" 676 + " FILTER p._key == @personId" 677 + " FOR c IN 1..1 OUTBOUND p isLocatedIn" 678 + " RETURN {" 679 + " firstName: p.firstName," 680 + " lastName: p.lastName," 681 + " birthday: p.birthday," 682 + " locationIP: p.locationIP," 683 + " browserUsed: p.browserUsed," 684 + " cityId: c._key," 685 + " gender: p.gender," 686 + " creationDate: p.creationDate" 687 + " }"; 688 689 ArangoCursor<BaseDocument> cursor = db.query( 690 statement, 691 new MapBuilder() 692 .put("personId", String.valueOf(operation.personId())) 693 .get(), 694 new AqlQueryOptions(), 695 BaseDocument.class 696 ); 697 698 if (cursor.hasNext()) { 699 BaseDocument doc = cursor.next(); 700 701 resultReporter.report(0, 702 new LdbcShortQuery1PersonProfileResult( 703 (String)doc.getAttribute("firstName"), 704 (String)doc.getAttribute("lastName"), 705 (Long)doc.getAttribute("birthday"), 706 (String)doc.getAttribute("locationIP"), 707 (String)doc.getAttribute("browserUsed"), 708 Long.decode((String)doc.getAttribute("cityId")), 709 (String)doc.getAttribute("gender"), 710 (Long)doc.getAttribute("creationDate")), 711 operation); 712 } else { 713 resultReporter.report(0, null, operation); 714 } 718 /** 719 * Given a start Person, retrieve the last 10 Messages (Posts or Comments) 720 * created by that user. For each message, return that message, the original 721 * post in its conversation, and the author of that post. If any of the 722 * Messages is a Post, then the original Post will be the same Message, i.e., 723 * that Message will appear twice in that result. Order results descending by 724 * message creation date, then descending by message identifier.[1] 725 */
...
737 ArangoDatabase db = ((ArangoDbConnectionState) dbConnectionState).getDatabase(); 738 String statement = 739 "WITH Comment, Post" 740 + " FOR person IN Person" 741 + " FILTER person._key == @personId" 742 + " FOR message IN 1..1 INBOUND person hasCreator" 743 + " SORT message.creationDate DESC, message._key DESC" 744 + " LIMIT @limit" 745 + " FOR originalPost IN 0..1024 OUTBOUND message replyOf" 746 + " FILTER IS_SAME_COLLECTION('Post', originalPost._id)" 747 + " FOR originalPostAuthor IN 1..1 OUTBOUND originalPost hasCreator" 748 + " RETURN {" 749 + " messageId: message._key," 750 + " messageContent: message.content," 751 + " messageImageFile: message.imageFile," 752 + " messageCreationDate: message.creationDate," 753 + " originalPostId: originalPost._key," 754 + " originalPostAuthorId: originalPostAuthor._key," 755 + " originalPostAuthorFirstName: originalPostAuthor.firstName," 756 + " originalPostAuthorLastName: originalPostAuthor.lastName" 757 + " }"; 758 759 ArangoCursor<BaseDocument> cursor = db.query( 760 statement, 761 new MapBuilder() 762 .put("personId", String.valueOf(operation.personId())) 763 .put("limit", new Integer(operation.limit())) 764 .get(), 765 new AqlQueryOptions(), 766 BaseDocument.class 767 ); 768 769 List<LdbcShortQuery2PersonPostsResult> resultList = new ArrayList<>(); 770 771 while (cursor.hasNext()) { 772 BaseDocument doc = cursor.next(); 773 774 String content = (String)doc.getAttribute("messageContent"); 775 if (content == null) { 776 content = (String)doc.getAttribute("messageImageFile"); 777 } 778 779 resultList.add(new LdbcShortQuery2PersonPostsResult( 780 Long.valueOf((String)doc.getAttribute("messageId")), 781 content, 782 (Long)doc.getAttribute("messageCreationDate"), 783 Long.valueOf((String)doc.getAttribute("originalPostId")), 784 Long.valueOf((String)doc.getAttribute("originalPostAuthorId")), 785 (String)doc.getAttribute("originalPostAuthorFirstName"), 786 (String)doc.getAttribute("originalPostAuthorLastName"))); 787 } 788 789 resultReporter.report(0, resultList, operation);