欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCDatabase介绍(3) 博客分类: 软件开发 数据结构 

程序员文章站 2024-02-21 09:11:22
...

四、存储数据结构

1、TCT的存储数据结构

TC的不同的数据类型,有不同的数据存储结构。这里主要介绍TC的Table类型的存储结构。

每个TC的Table,起码有一个*.tct文件。这个tct,是在hash数据库的基础上改进而来的。下面转贴几张张宴的PPT里的图。

TCDatabase介绍(3)
            
    
    博客分类: 软件开发 数据结构 TCDatabase介绍(3)
            
    
    博客分类: 软件开发 数据结构 

TCDatabase介绍(3)
            
    
    博客分类: 软件开发 数据结构 

TCT的改进,就是在Hash的Key-Value的Value部分,动了一些手脚,将多个字段打成一个大包,都存在一个Value里去了。

另外,TCTDB,有可能会有一个*.tct.idx文件,这个idx,是一个B+Tree结构,将一个table中的各个需要建立索引的字段数据,在TCBDB中建立索引。

TCBDB的结构图如下:

TCDatabase介绍(3)
            
    
    博客分类: 软件开发 数据结构 

在idx文件里,则是将value与key反过来存放。

2、TCDatabase的存储数据结构

 

 

为了解决之前提到过的TCTDB存在的问题,我们设想的TCDatabase的结构,将是这样的:

1、表结构(data.tcb.cfg) TCHDB 
table_name1 => {column1=>string,column2=>int} 
table_name1_count => 10 
table_name1_index => {column1,column2} 
table_name2 => {column1=>string,column2=>int} 
table_name2_count => 10 
table_name2_index => {column1,column2} 
2、记录集(data.tcb)  TCBDB 
table_name1/pkey1.column1 => value1 
table_name1/pkey1.column2 => value2 
table_name1/pkey2.column1 => value3 
table_name1/pkey2.column2 => value4 
table_name2/pkey1.column1 => value5 
table_name2/pkey1.column2 => value6 
3、索引(data.tcb.idx)  TCBDB 
table_name1/column1/value1\0pkey1 => pkey1 
table_name1/column1/value3\0pkey2 => pkey2 
table_name1/column2/value2\0pkey1 => pkey1 
table_name1/column2/value4\0pkey2 => pkey2 
table_name2/column1/value5\0pkey1 => pkey1 
table_name2/column1/value6\0pkey2 => pkey2

下面做一些解释:

  • 增加一个cfg文件,一个Hash DB方式存储表结构信息,包括一个表包含哪些字段,这些字段分别是什么属性,一个表的记录总数,这个表需要建立哪些索引等等。
  • 记录集以B+ Tree方式存放,而非原来的Hash DB,这样可以在数据量上亿以后,获得更好的性能
  • 在记录集中,一行数据的各个字段的值,分别存在不同的key-value中,因此,如果一个表有3个字段,那么它的每条记录,就要占3个key。
  • 在读写数据时,有两种方式可以选择:按行读写,或按列读写
    • 所谓按行读写,就是一次读写一个primary key指向的n个字段,具体有哪些字段,由cfg决定。
    • 所谓按列读写,就是一次只读写一个primary key指向的那一行中的具体一个字段,这时的读写,不受cfg中的table字段定义的限制。
  • 索引数据,以B+ Tree方式存放,因为不同的行(primary key),在某一个字段,可能存在值重复,因此key的规则为:value\0key。这样保证每一个primary key,会有一个对应的索引key。如果以“table_name/column/value”的方式查询,则可以将同值的多个key,都查出来。

(未完待续)

相关标签: 数据结构