<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 02:57:51 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>[SERVER-1723] Add Bitmap indexes</title>
                <link>https://jira.mongodb.org/browse/SERVER-1723</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;As an alternative to a B+Tree, using Bitmap Indexes (&lt;a href=&quot;http://en.wikipedia.org/wiki/Bitmap_index&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://en.wikipedia.org/wiki/Bitmap_index&lt;/a&gt;) could allow a very speedy retrieval of simple queries like the equivalent of &quot;SELECT * FROM FOO WHERE GENDER = &quot;MALE&quot; AND &quot;STUDENT&quot; = TRUE.&lt;/p&gt;

&lt;p&gt;Bitmap indexes used to be thought of a &quot;low cardinality&quot; thing, but in &quot;An Adequate Design for Large Data Warehouse Systems: Bitmap index versus B-tree index&quot; by Zaker et al, the authors go even as far as saying that for certain situations, the cardinality of the values does not even matter. Their conclusive statement is as follows:&lt;/p&gt;

&lt;p&gt;Thus, we conclude that Bitmap index is the conclusive choice for a DW designing no matter for columns with high or low cardinality.&lt;/p&gt;

&lt;p&gt;A highly optimized C++ library called Fastbit (&lt;a href=&quot;https://sdm.lbl.gov/fastbit/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://sdm.lbl.gov/fastbit/&lt;/a&gt;) already exists.&lt;/p&gt;

&lt;p&gt;Especially when using large amounts of data that have a low cardinality (e.g. a &apos;gender&apos; field), the compressed bitmap indexes could keep the RAM usage low and outperform B+Trees.&lt;/p&gt;</description>
                <environment></environment>
        <key id="12991">SERVER-1723</key>
            <summary>Add Bitmap indexes</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</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="backlog-query-optimization">Backlog - Query Optimization</assignee>
                                    <reporter username="rb2k">Marc Seeger</reporter>
                        <labels>
                    </labels>
                <created>Fri, 3 Sep 2010 08:10:22 +0000</created>
                <updated>Tue, 6 Dec 2022 05:48:20 +0000</updated>
                                                                            <component>Index Maintenance</component>
                                        <votes>51</votes>
                                    <watches>44</watches>
                                                                                                                <comments>
                            <comment id="1194975" author="lemire@gmail.com" created="Mon, 7 Mar 2016 15:00:17 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=rb2k&quot; class=&quot;user-hover&quot; rel=&quot;rb2k&quot;&gt;rb2k&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Fastbit is indeed very good, but it uses WAH which is patented: &lt;a href=&quot;http://www.google.ca/patents/US6831575&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.google.ca/patents/US6831575&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatives include EWAH which is used, for example, by Git (&lt;a href=&quot;https://github.com/git/git/tree/master/ewah&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/git/git/tree/master/ewah&lt;/a&gt;), Apache Hive and so forth.  See  &lt;a href=&quot;http://githubengineering.com/counting-objects/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://githubengineering.com/counting-objects/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also Roaring (&lt;a href=&quot;http://roaringbitmap.org/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://roaringbitmap.org/&lt;/a&gt;) used by Apache Spark, Apache Kylin, Druid, Elastic and so forth. See &lt;a href=&quot;https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmaps&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmaps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To the best of my knowledge, EWAH and Roaring are not encumbered by patents. They are both used is several major mission-critical projects.&lt;/p&gt;</comment>
                            <comment id="105503" author="eliot" created="Sun, 1 Apr 2012 06:13:57 +0000"  >&lt;p&gt;There are a lot of important features, so its just on the list, just hasn&apos;t made it to the top yet.&lt;/p&gt;</comment>
                            <comment id="93876" author="rlaferla" created="Wed, 29 Feb 2012 19:53:11 +0000"  >&lt;p&gt;This is an important feature.  Why hasn&apos;t it received much attention?&lt;/p&gt;</comment>
                            <comment id="21939" author="dlee" created="Thu, 30 Dec 2010 10:57:55 +0000"  >&lt;p&gt;UPDATE: I propose merging b-tree indexes using in-memory bitmap indexes, like PostgreSQL&lt;/p&gt;

&lt;p&gt;Supporting in-memory bitmap indexes is a great way to increase performance using simpler (non-compound) indexes, and fits mongodb&apos;s philosophy of giving users greater performance in simplicity and flexibility. In-memory bitmap indexes allow single property indexes to go further without having to create various permutations of compound indexes.&lt;/p&gt;

&lt;p&gt;Postgresql does this and explains it better: &lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/indexes-bitmap-scans.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.postgresql.org/docs/8.3/static/indexes-bitmap-scans.html&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="21213" author="plasma" created="Thu, 9 Dec 2010 01:20:57 +0000"  >&lt;p&gt;Bitmap indexes are also mergable; you can overlay multiple bitmap indexes to resolve queries by having individual, single column/field bitmap indexes where one covers GENDER, another with YEAR, and another that covers STUDENT.&lt;/p&gt;

&lt;p&gt;This would mean you have three indexes that covers all permutations of those 3 fields (or just one or two of them), unlike with compound btree indexes where its a left-most matching prefix.&lt;/p&gt;</comment>
                            <comment id="21131" author="smasters" created="Tue, 7 Dec 2010 04:06:52 +0000"  >&lt;p&gt;Even just having limited support for a tag would be highly useful and efficient.&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_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25126"><![CDATA[Query Optimization]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 7 Dec 2010 04:06:52 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        7 years, 49 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_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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            7 years, 49 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Old_Backport</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10000"><![CDATA[No]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>plasma</customfieldvalue>
            <customfieldvalue>backlog-query-optimization</customfieldvalue>
            <customfieldvalue>lemire@gmail.com</customfieldvalue>
            <customfieldvalue>dlee</customfieldvalue>
            <customfieldvalue>eliot</customfieldvalue>
            <customfieldvalue>rb2k</customfieldvalue>
            <customfieldvalue>rlaferla</customfieldvalue>
            <customfieldvalue>smasters</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrpg0f:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6228</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrpw53:</customfieldvalue>

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