Designing "social-feed" in DynamoDB

designing meaning
designing synonym
designing art
designing clothes
types of designing
designing person
designing vocabulary
designing games

This question might be relevant for any document based NoSQL database.

I'm making some interest specific social network and decided to go with DynamoDB because of scalability and no-pain-administration factors. There are only two main entities in database: users and posts.

Requirement for common queries are very simple:

  • Home feed (feed of people I'm following)
  • My/User feed (feed of mine, or specific user feed)
  • List of user I/user followed
  • List of followers

Here is a database scheme I come up with so far (legend: __thisIsHashKey and _thisIsRangeKey):

timeline = { // post 
    __usarname:"totocaster",
    _date:"1245678901345",
    record_type:"collection",
    items: ["2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594"],
    number_of_likes:123,
    description:"Hello, this is cool"
} 

timeline = { // new follower 
    __usarname:"totocaster",
    _date:"1245678901345",
    type:"follow",
    follower:"tamuna123"
}

timeline = { // new like 
    __usarname:"totocaster",
    _date:"1245678901345",
    record_type:"like",
    liker:"tamuna123",
    like_date:"123255634567456"
}

users = {
    __username:"totocaster",
    avatar_url:"2d931510-d99f-494a-8c67-87feb05e1594",
    followers:["don_gio","tamuna123","barbie","mikecsharp","bassman"],
    following:["tamuna123","barbie","mikecsharp"],
    likes:[
    {
        username:'barbie',
        date:"123255634567456"
    },
    {
        username:"mikecsharp",
        date:"123255634567456"
    }],
    full_name:"Toto Tvalavadze",
    password:"Hashed Key",
    email:"totocaster@myemailprovider.com"
}

As you can see I came-up storing all my post directly in timeline collection. This way I can query for posts using date and username (hash and range keys). Everything seems fine, but here is the problem:

I can not query for User-Timeline in one go. This will be one of the most demanded queries by system and I can not provide efficient way to do this. Please help. Thanks.


Designing, Designing with Canva. Creative tips to supercharge your design skills. 0 / 39 completed. Noun: 1. designing - the act of working out the form of something (as by making a sketch or outline or plan); "he contributed to the design of a new instrument"


I would check out the Titan graph database (http://thinkaurelius.github.com/titan/) and Neo4j (http://www.neo4j.org/).

I know Titan claims to scale pretty well with large data sets.

Ultimately I think your model maps well to a graph. Users and posts would be nodes, and then you can connect them arbitrarily via edges. A user (node) is a friend (edge) of another user (node).

A user (node) has many posts (nodes) in their timeline. Then you can run interesting traversals via the graph.

Designing with Canva – Design School, Inspirational Interior Design Ideas for Living Room Design, Bedroom Design, Kitchen Design and the entire home. Home Designing Blog Magazine covering� Service design designing or organizing the experience around a product and the service associated with a product's use. Transgenerational design, the practice of making products and environments compatible with those physical and sensory impairments associated with human aging and which limit major activities of daily living.


You can also use Amazon Neptune (https://aws.amazon.com/neptune/) (Graph DB) which is well suited for social network. I don't think DynomoDB would be a good choice for yours use cases.

Design, designing. The adjective designing describes those who secretly scheme to get what they want, even if it means cheating others, like the designing group� Synonyms for designing at Thesaurus.com with free online thesaurus, antonyms, and definitions. Find descriptive alternatives for designing.


Interior Design Ideas & Home Decorating Inspiration, Define designing. designing synonyms, designing pronunciation, designing translation, English dictionary definition of designing. adj. 1. Conniving; crafty. 2. Designing: clever at attaining one's ends by indirect and often deceptive means. Synonyms: artful, beguiling, cagey… Antonyms: artless, guileless, ingenuous…


designing, Synonyms for designing at Thesaurus.com with free online thesaurus, antonyms, and definitions. Find descriptive alternatives for designing. Whether you are designing an indoor or outdoor space, get inspired with these design ideas from DIYNetwork.com.


Designing, We present a computational tool for designing ornamental curve networks— structurally-sound Duration: 5:03 Posted: Jul 18, 2016 Inspirational Interior Design Ideas for Living Room Design, Bedroom Design, Kitchen Design and the entire home. Home Designing Blog Magazine covering Architecture, Cool Products!