Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    J

    Julian Browne

    julianbrowne.com · Personal blog · on HN since 2009

    Julian Browne, a software architect, writes about distributed systems, scalability, and architecture, including an explanation of Brewer's CAP theorem.

    Visit blogHN submissions
    Distributed SystemsProgramming
    What HN says

    HN commenters link his CAP theorem article as background reading and his space-based architecture example.

    Stats for nerds
    16HN people shared it
    10linked in comments
    55story points
    Jul 2015last shared
    2010people per year2015

    Top posts on HN

    1. 1
      Brewer's CAP Theorem
      12 people · 38 points · first shared 2009 · 1 comments on HN
    2. 2
      Gangstas Don't Scale
      1 person · 11 points · first shared 2009 · 1 comments on HN
    3. 3
      Hammer Time
      1 person · 3 points · first shared 2010 · Discussion on HN
    4. 4
      Death by Customer
      1 person · 2 points · first shared 2019 · Discussion on HN
    5. 5
      The Attraction of Laws
      1 person · 1 points · first shared 2011 · Discussion on HN
    6. 6
      Space based architecture example
      1 person · first shared 2011

    What HN people wrote when they linked it

    • candresbolanosJul 2015

      Epidemic broadcast that you mention, usually happens when you have a fully connected topology and distribution model works with full replication. But the main advantage with riak_core is that you are able to set the replication factor and quorums, which enables you to setup different distribution models --like sharding or peer-to-peer replication + sharding (common case)-- and balance consistency/availability levels --please review CAP theorem (http://www.julianbrowne.com/article/viewer/brewers-cap-theorem).

      In case of ErlBus, you can also set these parameters (replication factor and quorums), even the quorum of each operation (sub, pub, unsub, subscribers, etc.) can be set independently. So riak_core gives you the flexibility to choose the best distribution model depending on what you really need, and ErlBus inherits those features when you run it on top of riak_core.

      So, you have to consider some variables to choose what distribution model to use:
      1. Number of nodes
      2. Network traffic (Messages/second)
      3. Number of subscriptions (because both pg2 and gproc uses ETS tables)

      Most of the cases is enough default ErlBus with PG2, but if you need a more flaxible and scalable distribution model, well, you probably should go for ErlBus with riak_core.

      I really hope have answered your question, otherwise, you just let me know.

      Thanks!

    • kellrosJul 2012

      What web framework are you using?

      It's possible to model inheritance/abstraction within database design but it's not always optimal. You can 'extend' an existing table by specifying the child identifier as a primary and foreign key referencing the parent table (this is called 1 to 1 mapping).

      Most of the time when you see 1 to 1 mapping you won't see it, because in relational databases you add those columns to the same table. There are some scenarios where it makes sense to split the table into two tables, such as a User and an Account table (AccountId = UserId), so you can better model the relationships.

      Most people would advise against it and tell you to denormalize those tables (put everything on the user table), but if you use an orm that does class-per-table mapping it really reduces friction (ex. anything referencing an Account is accessable from an account, everything referencing a User specifically won't be directly accessable via the Account).

      There's also a difference between key-value stores and object-oriented-databases (both being NOSQL). The reason why using NOSQL is 'closer' to your actual objects is because you would be storing actual objects (they get serialized into a graphs and stored).

      I'd also suggest you check out Brewer's CAP Theorem: http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

    • ColinWrightAug 2011

      The paper with the actual proof (making this a theorem and not just a conjecture or vague speculation) is here:

      http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf

      This is surprisingly readable, and the introduction is quite good. In addition, here is a blog post that talks about the terms, their meanings, various implications, and the proof:

      http://danweinreb.org/blog/what-does-the-proof-of-the-cap-theorem-mean

      Finally, despite the shaky start, this is also a good read:

      http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

    • calculonMay 2011

      Brewer's CAP Theorem

      The first link is the paper which constituted the proof of the theorem, the other two provide more context and background.

      http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.20.1495&rep=rep1&type=pdf
      http://en.wikipedia.org/wiki/CAP_theorem
      http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

    • linuxhanslDec 2010

      Yep... I never quite bought the NoSQL hype.

      The only valid point was to relax some of the guarantees (like consistency) in order to achieve better scalability.

      In the end once cannot escape the CAP theorem (http://www.julianbrowne.com/article/viewer/brewers-cap-theorem)

    • dansingermanMay 2012

      "Performance & scalability mean shyte if you can't guarantee correctness" - well that depends...

      I take it you are aware of Brewer's CAP theorem? (http://www.julianbrowne.com/article/viewer/brewers-cap-theorem) If not, you should be.

    Related

    Andreas Muellerpeekaboo-vision.blogspot.com20 people

    Machine Learning Cheat Sheet (for scikit-learn)

    Andreas Mueller
    Personal · last shared 2021
    Dan Weinrebdanweinreb.org29 people

    Why Did M.I.T. Switch from Scheme to Python?

    Dan Weinreb
    Personal · last shared 2014
    High Scalabilityhighscalability.com922 people

    A Beginner's Guide to Scaling to 11M+ Users on Amazon's AWS

    High Scalability
    Publication · last shared 2026
    Karthik Sekarksat.me19 people

    Map Reduce: A simple introduction (2010)

    Karthik Sekar
    Personal · last shared 2025
    Mark Burgessmarkburgess.org26 people

    Deconstructing the CAP Theorem for CM and DevOps (2013)

    Mark Burgess
    Personal · last shared 2025
    Henry Robinsonthe-paper-trail.org42 people

    Distributed systems theory for the distributed systems engineer

    Henry Robinson
    Personal · last shared 2024
    Bertrand Meyerbertrandmeyer.com47 people

    Introduction to the Theory of Programming Languages (1991)

    Bertrand Meyer
    Personal · last shared 2026
    Coding the Architecturecodingthearchitecture.com15 people

    Distributed big balls of mud (2014)

    Coding the Architecture
    Publication · last shared 2022