Пример #1
0
        public void Open()
        {
            if (!Directory.Exists(_folder))
            {
                Directory.CreateDirectory(_folder);
            }
            _env = LmdbEnv.CreateDb(_folder, 1 * 1024 * 1024);

            using (var tx = _env.Write()) {
                var dto = Lmdb.GetBuffer(tx, 0);
                if (dto == null)
                {
                    SetNewBuffer(tx, 0);
                }
                else
                {
                    _buffer = new Buffer(dto, _folder);
                    _buffer.OpenOrCreate();
                }


                var meta = Lmdb.GetCellarMeta(tx, 0, Lmdb.NewCellarDto());
                _maxKeySize = meta.GetCellarMaxKeySize();
                _maxValSize = meta.GetCellarMaxValSize();

                tx.Commit();
            }
        }
Пример #2
0
        void LoadData()
        {
            if (!Directory.Exists(_folder))
            {
                return;
            }



            using (var env = LmdbEnv.CreateDb(_folder, 1024 * 1024, EnvironmentOpenFlags.ReadOnly)) {
                using (var tx = env.Read()) {
                    _chunks  = Lmdb.ListChunks(tx).Select(c => c.Value).ToArray();
                    _buffer  = Lmdb.GetBuffer(tx, 0);
                    _cellar  = Lmdb.GetCellarMeta(tx, 0, new Lmdb.CellarDto());
                    ByteSize = Cellar.EstimateSize(tx).ByteSize;
                }
            }

            _maxKeySize   = _cellar.GetCellarMaxKeySize();
            _maxValueSize = _cellar.GetCellarMaxValSize();
        }