Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Ok, let's put some basics upfront:</p> <p>I guess, your article is that one: <a href="http://www.nextbigwhat.com/technology-implementation-for-social-features-297/" rel="nofollow">http://www.nextbigwhat.com/technology-implementation-for-social-features-297/</a></p> <p><a href="http://en.wikipedia.org/wiki/Social_graph" rel="nofollow">http://en.wikipedia.org/wiki/Social_graph</a> 'The social graph in the Internet context is a graph that depicts personal relations of internet users'</p> <p><a href="http://thrift.apache.org/" rel="nofollow">http://thrift.apache.org/</a> combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.</p> <p><a href="https://github.com/krati/krati" rel="nofollow">https://github.com/krati/krati</a> Krati is a simple persistent data store with very low latency and high throughput. It is designed for easy integration with read-write-intensive applications with little effort in tuning configuration, performance and JVM garbage collection.</p> <p><a href="http://code.google.com/p/javaewah/" rel="nofollow">http://code.google.com/p/javaewah/</a> The bit array data structure is implemented in Java as the BitSet class.... JavaEWAH is a word-aligned compressed variant of the Java bitset class.</p> <p><a href="http://jruby.org/apidocs/serialized-form.html" rel="nofollow">http://jruby.org/apidocs/serialized-form.html</a> ....</p> <p>----- Here's are my interpretations:</p> <p>The context of the article is technology impementation. So they listed everything. In this context I guess we can ignore apache Thrift for now, as this is just the glue, which they use to attach technologies to each other. Also jrubi forms goes somewhat out of scope for the social graph considerations. Yes a social graph needs input and output, but forms addresses the topic which level of details comes from there.</p> <p>The interesting part is krati and javaewah. Well reading the article makes obvious, that they implement their social graphs via memberships. This can be about groups or roles or something similar. Memberships can be implemented as bitmap: Have a group with a bitmap with one bit per each user. Each Bit can be addressed to check if the user is member or not. As simple as that. The Bitmaps are made up by Krati and than stored in/managed by JavaEWAH. The cons is: The more users, the bigger does the bitmap go. The Pro: It is FAST.</p> <p>In relational databases each relation would be implemented as foreign key 2 foreign key pair (which causes some index overhead >eg. 2 ints for the keys and then 2*2+x ints for the double index, whereby the x debends on the database). Especially with lots of memberships per group this can get a disk space utilization challenge. So I guess in such cases the compressed BitMap is implementation is even better in terms of storage utilization.</p> <p>UPDATE---</p> <p>One could write books on the whole topic. I guess I need to make a point here. However good starting points from here are:</p> <p><a href="http://www.slideshare.net/lemire/all-about-bitmap-indexes-and-sorting-them" rel="nofollow">http://www.slideshare.net/lemire/all-about-bitmap-indexes-and-sorting-them</a></p> <p><a href="https://github.com/jingwei/krati/commit/ab1432003e59a07269d23c1cb307625b0e8c5be2" rel="nofollow">https://github.com/jingwei/krati/commit/ab1432003e59a07269d23c1cb307625b0e8c5be2</a></p> <p><a href="http://en.wikipedia.org/wiki/Data_store" rel="nofollow">http://en.wikipedia.org/wiki/Data_store</a> <a href="http://en.wikipedia.org/wiki/Key-value_store" rel="nofollow">http://en.wikipedia.org/wiki/Key-value_store</a> (to get an idea about different database concepts than just the relative one)</p> <p><a href="http://dev.mysql.com/doc/refman/5.0/en/innodb-physical-record.html" rel="nofollow">http://dev.mysql.com/doc/refman/5.0/en/innodb-physical-record.html</a> (to get some indication what about the costs of a foreign key 2 foreign key relation)</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload