[Uludag-commits] r15285 - branches/pisi-db/pisi/db

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
4 Eyl 2007 Sal 22:20:19 EEST


Author: faik
Date: Tue Sep  4 22:20:19 2007
New Revision: 15285

Modified:
   branches/pisi-db/pisi/db/filesdb.py
Log:
Keep path names' md5 for saving space in filesdb

The old berkeley db code was keeping (path, (pkg, fileinfo object))
as (key, value) and its size currenly is:

-rw-r--r-- 1 root root 65314816 Eyl  4 21:48 /var/db/pisi/files.bdb

The new filesystem db code was keeping (path, pkg) as (key, value)
and its size currently is:

-rw-r--r-- 1 root root 20869120 Eyl  4 21:57 /var/lib/pisi/info/files.db

Now with changing this to (md5.new.digest(path), pkg) as (key, value)

-rw-r--r-- 1 root root 10436608 Eyl  4 21:44 /var/lib/pisi/info/files.db

So a total decrease of 6x in disk size regarding to old code.

Special thanks goes to mdakin. :)


Modified: branches/pisi-db/pisi/db/filesdb.py
=================================================================
--- branches/pisi-db/pisi/db/filesdb.py	(original)
+++ branches/pisi-db/pisi/db/filesdb.py	Tue Sep  4 22:20:19 2007
@@ -15,6 +15,7 @@
 
 import os
 import shelve
+import md5
 
 import pisi
 import pisi.context as ctx
@@ -32,22 +33,22 @@
         self.__check_filesdb()
     
     def has_file(self, path):
-        return self.filesdb.has_key(path)
+        return self.filesdb.has_key(md5.new(path).digest())
 
     def get_file(self, path):
-        return self.filesdb[path], path
+        return self.filesdb[md5.new(path).digest()], path
     
     def add_files(self, pkg, files):
 
         self.__check_filesdb()
 
         for f in files.list:
-            self.filesdb[f.path] = pkg
+            self.filesdb[md5.new(f.path).digest()] = pkg
 
     def remove_files(self, pkg, files):
         for f in files:
-            if self.filesdb.has_key(f):
-                del self.filesdb[f]
+            if self.filesdb.has_key(md5.new(f.path).digest()):
+                del self.filesdb[md5.new(f.path).digest()]
 
     def destroy(self):
         files_db = os.path.join(ctx.config.lib_dir(), ctx.const.info_dir, ctx.const.files_db)


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi