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

twice pushed a commit to branch json
in repository https://gitbox.apache.org/repos/asf/kvrocks-website.git

commit 6eb2eeaaf3d32ce2307d4d77abc7b42f211c5697
Author: PragmaTwice <[email protected]>
AuthorDate: Wed Jan 3 10:48:58 2024 +0800

    Add docs for the JSON data type
---
 community/data-structure-on-rocksdb.md | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/community/data-structure-on-rocksdb.md 
b/community/data-structure-on-rocksdb.md
index 306172f..34b2132 100644
--- a/community/data-structure-on-rocksdb.md
+++ b/community/data-structure-on-rocksdb.md
@@ -42,8 +42,10 @@ The values encoded for other data types in flags can be 
found in the table below
 | Set        |          4 |
 | ZSet       |          5 |
 | Bitmap     |          6 |
-| Sortedint  |          7 |
+| SortedInt  |          7 |
 | Stream     |          8 |
+| BloomFilter|          9 |
+| JSON       |         10 |
 
 In the encoding version `0`, `expire` is stored in seconds and as a 4byte 
field (32bit integer), `size` is stored as also a 4byte field (32bit integer);
 while in the encoding version `1`, `expire` is stored in milliseconds and as a 
8byte field (64bit integer), `size` is stored as also a 8byte field (64bit 
integer).
@@ -289,3 +291,24 @@ key|index => |    filter     |
              +---------------+
 ```
 
+## JSON
+
+Kvrocks supports the JSON data type just like 
[RedisJSON](https://redis.io/docs/data-types/json/), which implements various 
data operations on [ECMA-404 The JSON Data Interchange 
Standard](https://ecma-international.org/publications-and-standards/standards/ecma-404/).
+
+The current underlying encoding of JSON data type is relatively simple and 
similar to String:
+
+```
+        +----------+------------+-----------+--------------------+
+key =>  |  flags   |  expire    |  format   |       payload      |
+        | (1byte)  | (Ebyte)    |  (1byte)  |       (Nbyte)      |
+        +----------+------------+-----------+--------------------+
+```
+
+where the `payload` is a string encoded in the corresponding `format`:
+
+| format     | enum value |
+|------------|------------|
+| JSON       |          0 |
+| CBOR       |          1 |
+
+Also, if we decide to add a more IO-friendly format to avoid read all payload 
to the memory before searching an element via JSONPath or seperate a relatively 
large JSON to multiple key-values, we can take advantage of the `format` field.

Reply via email to