Как стать автором
Обновить

Комментарии 62

НЛО прилетело и опубликовало эту надпись здесь
Исправил на C#
«Этой же фирме принадлежит Berkeley DB»
Я конечно не спец по BDB, но разве BDB не была написана в Беркли и не принадлежит Oracle?
Они только используют эту СУБД в качестве встроенной по-дефолту в Java и обзывают ее JavaDB. По факту это просто форк то ли с косметическими изменениями, то ли вообще без них.
Кто они? Какую СУБД?
JavaDB? Вроде JavaDB — это «is Sun's supported distribution of the open source Apache Derby», по крайней мере так написано здесь: developers.sun.com/javadb/
Какое отношение это имеет к BDB?

Что-то я похоже вконец запутался…
Вы правы, я спутал. Этой фирме принадлежит еще eXtremeDB.
Ухты, perst увидел после пяти лет забвения =) Когда-то интересовался этим делом. Помню, что не понравилось требование наследоваться от их базового класса.
Ухх… и в самом деле, нехилое требование. В самом тексте статьи не заметил.
Class MyData
Inherits Persistent


Вот тут =)
Ночь была, неправильно выразился:)
Я имел в виду, при первом прочтении, до Вашего коммментария. После этого я уже более внимательно просмотрел код и увидел это.
А что в этом плохого? Этот класс управляет памятью, рекурсивно загружает объекты, позволяет автоматически изменять объекты, если такой уже есть в БД.
Наследование от базового класса, которым ты не управляешь, иногда неудобно при разработке. Например, когда ты выясняешь, что тебе надо что-нибудь хитрое для сериализации, или пересылки через границу домена, или еще что-нибудь.
используем DTO и проблем не знаем
Да понятно, что можно DTO использовать. Вопрос в том, удобно ли это, и не удобнее ли, когда сами объекты в базе — DTO.
да, хороший вопрос, сам ищу нормальную ORDBMS с хорошей работой через DTO. nHibernate был полным фиаском — ну нельзя там прозрачно использовать DTO, только пляска с бубном в лице Clear сессий и гонянием данных туда сюда на любом update.
nHibernate — это ORM, если я что-то помню.

А так все зависит от критериев нормальности. Вон, и в linq2sql это прозрачно достаточно. Про EF не помню, смотреть надо.
вы правы — но мои DTO как раз объекты. пробывал через тупые табличные DTO, но так как у меня много иерархий, я забодался на старте и решил использовать что то, что позволит быстро сохранять DTO со сложными связими. И nHibernate показыл себя с ужасной стороны — хотя если быть честным, он на то, что я с ним вытворял, бал не расчитан.
сейчас пробую siaqodb — немного другой вид ДБ, чем то сродни Mongo.
В какой-то версии они избавились от этого требования.
реквестирую сравнения redis, mongo, memachedb, couchdb…
НЛО прилетело и опубликовало эту надпись здесь
угу, они н относятся к этому посту, но почитать было бы интересно
НЛО прилетело и опубликовало эту надпись здесь
их не надо сравнивать с этой БД — их надо между собой сравнить.
НЛО прилетело и опубликовало эту надпись здесь
упырьте мел… вы сильно много на себя берете.
НЛО прилетело и опубликовало эту надпись здесь
А, вообще, конечо, вот такое:

intKeyIndex = db.CreateFieldIndex<int, MyData>("intKey", false);


в 3.5 фреймворке — это трындец. Для кого лямбды придумывали?
а поподробней можно? на что вы хотите это исправить?
Очевидно же.

db.CreateFieldIndex<int, MyData>(d => d.intKey, false);


Вместо стринга должно быть проверяемое при компиляции выражение.
«Но можно ли ее применить на сайтах спросите вы?» — не забываем получать коммерческую лицензию, если ваш сайт не open source
Вы же не распространяете исходники своего сайта :)
пардон, мы немного не поняли друг друга. в статья и на сайте Perst ясно сказано, что он бесплатный, если проект/сайт сделан по GPL v2, если нет — извольте покупать лицензию, которая стоит ой как не мало.
Значит я чего-то недопонимаю. Как GPL мжет относиться к сайту?
Вы можете взять любую GPL либу и написать программу с ней. И никому не отдавать. Вот до тех пор, пока вы не начнете ее распространять, вы никому ничего не должны раскрывать.
да,, вы правы — приношу извинения.
А сколько стоит коммерческая лицензия?
Наследование в даном случае — это зло, могли бы и с помощью атрибутов реализовать, например.
[оффтопик]
Код
t1 = new DateTime(DateTime.Now.Ticks);
эквивалентен коду
t1 = DateTime.Now;
потому что DateTime — это структура и при присваивании всегда создается копия обьекта.
[/оффтопик]
На сайте нашел только сколько стоит поддержка разработчиков: $2000 в год (в разделе FAQ на официальном сайте)
После опыта работы с ZODB я очень настороженно отношусь к таким объектным базам.
Там тоже все было очень круто на бумаге:
— объектная БД — каждая запись python-ячий объект
— так же очень удобно с ними работать — как с нативными объектами, ничего конвертировать не надо
— кстати, базовый класс тоже называется Persistent :)
— транзакции
— очень простое описание объектов — так же ввиде перечисления полей и методов
— есть даже генератор объектов по UML-диаграмме
— и даже кластер есть — ZEO

Но на практике это обернулось чудовищным гемором и тормозами. Вобщем ООДБ — будущее, но пока оно очень сырое для серьезного применения.
ол-ла-ла… Как же вас понимаю.

У нас в конторе элементы zope юзаются в качестве базы для внутреннего фреймворка. Мать честная… Как же хорошо бывает после этого вечерами халтурку на Джанго поделать! :)
Зопа — это мой ночной кошмар!
Я с такой радостью ушел с нее на Джанго. После зопы это казалось Землей Обетованной :)
Да, я чуть-чуть и с самим Зоуп поработал :) Они как-то не смогли в нужную сторону модернизироваться, хотя по началу была очень даже инновационными, как говорят зубры от Питона.
Идеи там были офигенские, но реализация сильно подкачала.
надо отдать должное — некоторые вещи все же стоили того. Скажем, zope component architecture нашла свою вторую жизнь в некоторых других больших проектах — Twisted.
о том что это будущее уже 30 лет говорят, но пока что-то никак. видимо не так уж и хороша эта модель :)
Скорее даже будет комбинированный вариант.
Уж очень сильна реляционная модель — и в ней сделано много всего дельного.
а лучше ли того же sqlite? При всех потенциальных проблемах, штука работает; а если еще и держать в памяти целиком — то еще и довольно быстро.

Да и поддержка… Java/.Net, конечно, мейнстрим, но не ими одними жив IT
пипец, «чукча не читатель, чукча писатель» — пройдите в wikipedia что ли, почитайте что такое ORDBMS и RDBMS
чукча прекрасно знаком и с писательством и с читательством :) Вот хоть убейтесь, но реляционные и объектно-ориентированные БД в конечном-то итоге занимаются тем же самым, не?
а, если сравнить 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) для поиска в полнотекстовом индексе.
мда. нефонтан.
а никак Limit N, M ??
т.е. начало выборки указывать.
хоть для тупых запросов
Конкретно Limit нет. В некоторых случаях поможет метод Get(from, till) или Range(from, till) по ключу, т.е. с ключа from до ключа till.
по ключу не рулит.
надо по номеру
стабильная проблема у всех ORM
именно лимиты
Вот прямо у всех? Вообще, в .net expressions есть прекрасное Skip/Take, а, соответственно в linq2sql и EF есть их обработчики, и вполне осмысленные.
ну не у всех. но у многих.
Когда-то играл с Perst. Самая быстрая из встраиваемых БД, похоже. Но лицензия не всегда удобная.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории