Pregunta

Estoy usando BerkeleyDB para desarrollar una aplicación pequeña. Y tengo una pregunta acerca de abrir una base de datos varias veces en BDB.

Tengo un gran conjunto de texto (corpus), y quiero cargar una parte para hacer el cálculo. Tengo dos pseudocódigo (mezclar con python) aquí

@ 1

def getCorpus(token):
    DB.open()
    DB.get(token)
    DB.close()

@ 2

#open and wait
def openCorpus():
    DB.open()

#close database
def closeCorpus():
    DB.close()

def getCorpus(token):
    DB.get(token)

En el segundo ejemplo, abriré la base de datos antes del cálculo, cargaré el token para cada bucle y luego cerraré la base de datos.

En el primer ejemplo, cada vez que el bucle solicite el token, abriré, obtendré y luego cerraré la db.

¿Se ha perdido rendimiento?

También observo que estoy usando un DBEnv para administrar la base de datos

¿Fue útil?

Solución

Si no almacena en caché el archivo abierto, siempre perderá el rendimiento porque:

  • llamas a open () y close () varias veces, lo cual es bastante caro,
  • pierde todos los buffers potenciales (tanto los buffers del sistema como los buffers internos bdb).

Pero no me importaría demasiado el rendimiento antes de escribir el código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top