This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 377a3d3903bf2166f5e4b95d90f0a237672b812e
Author: Paul J. Davis <[email protected]>
AuthorDate: Mon Mar 2 13:39:00 2020 -0600

    Refactor view index layout
    
    This moves index meta information to its own key space so that we can
    scan all existing indexes efficiently.
---
 src/couch_views/include/couch_views.hrl | 16 ++++++++++------
 src/couch_views/src/couch_views_fdb.erl | 23 +++++++++++++++--------
 2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/src/couch_views/include/couch_views.hrl 
b/src/couch_views/include/couch_views.hrl
index 642431d..c40bb02 100644
--- a/src/couch_views/include/couch_views.hrl
+++ b/src/couch_views/include/couch_views.hrl
@@ -10,14 +10,18 @@
 % License for the specific language governing permissions and limitations under
 % the License.
 
-% indexing
+% Index info/data subspaces
+-define(VIEW_INFO, 0).
+-define(VIEW_DATA, 1).
+
+% Index info keys
 -define(VIEW_UPDATE_SEQ, 0).
--define(VIEW_ID_INFO, 1).
--define(VIEW_ID_RANGE, 2).
--define(VIEW_MAP_RANGE, 3).
+-define(VIEW_ROW_COUNT, 1).
+-define(VIEW_KV_SIZE, 2).
 
--define(VIEW_ROW_COUNT, 0).
--define(VIEW_KV_SIZE, 1).
+% Data keys
+-define(VIEW_ID_RANGE, 0).
+-define(VIEW_MAP_RANGE, 1).
 
 % jobs api
 -define(INDEX_JOB_TYPE, <<"views">>).
diff --git a/src/couch_views/src/couch_views_fdb.erl 
b/src/couch_views/src/couch_views_fdb.erl
index f68dafc..f2ac01b 100644
--- a/src/couch_views/src/couch_views_fdb.erl
+++ b/src/couch_views/src/couch_views_fdb.erl
@@ -249,7 +249,7 @@ get_view_keys(TxDb, Sig, DocId) ->
     } = TxDb,
     {Start, End} = id_idx_range(DbPrefix, Sig, DocId),
     lists:map(fun({K, V}) ->
-        {?DB_VIEWS, Sig, ?VIEW_ID_RANGE, DocId, ViewId} =
+        {?DB_VIEWS, ?VIEW_DATA, Sig, ?VIEW_ID_RANGE, DocId, ViewId} =
                 erlfdb_tuple:unpack(K, DbPrefix),
         [TotalKeys, TotalSize, UniqueKeys] = couch_views_encoding:decode(V),
         {ViewId, TotalKeys, TotalSize, UniqueKeys}
@@ -283,17 +283,17 @@ update_kv_size(TxDb, Sig, ViewId, Increment) ->
 
 
 seq_key(DbPrefix, Sig) ->
-    Key = {?DB_VIEWS, Sig, ?VIEW_UPDATE_SEQ},
+    Key = {?DB_VIEWS, ?VIEW_INFO, ?VIEW_UPDATE_SEQ, Sig},
     erlfdb_tuple:pack(Key, DbPrefix).
 
 
 row_count_key(DbPrefix, Sig, ViewId) ->
-    Key = {?DB_VIEWS, Sig, ?VIEW_ID_INFO, ViewId, ?VIEW_ROW_COUNT},
+    Key = {?DB_VIEWS, ?VIEW_INFO, ?VIEW_ROW_COUNT, Sig, ViewId},
     erlfdb_tuple:pack(Key, DbPrefix).
 
 
 kv_size_key(DbPrefix, Sig, ViewId) ->
-    Key = {?DB_VIEWS, Sig, ?VIEW_ID_INFO, ViewId, ?VIEW_KV_SIZE},
+    Key = {?DB_VIEWS, ?VIEW_INFO, ?VIEW_KV_SIZE, Sig, ViewId},
     erlfdb_tuple:pack(Key, DbPrefix).
 
 
@@ -303,17 +303,17 @@ db_kv_size_key(DbPrefix) ->
 
 
 id_idx_key(DbPrefix, Sig, DocId, ViewId) ->
-    Key = {?DB_VIEWS, Sig, ?VIEW_ID_RANGE, DocId, ViewId},
+    Key = {?DB_VIEWS, ?VIEW_DATA, Sig, ?VIEW_ID_RANGE, DocId, ViewId},
     erlfdb_tuple:pack(Key, DbPrefix).
 
 
 id_idx_range(DbPrefix, Sig, DocId) ->
-    Key = {?DB_VIEWS, Sig, ?VIEW_ID_RANGE, DocId},
+    Key = {?DB_VIEWS, ?VIEW_DATA, Sig, ?VIEW_ID_RANGE, DocId},
     erlfdb_tuple:range(Key, DbPrefix).
 
 
 map_idx_prefix(DbPrefix, Sig, ViewId) ->
-    Key = {?DB_VIEWS, Sig, ?VIEW_MAP_RANGE, ViewId},
+    Key = {?DB_VIEWS, ?VIEW_DATA, Sig, ?VIEW_MAP_RANGE, ViewId},
     erlfdb_tuple:pack(Key, DbPrefix).
 
 
@@ -324,7 +324,14 @@ map_idx_key(MapIdxPrefix, MapKey, DupeId) ->
 
 map_idx_range(DbPrefix, Sig, ViewId, MapKey, DocId) ->
     Encoded = couch_views_encoding:encode(MapKey, key),
-    Key = {?DB_VIEWS, Sig, ?VIEW_MAP_RANGE, ViewId, {Encoded, DocId}},
+    Key = {
+        ?DB_VIEWS,
+        ?VIEW_DATA,
+        Sig,
+        ?VIEW_MAP_RANGE,
+        ViewId,
+        {Encoded, DocId}
+    },
     erlfdb_tuple:range(Key, DbPrefix).
 
 

Reply via email to