|
Tokyo Cabinet 是一個(gè)DBM的實(shí)現(xiàn)。這里的數(shù)據(jù)庫(kù)由一系列key-value對(duì)的記錄構(gòu)成。key和value都可以是任意長(zhǎng)度的字節(jié)序列,既可以是二進(jìn)制也可以是字符串。這里沒(méi)有數(shù)據(jù)類(lèi)型和數(shù)據(jù)表的概念。
當(dāng) 做為Hash表數(shù)據(jù)庫(kù)使用時(shí),每個(gè)key必須是不同的,因此無(wú)法存儲(chǔ)兩個(gè)key相同的值。提供了以下訪問(wèn)方法:提供key,value參數(shù)來(lái)存儲(chǔ),按 key刪除記錄,按key來(lái)讀取記錄,另外,遍歷key也被支持,雖然順序是任意的不能被保證。這些方法跟Unix標(biāo)準(zhǔn)的DBM,例如GDBM,NDBM 等等是相同的,但是比它們的性能要好得多(因此可以替代它們)
當(dāng)按B+樹(shù)來(lái)存儲(chǔ)時(shí),擁用相同key的記錄也能被存儲(chǔ)。像hash表一 樣的讀取,存儲(chǔ),刪除函數(shù)也都有提供。記錄按照用戶提供的比較函數(shù)來(lái)存儲(chǔ)。可以采用順序或倒序的游標(biāo)來(lái)讀取每一條記錄。依照這個(gè)原理,向前的字符串匹配搜 索和整數(shù)區(qū)間搜索也實(shí)現(xiàn)了。另外,B+樹(shù)的事務(wù)也是可用的。
As for database of fixed-length array, records are stored with unique natural numbers. It is impossible to store two or more records with a key overlaps. Moreover, the length of each record is limited by the specified length. Provided operations are the same as ones of hash database. 對(duì)于定長(zhǎng)的數(shù)組,記錄按自然數(shù)來(lái)標(biāo)記存儲(chǔ)。不能存儲(chǔ)key相同的兩條或更多記錄。另外,每條記錄的長(zhǎng)度受到限 制。讀取方法和hash表的一樣。
Tokyo Cabinet是用C寫(xiě)的,同時(shí)提供c,perl,ruby,java的API。
|