I'm pretty sure I can get great performance doing graph queries against dynamo if I use LSI's cleverly. For example, I could have an edge list DB with src-dest hash key on the table, with LSI's on src-distance and src-labels. This would let me query for the "closest" items to a node using the src-distance LSI, or similarly for adjacent edges to a node along a given label.
I want to use this library to accomplish what I'm doing, because I like the idea of a pluggable backend and the abstraction Titan provides. However, I feel that this project does not fully utilize dynamodb's capabilities with LSIs.
Am I missing something? Can I specify multiple LSI's in my graph representations, to then use in my traversals?
(For a more concrete example, I'm considering a social media app using scenario similar to the above where (from a node) I can query for "closest" based on a variety of numerical data (numMutualFriends, profileSimilarity, profileCompatibility, etc.). This way, in a client application, a user can "sort" other users by different fields, and this can just be powered by the LSIs).
I'm pretty sure I can get great performance doing graph queries against dynamo if I use LSI's cleverly. For example, I could have an edge list DB with src-dest hash key on the table, with LSI's on src-distance and src-labels. This would let me query for the "closest" items to a node using the src-distance LSI, or similarly for adjacent edges to a node along a given label.
I want to use this library to accomplish what I'm doing, because I like the idea of a pluggable backend and the abstraction Titan provides. However, I feel that this project does not fully utilize dynamodb's capabilities with LSIs.
Am I missing something? Can I specify multiple LSI's in my graph representations, to then use in my traversals?
(For a more concrete example, I'm considering a social media app using scenario similar to the above where (from a node) I can query for "closest" based on a variety of numerical data (numMutualFriends, profileSimilarity, profileCompatibility, etc.). This way, in a client application, a user can "sort" other users by different fields, and this can just be powered by the LSIs).