diff options
author | Peng Wu <alexepico@gmail.com> | 2020-09-23 13:48:20 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2020-09-23 13:48:20 +0800 |
commit | 47305f5203d99089e7a04d797853b09845cfcc49 (patch) | |
tree | fdd7696a0784e6c9bd839ca4752d36b7c3a51796 /src | |
parent | 7a83a153634428aa14e9baafcb5d585e85769ec3 (diff) | |
download | libpinyin-47305f5203d99089e7a04d797853b09845cfcc49.tar.gz libpinyin-47305f5203d99089e7a04d797853b09845cfcc49.tar.xz libpinyin-47305f5203d99089e7a04d797853b09845cfcc49.zip |
Use Kyoto Cabinet snapshot feature
Diffstat (limited to 'src')
-rw-r--r-- | src/storage/chewing_large_table2_kyotodb.cpp | 10 | ||||
-rw-r--r-- | src/storage/kyotodb_utils.h | 2 | ||||
-rw-r--r-- | src/storage/ngram_kyotodb.cpp | 10 | ||||
-rw-r--r-- | src/storage/phrase_large_table3_kyotodb.cpp | 10 |
4 files changed, 32 insertions, 0 deletions
diff --git a/src/storage/chewing_large_table2_kyotodb.cpp b/src/storage/chewing_large_table2_kyotodb.cpp index bfe20cd..5afdd1e 100644 --- a/src/storage/chewing_large_table2_kyotodb.cpp +++ b/src/storage/chewing_large_table2_kyotodb.cpp @@ -76,6 +76,10 @@ bool ChewingLargeTable2::load_db(const char * filename) { if (!m_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE)) return false; + if (!m_db->load_snapshot(filename, NULL)) + return false; + +#if 0 /* load db into memory. */ BasicDB * tmp_db = new TreeDB; if (!tmp_db->open(filename, BasicDB::OREADER)) @@ -86,6 +90,7 @@ bool ChewingLargeTable2::load_db(const char * filename) { tmp_db->close(); delete tmp_db; +#endif return true; } @@ -95,6 +100,10 @@ bool ChewingLargeTable2::store_db(const char * new_filename) { if ( ret != 0 && errno != ENOENT) return false; + if (!m_db->dump_snapshot(new_filename, NULL)) + return false; + +#if 0 BasicDB * tmp_db = new TreeDB; if (!tmp_db->open(new_filename, BasicDB::OWRITER|BasicDB::OCREATE)) return false; @@ -105,6 +114,7 @@ bool ChewingLargeTable2::store_db(const char * new_filename) { tmp_db->synchronize(); tmp_db->close(); delete tmp_db; +#endif return true; } diff --git a/src/storage/kyotodb_utils.h b/src/storage/kyotodb_utils.h index 5e39212..4562007 100644 --- a/src/storage/kyotodb_utils.h +++ b/src/storage/kyotodb_utils.h @@ -49,6 +49,7 @@ inline uint32_t attach_options(guint32 flags) { /* Kyoto Cabinet requires non-NULL pointer for zero length value. */ static const char * empty_vbuf = (char *)UINTPTR_MAX; +#if 0 class CopyVisitor : public DB::Visitor { private: BasicDB * m_db; @@ -68,6 +69,7 @@ public: return NOP; } }; +#endif }; diff --git a/src/storage/ngram_kyotodb.cpp b/src/storage/ngram_kyotodb.cpp index 1529976..54c2055 100644 --- a/src/storage/ngram_kyotodb.cpp +++ b/src/storage/ngram_kyotodb.cpp @@ -60,6 +60,10 @@ bool Bigram::load_db(const char * dbfile){ if ( !m_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE) ) return false; + if (!m_db->load_snapshot(dbfile, NULL)) + return false; + +#if 0 /* load db into memory. */ BasicDB * tmp_db = new HashDB; if (!tmp_db->open(dbfile, BasicDB::OREADER)) @@ -70,6 +74,7 @@ bool Bigram::load_db(const char * dbfile){ tmp_db->close(); delete tmp_db; +#endif return true; } @@ -80,6 +85,10 @@ bool Bigram::save_db(const char * dbfile){ if ( ret != 0 && errno != ENOENT) return false; + if (!m_db->dump_snapshot(dbfile, NULL)) + return false; + +#if 0 BasicDB * tmp_db = new HashDB; if ( !tmp_db->open(dbfile, BasicDB::OWRITER|BasicDB::OCREATE) ) @@ -91,6 +100,7 @@ bool Bigram::save_db(const char * dbfile){ tmp_db->synchronize(); tmp_db->close(); delete tmp_db; +#endif return true; } diff --git a/src/storage/phrase_large_table3_kyotodb.cpp b/src/storage/phrase_large_table3_kyotodb.cpp index b72c717..5eebc11 100644 --- a/src/storage/phrase_large_table3_kyotodb.cpp +++ b/src/storage/phrase_large_table3_kyotodb.cpp @@ -80,6 +80,10 @@ bool PhraseLargeTable3::load_db(const char * filename) { if (!m_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE)) return false; + if (!m_db->load_snapshot(filename, NULL)) + return false; + +#if 0 /* load db into memory. */ BasicDB * tmp_db = new TreeDB; if (!tmp_db->open(filename, BasicDB::OREADER)) @@ -90,6 +94,7 @@ bool PhraseLargeTable3::load_db(const char * filename) { tmp_db->close(); delete tmp_db; +#endif return true; } @@ -99,6 +104,10 @@ bool PhraseLargeTable3::store_db(const char * new_filename){ if ( ret != 0 && errno != ENOENT) return false; + if (!m_db->dump_snapshot(new_filename, NULL)) + return false; + +#if 0 BasicDB * tmp_db = new TreeDB; if (!tmp_db->open(new_filename, BasicDB::OWRITER|BasicDB::OCREATE)) return false; @@ -109,6 +118,7 @@ bool PhraseLargeTable3::store_db(const char * new_filename){ tmp_db->synchronize(); tmp_db->close(); delete tmp_db; +#endif return true; } |