Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-7662

3x Usability/Documenation Suggestions: CAP, Replica, Flush

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 2.1.0, 2.2.0
    • 2.0
    • None
    • Security Level: Public

    Description

      I've been racking my brain on Couchbase's classification in the CAP theorem, and have concluded (perhaps erroneously?) that it simultaneously fulfills 2 instances of the "choose 2 of 3" requirements. The "Working Set" portion of Couchbase is CP; we don't have Availability because writes are not guaranteed if there is not enough room in the working set. The "Persisted Working Set" is AP; it is not Consistent because a Map/View does not always query the most up to date data – it only queries persisted data. There is another aspect of the latter as well: two emits from a Map/View are not guaranteed to show up in the same Reduce/Query, because the multiple emits in the Map/View are not combined/atomic. ACTUALLY, I don't know that second aspect to be 100% true because I don't know the Couchbase internals... however, I have asked the question here: http://www.couchbase.com/forums/thread/handful-questions-hotspotsemit-atomicityview-updatesreduce-results-saving (question #2) – and seeing as nobody knows the answer to it, the safest bet is that atomocity isn't guaranteed. You would be able to answer it if the emits were atomic because it doing so would require additional work on your part (and is perhaps impossible because of the CAP theorem itself).
      ^^The reason I'm pointing this out is just so the documentation can be updated accordingly. Right now I see a lot of uncertainty in it and I would like to see clarity instead. The less confused your users are, the less time you have to spend helping them, the more time you spend working on the actual product, and then I win in the end . The key thing to mention (that I have not yet seen mentioned) are the two differences in the modes of operation. Emphasis should be put on the effects this has in a user's software design. One could easily write an entire essay on the subject. However I will state that Couchbase implementing 2 sections of the "choose 2 of 3" requirement simultaneously is freaking amazing. Couchbase is awesome.

      "Replica"/"Replicate" terminology usage is ambiguious. The differences between the two are astronomical. Use more adjectives/adverbs or invent new words to obliterate the ambiguity.
      Use 1 (storing a value): http://www.couchbase.com/docs/couchbase-manual-1.8/couchbase-introduction-architecture-replication.html
      Use 2 (XDCR): http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-admin-tasks-xdcr.html

      "Flush" is used in other domains to mean "write (flush) to disk", not "delete". The documentation is clear on this, but what if a "know-it-all" user was to use it without reading the documentation (REST API for example (Because I'm assuming the web interface warns you?))? "Format" would be a good alternative...

      d3fault

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            kzeller kzeller
            d3fault d3fault
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 59h
                59h
                Remaining:
                Remaining Estimate - 59h
                59h
                Logged:
                Time Spent - Not Specified
                Not Specified

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty