Some bsddb changes
* allow to use bsddb3 as database via a config setting * set async write to disk to improve speed, eg import * 40 svn: r16446
This commit is contained in:
parent
551b70a8f3
commit
b3beba53d8
@ -30,7 +30,6 @@
|
|||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import bsddb
|
|
||||||
|
|
||||||
##import logging
|
##import logging
|
||||||
##_LOG = logging.getLogger(".GrampsAboutDialog")
|
##_LOG = logging.getLogger(".GrampsAboutDialog")
|
||||||
@ -54,6 +53,12 @@ import gtk
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
import const
|
import const
|
||||||
from GrampsDisplay import url as display_url
|
from GrampsDisplay import url as display_url
|
||||||
|
import config
|
||||||
|
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
import bsddb3 as bsddb
|
||||||
|
else:
|
||||||
|
import bsddb
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -5,8 +5,13 @@ import gtk
|
|||||||
import pygtk
|
import pygtk
|
||||||
import gobject
|
import gobject
|
||||||
import cairo
|
import cairo
|
||||||
import sys, os,bsddb
|
import sys, os
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
import bsddb3 as bsddb
|
||||||
|
else:
|
||||||
|
import bsddb
|
||||||
|
|
||||||
class ErrorReportAssistant(object):
|
class ErrorReportAssistant(object):
|
||||||
|
|
||||||
|
@ -108,6 +108,9 @@ class CLIDbManager(object):
|
|||||||
Returns (people_count, version_number) of current DB.
|
Returns (people_count, version_number) of current DB.
|
||||||
Returns ("Unknown", "Unknown") if invalid DB or other error.
|
Returns ("Unknown", "Unknown") if invalid DB or other error.
|
||||||
"""
|
"""
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import dbshelve, db
|
||||||
|
else:
|
||||||
from bsddb import dbshelve, db
|
from bsddb import dbshelve, db
|
||||||
from gen.db import META, PERSON_TBL
|
from gen.db import META, PERSON_TBL
|
||||||
env = db.DBEnv()
|
env = db.DBEnv()
|
||||||
|
@ -288,6 +288,7 @@ register('preferences.sprefix', 'S%04d')
|
|||||||
register('preferences.use-last-view', True)
|
register('preferences.use-last-view', True)
|
||||||
register('preferences.last-view', '')
|
register('preferences.last-view', '')
|
||||||
register('preferences.last-views', [])
|
register('preferences.last-views', [])
|
||||||
|
register('preferences.use-bsddb3', False)
|
||||||
|
|
||||||
register('researcher.researcher-addr', '')
|
register('researcher.researcher-addr', '')
|
||||||
register('researcher.researcher-locality', '')
|
register('researcher.researcher-locality', '')
|
||||||
|
@ -188,6 +188,10 @@ class BSDDBTxn(object):
|
|||||||
# test code
|
# test code
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print "1"
|
print "1"
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import db, dbshelve
|
||||||
|
else:
|
||||||
from bsddb import db, dbshelve
|
from bsddb import db, dbshelve
|
||||||
print "2"
|
print "2"
|
||||||
x = db.DBEnv()
|
x = db.DBEnv()
|
||||||
|
@ -24,6 +24,11 @@
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from cPickle import dumps, loads
|
from cPickle import dumps, loads
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import db
|
||||||
|
else:
|
||||||
from bsddb import db
|
from bsddb import db
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -63,6 +63,10 @@ DBLOCKS = 25000 # Maximum number of locks supported
|
|||||||
DBOBJECTS = 25000 # Maximum number of simultaneously locked objects
|
DBOBJECTS = 25000 # Maximum number of simultaneously locked objects
|
||||||
DBUNDO = 1000 # Maximum size of undo buffer
|
DBUNDO = 1000 # Maximum size of undo buffer
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
|
||||||
|
else:
|
||||||
from bsddb.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
|
from bsddb.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY
|
||||||
DBFLAGS_O = DB_CREATE | DB_AUTO_COMMIT # Default flags for database open
|
DBFLAGS_O = DB_CREATE | DB_AUTO_COMMIT # Default flags for database open
|
||||||
DBFLAGS_R = DB_RDONLY # Flags to open a database read-only
|
DBFLAGS_R = DB_RDONLY # Flags to open a database read-only
|
||||||
|
@ -36,6 +36,11 @@ import random
|
|||||||
import locale
|
import locale
|
||||||
import os
|
import os
|
||||||
from sys import maxint
|
from sys import maxint
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import db
|
||||||
|
else:
|
||||||
from bsddb import db
|
from bsddb import db
|
||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
|
|
||||||
|
@ -32,8 +32,14 @@ database.
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import dbshelve, db
|
||||||
|
else:
|
||||||
from bsddb import dbshelve, db
|
from bsddb import dbshelve, db
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -33,9 +33,14 @@ undos and redos.
|
|||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
import time, os
|
import time, os
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import db
|
||||||
|
else:
|
||||||
from bsddb import db
|
from bsddb import db
|
||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
from collections import deque
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -29,6 +29,10 @@ import time
|
|||||||
"""
|
"""
|
||||||
methods to upgrade a database from version 13 to current version
|
methods to upgrade a database from version 13 to current version
|
||||||
"""
|
"""
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import db
|
||||||
|
else:
|
||||||
from bsddb import db
|
from bsddb import db
|
||||||
from gen.db import BSDDBTxn
|
from gen.db import BSDDBTxn
|
||||||
from gen.lib.nameorigintype import NameOriginType
|
from gen.lib.nameorigintype import NameOriginType
|
||||||
|
@ -38,12 +38,16 @@ import time
|
|||||||
import locale
|
import locale
|
||||||
import bisect
|
import bisect
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from gen.ggettext import gettext as _
|
|
||||||
from bsddb import dbshelve, db
|
|
||||||
import logging
|
import logging
|
||||||
from sys import maxint
|
from sys import maxint
|
||||||
|
|
||||||
|
from gen.ggettext import gettext as _
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import dbshelve, db
|
||||||
|
else:
|
||||||
|
from bsddb import dbshelve, db
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Gramps modules
|
# Gramps modules
|
||||||
@ -413,6 +417,10 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
raise DbEnvironmentError(msg)
|
raise DbEnvironmentError(msg)
|
||||||
|
# Set not to flush to disk synchronous
|
||||||
|
self.env.set_flags(db.DB_TXN_NOSYNC, 1)
|
||||||
|
self.env.set_flags(db.DB_TXN_WRITE_NOSYNC, 1)
|
||||||
|
|
||||||
self.env.txn_checkpoint()
|
self.env.txn_checkpoint()
|
||||||
|
|
||||||
if callback:
|
if callback:
|
||||||
@ -1636,8 +1644,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
self.undodb.clear()
|
self.undodb.clear()
|
||||||
self.env.txn_checkpoint()
|
self.env.txn_checkpoint()
|
||||||
|
|
||||||
if db.version() < (4, 7):
|
#if db.version() < (4, 7):
|
||||||
self.env.set_flags(db.DB_TXN_NOSYNC, 1) # async txn
|
# self.env.set_flags(db.DB_TXN_NOSYNC, 1) # async txn
|
||||||
|
|
||||||
if self.secondary_connected and not no_magic:
|
if self.secondary_connected and not no_magic:
|
||||||
# Disconnect unneeded secondary indices
|
# Disconnect unneeded secondary indices
|
||||||
@ -1676,8 +1684,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
"""
|
"""
|
||||||
if transaction.batch:
|
if transaction.batch:
|
||||||
self.env.txn_checkpoint()
|
self.env.txn_checkpoint()
|
||||||
if db.version() < (4, 7):
|
#if db.version() < (4, 7):
|
||||||
self.env.set_flags(db.DB_TXN_NOSYNC, 0) # sync txn
|
# self.env.set_flags(db.DB_TXN_NOSYNC, 0) # sync txn
|
||||||
|
|
||||||
if not transaction.no_magic:
|
if not transaction.no_magic:
|
||||||
# create new secondary indices to replace the ones removed
|
# create new secondary indices to replace the ones removed
|
||||||
|
@ -21,6 +21,10 @@
|
|||||||
|
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
import bsddb3 as bsddb
|
||||||
|
else:
|
||||||
import bsddb
|
import bsddb
|
||||||
import types
|
import types
|
||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
|
@ -191,11 +191,18 @@ def show_settings():
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
cairover_str = 'not found'
|
cairover_str = 'not found'
|
||||||
|
|
||||||
|
import config
|
||||||
|
usebsddb3 = config.get('preferences.use-bsddb3')
|
||||||
try:
|
try:
|
||||||
|
if usebsddb3:
|
||||||
|
import bsddb3 as bsddb
|
||||||
|
else:
|
||||||
import bsddb
|
import bsddb
|
||||||
bsddb_str = bsddb.__version__
|
bsddb_str = bsddb.__version__
|
||||||
|
bsddb_db_str = str(bsddb.db.version())
|
||||||
except:
|
except:
|
||||||
bsddb_str = 'not found'
|
bsddb_str = 'not found'
|
||||||
|
bsddb_db_str = 'not found'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import const
|
import const
|
||||||
@ -243,6 +250,7 @@ def show_settings():
|
|||||||
print ' pygtk : %s' % pygtkver_str
|
print ' pygtk : %s' % pygtkver_str
|
||||||
print ' gobject : %s' % gobjectver_str
|
print ' gobject : %s' % gobjectver_str
|
||||||
print ' bsddb : %s' % bsddb_str
|
print ' bsddb : %s' % bsddb_str
|
||||||
|
print ' bsddb.db : %s' % bsddb_db_str
|
||||||
print ' cairo : %s' % cairover_str
|
print ' cairo : %s' % cairover_str
|
||||||
print ' o.s. : %s' % operating_system
|
print ' o.s. : %s' % operating_system
|
||||||
if kernel:
|
if kernel:
|
||||||
@ -303,6 +311,10 @@ def run():
|
|||||||
|
|
||||||
if argpars.need_gui():
|
if argpars.need_gui():
|
||||||
#A GUI is needed, set it up
|
#A GUI is needed, set it up
|
||||||
|
if "--qml" in sys.argv:
|
||||||
|
from guiQML.grampsqml import startqml
|
||||||
|
startqml(error, argpars)
|
||||||
|
else:
|
||||||
from gui.grampsgui import startgtkloop
|
from gui.grampsgui import startgtkloop
|
||||||
startgtkloop(error, argpars)
|
startgtkloop(error, argpars)
|
||||||
else:
|
else:
|
||||||
|
@ -36,6 +36,11 @@ import tempfile
|
|||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import dbshelve, db
|
||||||
|
else:
|
||||||
from bsddb import dbshelve, db
|
from bsddb import dbshelve, db
|
||||||
import logging
|
import logging
|
||||||
LOG = logging.getLogger(".Db")
|
LOG = logging.getLogger(".Db")
|
||||||
|
@ -86,6 +86,8 @@ EVENT_PERSON_STR = _("%(event_name)s of %(person)s")
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def importData(database, filename, callback=None, cl=0):
|
def importData(database, filename, callback=None, cl=0):
|
||||||
|
## return Utils.profile(importDataPro, database, filename, callback, cl)
|
||||||
|
##def importDataPro(database, filename, callback=None, cl=0):
|
||||||
|
|
||||||
if DbMixin not in database.__class__.__bases__:
|
if DbMixin not in database.__class__.__bases__:
|
||||||
database.__class__.__bases__ = (DbMixin,) + \
|
database.__class__.__bases__ = (DbMixin,) + \
|
||||||
|
@ -36,6 +36,10 @@ import random
|
|||||||
import locale
|
import locale
|
||||||
import os
|
import os
|
||||||
from sys import maxint
|
from sys import maxint
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3 import db
|
||||||
|
else:
|
||||||
from bsddb import db
|
from bsddb import db
|
||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
|
|
||||||
|
@ -32,6 +32,10 @@ Show uncollected objects in a window.
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gen.ggettext import gettext as _
|
from gen.ggettext import gettext as _
|
||||||
|
import config
|
||||||
|
if config.get('preferences.use-bsddb3'):
|
||||||
|
from bsddb3.db import DBError
|
||||||
|
else:
|
||||||
from bsddb.db import DBError
|
from bsddb.db import DBError
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user