A ing method between RDBMS database tables and Redis Models
Key |
Value |
Remarks |
Type |
Value description |
Tab: id |
STRING |
Integer string |
Table Primary Key tab_id value source Key name rules:Table Name: Id The initial value is 0. Call the INCR command and Add 1 before each new record. |
Tab:Tab_id Value |
HASH |
Column name/column value HASHMAP |
Storage Structure of column values except primary keys for each record in the master table Key name rules:Table Name:Record primary key value |
Emp_id |
Ename |
Mgr_id |
1 |
SMITH |
8 |
2 |
ALLEN |
8 |
3 |
SALESMAN |
7 |
Key name |
Value |
Emp: id |
3 |
Emp: 1 |
{Ename = "SMITH", mgr_id = "8 "} |
Emp: 2 |
{Ename = "ALLEN", mgr_id = "8 "} |
Emp: 3 |
{Ename = "SALESMAN", mgr_id = "7 "} |
Key |
Value |
Remarks |
Type |
Value description |
Tab: indices: col_idx:Col_idx Value |
SET |
The values of all col_idx columns are equalCol_idx ValueSet of primary key values of the record |
Key-value pairs corresponding to the non-unique index column col_idx In the table Key name rules:Table Name: Idices:Index column name:Index column Value There may be multiple key-value pairs, and each index column value corresponds to one |
Emp_id |
Ename |
Mgr_id |
1 |
SMITH |
8 |
2 |
ALLEN |
8 |
3 |
SALESMAN |
7 |
Key name |
Value |
Emp: id |
3 |
Emp: 1 |
{Ename = "SMITH", mgr_id = "8 "} |
Emp: 2 |
{Ename = "ALLEN", mgr_id = "8 "} |
Emp: 3 |
{Ename = "SALESMAN", mgr_id = "7 "} |
Emp: indices: mgr_id: 7 |
(3) |
Emp: indices: mgr_id: 8 |
(1, 2) |
Key |
Value |
Remarks |
Type |
Value description |
Tab: uniques: col_uniq |
HASH |
Col_uniq column value/corresponding record primary key value |
Key-value pairs corresponding to the non-unique index column col_idx In the table Key name rules:Table Name: Uniques:Index column name |
Emp_id |
Ename |
Email |
1 |
SMITH |
Foo@gmail.com |
2 |
ALLEN |
Bar@163.com |
3 |
SALESMAN |
Zoo@hotmail.com |
Key name |
Value |
Emp: id |
3 |
Emp: 1 |
{Ename = "SMITH", email = "foo@gmail.com "} |
Emp: 2 |
{Ename = "ALLEN", email = "bar@163.com "} |
Emp: 3 |
{Ename = "SALESMAN", email = "zoo@hotmail.com "} |
Emp: uniques: email |
{Foo@gmail.com = "1", bar@163.com = "2 ", |
|
Zoo@hotmail.com = "3" |
Some time ago, in the selection of memory databases, there was still a gap between Aerospike and Redis. Because Redis has already had many successful cases in the industry, and domestic Internet giants are also using BAT, and there are also a wide range of online resources. Aerospike is just open-source, in terms of application cases and technical resources, this is the case.
During this period of migration, I also read a lot of online technical documents of Redis and some open-source ORM implementations, and briefly summarized the ing Between Relational Database Service (RDBMS) tables and Redis models, the record is forgotten here.
Because Redis is only a simple Key-Value storage system and does not have the table and index concepts in RDBMS, You need to implement access to the original database table model in Redis, there must be a transformation method for the model, that is, the ing method between the models. The table and index concepts in RDBMS must be converted into Redis Key-Value objects.
In the following ing method description, the premise is that the relational database model uses a sequence of non-business meaning values as the primary key. This may not match the actual situation and needs to be adjusted as needed. Using numeric values as the primary key mainly aims to save the memory usage of Redis model index data. The memory can save a little bit, and there is no surplus grain in the landlord's house.
All Key-Value creation and maintenance in the Redis model, including the Key-Value creation and maintenance for the corresponding RDBMS table index, and the uniqueness guarantee of the unique index, are completed by the application itself, redis only stores data.
Table Model
In addition, all Key-Value creation and maintenance in the Redis model, including Key-Value creation and maintenance corresponding to the index of the RDBMS database and table, as well as the unique guarantee of the unique index, it is done by the application itself, and Redis is only responsible for data storage.
Table Model
RDBMS table model
Redis Model
The RDBMS model in is converted to the Redis model. The Key-Value values are described as follows:
Example
For example, the data of the table emp and the data converted into the Redis model are as follows:
Non-unique single-column Index Model
RDBMS table model
The table has a non-unique index on col_idx.
Redis Model
The RDBMS index in the model is converted to the Redis model. The Key-Value values related to the index are described as follows:
Example
For example, the table emp has a non-unique index on mgr_id. The table data and the data converted to the Redis model are as follows:
Unique Single Column Index Model
RDBMS table model
The table has a unique index on the column col_uniq.
Redis Model
The RDBMS index in the model is converted to the Redis model. The Key-Value values related to the index are described as follows:
Example
For example, the table emp has a unique index on email. The table data and the data converted to the Redis model are as follows:
(Not) unique multi-Column Composite Index Model
RDBMS table model
The table has a non-unique composite index on col_idx1 and col_idx2 columns,
A unique composite index is created on col_uniq1 and col_uniq2 columns.
Redis Model
The index in the model is converted to the Redis model. The Key-Value values related to the index are described as follows:
Key |
Value |
Remarks |
Type |
Value description |
Tab: indices: col_idx1:Col_idx1 Value: Col_idx2:Col_idx2 Value |
SET |
A set of primary key values of all records that meet the index column value conditions |
Key-value pairs of non-unique index columns col_idx1 and col_idx2 Key name rules:Table Name: Idices:Index column 1 Name:Index column 1 Value:Index Column 2 Name:Index Column 2 value: There may be multiple key-value pairs, and each group of index columns corresponds to one |
Tab: uniques: col_uniq1: col_uniq2 |
HASH |
Col_uniq1 column value, col_uniq2 column value combination/corresponding record primary key value |
Key-value pairs for non-unique index columns col_uniq1 and col_uniq2 Key name rules:Table Name: Uniques:Index column 1 Name:Index Column 2 Name |
In fact, the (non) unique multi-Column Composite index is not necessary. It can be replaced by creating a non-unique single-column index for each column in the composite index, because non-unique single-column indexes use SET (SET), all conditional queries on the composite index can be converted into SET operations to achieve SUNION, SDIFF, SINTER, etc.
Association (one-to-many/one-to-one)
RDBMS table model
Redis Model
The parent table does not need special processing. The child table is associated with the parent_id column of the parent table as a non-unique index. For more information, see the non-unique Single Column index model.