шпунтовые доменные объекты в базе данных Db4O - PullRequest
1 голос
/ 08 июля 2011

Я использую db4o с Groovy (на самом деле Griffon). Я сохраняю дюжину объектов в db4o objectSet и вижу, что размер файла .yarv составляет около 11 МБ. Я проверил его содержимое и обнаружил, что он хранит metaClass со всеми вложенными полями в каждом объекте. Это пустая трата пространства.
Ищите способ избежать сохранения metaClass и, следовательно, уменьшить размер файла .yarv результата, поскольку я собираюсь использовать db4o для хранения миллионов объектов. Должен ли я попробовать callConstructors(true) db4o конфигурацию? Думаешь, это поможет? Любая помощь будет высоко оценен.

Ответы [ 2 ]

1 голос
/ 11 июля 2011

В качестве альтернативы вы можете просто хранить экземпляры Groovy-bean .Они скомпилированы в обычные классы Java-ish без специального кода, специфичного для Groovy.

Точно так же:

class Customer {
    // properties
    Integer id
    String name
    Address address

}

class Address{
    String street;
}

    def customer = new Customer(id:1, name:"Gromit", address:new Address(street:"Fun"))
0 голосов
/ 08 июля 2011

Я не знаю groovy, но, исходя из вашего описания, каждый groovy-объект содержит метаданные, и вы хотите пропустить сохранение этих объектов.

В этом случае установка «нулевого переводчика» (класс TNull) приведет к тому, что объекты « переведенные » не будут сохранены.

PS: Call Constructor configuration has no effect on what gets stored in the db; it only affects how objects are instantiated when reading from db.

Надеюсь, это поможет

...