Они только используют эту СУБД в качестве встроенной по-дефолту в Java и обзывают ее JavaDB. По факту это просто форк то ли с косметическими изменениями, то ли вообще без них.
Кто они? Какую СУБД?
JavaDB? Вроде JavaDB — это «is Sun's supported distribution of the open source Apache Derby», по крайней мере так написано здесь: developers.sun.com/javadb/
Какое отношение это имеет к BDB?
Ухты, perst увидел после пяти лет забвения =) Когда-то интересовался этим делом. Помню, что не понравилось требование наследоваться от их базового класса.
Ночь была, неправильно выразился:)
Я имел в виду, при первом прочтении, до Вашего коммментария. После этого я уже более внимательно просмотрел код и увидел это.
Наследование от базового класса, которым ты не управляешь, иногда неудобно при разработке. Например, когда ты выясняешь, что тебе надо что-нибудь хитрое для сериализации, или пересылки через границу домена, или еще что-нибудь.
да, хороший вопрос, сам ищу нормальную ORDBMS с хорошей работой через DTO. nHibernate был полным фиаском — ну нельзя там прозрачно использовать DTO, только пляска с бубном в лице Clear сессий и гонянием данных туда сюда на любом update.
вы правы — но мои DTO как раз объекты. пробывал через тупые табличные DTO, но так как у меня много иерархий, я забодался на старте и решил использовать что то, что позволит быстро сохранять DTO со сложными связими. И nHibernate показыл себя с ужасной стороны — хотя если быть честным, он на то, что я с ним вытворял, бал не расчитан.
сейчас пробую siaqodb — немного другой вид ДБ, чем то сродни Mongo.
пардон, мы немного не поняли друг друга. в статья и на сайте Perst ясно сказано, что он бесплатный, если проект/сайт сделан по GPL v2, если нет — извольте покупать лицензию, которая стоит ой как не мало.
Значит я чего-то недопонимаю. Как GPL мжет относиться к сайту?
Вы можете взять любую GPL либу и написать программу с ней. И никому не отдавать. Вот до тех пор, пока вы не начнете ее распространять, вы никому ничего не должны раскрывать.
А сколько стоит коммерческая лицензия?
Наследование в даном случае — это зло, могли бы и с помощью атрибутов реализовать, например.
[оффтопик]
Код
t1 = new DateTime(DateTime.Now.Ticks);
эквивалентен коду
t1 = DateTime.Now;
потому что DateTime — это структура и при присваивании всегда создается копия обьекта.
[/оффтопик]
После опыта работы с ZODB я очень настороженно отношусь к таким объектным базам.
Там тоже все было очень круто на бумаге:
— объектная БД — каждая запись python-ячий объект
— так же очень удобно с ними работать — как с нативными объектами, ничего конвертировать не надо
— кстати, базовый класс тоже называется Persistent :)
— транзакции
— очень простое описание объектов — так же ввиде перечисления полей и методов
— есть даже генератор объектов по UML-диаграмме
— и даже кластер есть — ZEO
Но на практике это обернулось чудовищным гемором и тормозами. Вобщем ООДБ — будущее, но пока оно очень сырое для серьезного применения.
У нас в конторе элементы zope юзаются в качестве базы для внутреннего фреймворка. Мать честная… Как же хорошо бывает после этого вечерами халтурку на Джанго поделать! :)
Да, я чуть-чуть и с самим Зоуп поработал :) Они как-то не смогли в нужную сторону модернизироваться, хотя по началу была очень даже инновационными, как говорят зубры от Питона.
надо отдать должное — некоторые вещи все же стоили того. Скажем, zope component architecture нашла свою вторую жизнь в некоторых других больших проектах — Twisted.
чукча прекрасно знаком и с писательством и с читательством :) Вот хоть убейтесь, но реляционные и объектно-ориентированные БД в конечном-то итоге занимаются тем же самым, не?
а, если сравнить Perst с той же db4o? мне кажется последняя на порядок удобнее.
p.s. использую db4o в production версии продукта, книга жалоб пока пустая.)
в одной области Perst сейчас лучше, это поддержка Silverlight, в db4o пока все очень плохо.
но блин, какая же у них дикая объектная модель — root объект и индексы чего стоят.
Кстати, лицензия есть на коммерческий вариант? У них там довольно грабительские цены, если в коммерческих проетках использовать.
Включил их тест на эмуляторе с андроидом, вот что показывает:
Тест для sqlite:
Elapsed time for inserting 10000 records: 74073 milliseconds
Elapsed time for performing 20000 index searches: 117809 milliseconds
Elapsed time for iterating through 20000 records: 3771 milliseconds
Database file length before delete: 891904
Elapsed time for deleting 10000 records: 66735 milliseconds
Database file length: 8192
Тест для Perst:
Elapsed time for inserting 10000 records: 11050 milliseconds
Elapsed time for performing 20000 index searches: 9122 milliseconds
Elapsed time for iterating through 20000 records: 6274 milliseconds
Elapsed time for deleting 10000 records: 23981 milliseconds
Database file length: 2056192
С этим тяжело у них.
С ходу получилось найти только метод Search(query As FullTextQuery, maxResults As Integer, timeLimit As Integer) для поиска в полнотекстовом индексе.
Perst — высокопроизводительная ООБД