<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:10:08 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[DOCS-14335] [SERVER] CAP and PACELC theorem explanation </title>
                <link>https://jira.mongodb.org/browse/DOCS-14335</link>
                <project id="10380" key="DOCS">Documentation</project>
                    <description>&lt;h2&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;Description&lt;/h2&gt;
&lt;p&gt;Do we have any official documentation on&#160; CAP or PACELC_theorem?&#160;&#160; The only stuff I can find is what our SA have written but there is nothing posted on&#160;&lt;a href=&quot;http://mongodb.com/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;mongodb.com&lt;/a&gt;.&#160;&#160; Our own SA written material says we are P+C (&lt;a href=&quot;https://docs.google.com/presentation/d/1m52XODzQIHGAcgGaAod4e1NoTkcEQT4MIvVqSJCN0jQ/edit#slide=id.g90ae0d2d30_0_0&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.google.com/presentation/d/1m52XODzQIHGAcgGaAod4e1NoTkcEQT4MIvVqSJCN0jQ/edit#slide=id.g90ae0d2d30_0_0&lt;/a&gt;&#160;however wikipedia says we are P+A&#160;&lt;a href=&quot;https://en.wikipedia.org/wiki/PACELC_theorem&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://en.wikipedia.org/wiki/PACELC_theorem&lt;/a&gt;) and we don&#8217;t address PACELC (of which wiki says we are E+C).&#160;&lt;/p&gt;

&lt;p&gt;From JM: see my comment below. We do have such docs.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Scopeofchanges&quot;&gt;&lt;/a&gt;Scope of changes&lt;/h2&gt;

&lt;h2&gt;&lt;a name=&quot;ImpacttoOtherDocs&quot;&gt;&lt;/a&gt;Impact to Other Docs&lt;/h2&gt;

&lt;h2&gt;&lt;a name=&quot;MVP%28WorkandDate%29&quot;&gt;&lt;/a&gt;MVP (Work and Date)&lt;/h2&gt;

&lt;h2&gt;&lt;a name=&quot;Resources%28ScopeorDesignDocs%2CInvision%2Cetc.%29&quot;&gt;&lt;/a&gt;Resources (Scope or Design Docs, Invision, etc.)&lt;/h2&gt;
</description>
                <environment></environment>
        <key id="1671247">DOCS-14335</key>
            <summary>[SERVER] CAP and PACELC theorem explanation </summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="albert.wong@mongodb.com">Albert Wong</reporter>
                        <labels>
                            <label>backlog</label>
                            <label>proactive</label>
                            <label>query</label>
                            <label>replication</label>
                    </labels>
                <created>Mon, 5 Apr 2021 18:59:39 +0000</created>
                <updated>Mon, 22 Jan 2024 16:17:40 +0000</updated>
                                                                            <component>manual</component>
                    <component>Server</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="3701957" author="nick.larew" created="Mon, 5 Apr 2021 21:54:34 +0000"  >&lt;blockquote&gt;&lt;p&gt;They don&#8217;t frame the behaviour in academic contexts of things like CAP, BASE, or PACELC&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&#160;&lt;br/&gt;
I think that generally makes sense and aligns with our docs approach. &quot;Consistent&quot; and &quot;Available&quot; are somewhat broad terms (consistent reads? writes?) and MongoDB is too customizable to neatly fit into any subcategory. It&apos;s probably better to focus on the actual goals/requirements in terms of &quot;strong consistency, transactional guarantees, and replica set elections&quot; and then work backwards towards a read/write concern strategy.&lt;/p&gt;</comment>
                            <comment id="3701931" author="JIRAUSER1256209" created="Mon, 5 Apr 2021 21:44:01 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mat.keep&quot; class=&quot;user-hover&quot; rel=&quot;mat.keep&quot;&gt;mat.keep&lt;/a&gt;&#160;says...&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Whitepapers like&#160;&lt;a href=&quot;https://mongodb.highspot.com/items/5f156d66659e93731be56600&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Why Documents&lt;/a&gt;&#160;and the&#160;&lt;a href=&quot;https://mongodb.highspot.com/items/5ab6c16d3e255f0cd5e58e52&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Architecture Guide&lt;/a&gt;&#160;discuss our behaviour around strong consistency, transactional guarantees, and replica set elections. They don&#8217;t frame the behaviour in academic contexts of things like CAP, BASE, or PACELC&lt;/p&gt;</comment>
                            <comment id="3701925" author="JIRAUSER1256209" created="Mon, 5 Apr 2021 21:41:43 +0000"  >&lt;p&gt;&lt;a href=&quot;https://mongodb.slack.com/archives/C0V2X5QDP/p1617635513288000&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://mongodb.slack.com/archives/C0V2X5QDP/p1617635513288000&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3701921" author="nick.larew" created="Mon, 5 Apr 2021 21:40:05 +0000"  >&lt;p&gt;We probably could address CAP a bit more directly (i.e. by name) given that it&apos;s a fairly ubiquitous term in distributed systems. Could be a relatively easy SEO win!&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=albert.wong&quot; class=&quot;user-hover&quot; rel=&quot;albert.wong&quot;&gt;albert.wong&lt;/a&gt;&#160;you won&apos;t find a definitive answer because MongoDB isn&apos;t definitively CP or AP. Instead, database clients specify a read and write concern for every query - depending on the exact read/write concern settings you will get different levels of tradeoff between consistency and availability. The cool part is that each client gets to decide for themselves what that tradeoff is and MongoDB handles it all under the hood.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;In a banking app that requires high consistency (CP), I could set up my client to have &lt;a href=&quot;https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/#causal-consistency&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;causally consistent sessions&lt;/a&gt;. This is among the highest levels of consistency MongoDB provides when confronted with partitions (CAP) and generally incurs higher latency to support the consistency (PACELC).&lt;/li&gt;
	&lt;li&gt;In a social media app that requires high availability (AP), I could set up my client to use a &quot;local&quot; read concern. This means I may not get a few &quot;likes&quot; or comments on a post if there&apos;s a network partition, but it&apos;s okay if those don&apos;t show up immediately - AP means our preference is that we get &lt;em&gt;any&lt;/em&gt; data back even if it&apos;s not totally up to date.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;^ There&apos;s a bunch of different read/write concern combinations so you can really customize your CAP restrictions for each query.&lt;/p&gt;</comment>
                            <comment id="3701813" author="JIRAUSER1256209" created="Mon, 5 Apr 2021 20:58:15 +0000"  >&lt;p&gt;It doesn&apos;t specifically address CAP.&#160; &#160;Am I missing something?&lt;/p&gt;</comment>
                            <comment id="3701771" author="JIRAUSER1257151" created="Mon, 5 Apr 2021 20:45:13 +0000"  >&lt;p&gt;&lt;a href=&quot;https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/&lt;/a&gt; - &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=albert.wong&quot; class=&quot;user-hover&quot; rel=&quot;albert.wong&quot;&gt;albert.wong&lt;/a&gt; we do. Please consider closing the ticket.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 5 Apr 2021 20:45:13 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 44 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>DOCSP-11702</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>emet.ozar@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 44 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>albert.wong@mongodb.com</customfieldvalue>
            <customfieldvalue>julia.malkin@mongodb.com</customfieldvalue>
            <customfieldvalue>nick.larew@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hz3a1b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hyod87:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hz2waf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                </customfields>
    </item>
</channel>
</rss>