¿Cómo te representar una entidad relacional como una sola unidad de datos recuperables en BerkeleyDB?

StackOverflow https://stackoverflow.com/questions/992173

Pregunta

BerkeleyDB es el equivalente a la base de datos de una tabla hash del rubí o un diccionario de Python, salvo que pueda almacenar varios valores para una sola tecla.

Mi pregunta es:? Si quería para almacenar un tipo de datos complejo en una estructura de almacenamiento de este tipo, ¿cómo usted va sobre él

En una tabla relacional normal, si quiere representar a una persona, se crea una tabla con columnas de tipos de datos particulares:

Person
-id:integer
-name:string
-age:integer
-gender:string

Cuando se ha escrito a cabo de esta manera, se puede ver cómo una persona puede ser entendido como un conjunto de pares clave / valor:

id=1
name="john"; 
age=18; 
gender="male";

descomponer la persona en clave individual pares / valor (name = "john") es fácil.

Sin embargo, con el fin de utilizar el formato de datos Berkeley para representar una persona, lo que se necesita alguna forma de recomponer la persona de sus pares clave / valor constituyentes.

Para ello, tendría que imponer alguna estructura de encapsulamiento artificial para mantener a una persona como una unidad.

¿Hay una manera de hacer esto?

EDIT: Como la respuesta de Robert Harvey indica, no es una característica de entidad de persistencia en el Java edición de datos Berkeley. Por desgracia porque voy a connnecting a BerkeleyDB desde una aplicación utilizando Rubí Moneta , seré utilizando la edición estándar que creo que me obliga a crear una solución personalizada en ausencia de este apoyo.

¿Fue útil?

Solución

Siempre se puede serializar (llamado de clasificación en Ruby) los datos como una cadena y la tienda que en su lugar. La serialización se puede hacer de varias maneras.

Con YAML (ventaja: legible por humanos, aplicación múltiple en diferentes idiomas):

require 'yaml'; str = person.to_yaml

Con Marshalling (Rubí-solamente, incluso versión de Ruby específico):

Marshal.dump(person)

Esto sólo funciona si la clase de persona es una entidad que no se refiere a otros objetos que no desee incluir. Por ejemplo, las referencias a otras personas tendrían que ser atendidos de manera diferente.

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