Pull to refresh

Comments 62

UFO just landed and posted this here
«Этой же фирме принадлежит 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 увидел после пяти лет забвения =) Когда-то интересовался этим делом. Помню, что не понравилось требование наследоваться от их базового класса.
Ухх… и в самом деле, нехилое требование. В самом тексте статьи не заметил.
Ночь была, неправильно выразился:)
Я имел в виду, при первом прочтении, до Вашего коммментария. После этого я уже более внимательно просмотрел код и увидел это.
А что в этом плохого? Этот класс управляет памятью, рекурсивно загружает объекты, позволяет автоматически изменять объекты, если такой уже есть в БД.
Наследование от базового класса, которым ты не управляешь, иногда неудобно при разработке. Например, когда ты выясняешь, что тебе надо что-нибудь хитрое для сериализации, или пересылки через границу домена, или еще что-нибудь.
используем DTO и проблем не знаем
Да понятно, что можно DTO использовать. Вопрос в том, удобно ли это, и не удобнее ли, когда сами объекты в базе — DTO.
да, хороший вопрос, сам ищу нормальную ORDBMS с хорошей работой через DTO. nHibernate был полным фиаском — ну нельзя там прозрачно использовать DTO, только пляска с бубном в лице Clear сессий и гонянием данных туда сюда на любом update.
nHibernate — это ORM, если я что-то помню.

А так все зависит от критериев нормальности. Вон, и в linq2sql это прозрачно достаточно. Про EF не помню, смотреть надо.
вы правы — но мои DTO как раз объекты. пробывал через тупые табличные DTO, но так как у меня много иерархий, я забодался на старте и решил использовать что то, что позволит быстро сохранять DTO со сложными связими. И nHibernate показыл себя с ужасной стороны — хотя если быть честным, он на то, что я с ним вытворял, бал не расчитан.
сейчас пробую siaqodb — немного другой вид ДБ, чем то сродни Mongo.
В какой-то версии они избавились от этого требования.
UFO just landed and posted this here
угу, они н относятся к этому посту, но почитать было бы интересно
UFO just landed and posted this here
их не надо сравнивать с этой БД — их надо между собой сравнить.
UFO just landed and posted this here
упырьте мел… вы сильно много на себя берете.
UFO just landed and posted this here
А, вообще, конечо, вот такое:

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 объект и индексы чего стоят.

Кстати, лицензия есть на коммерческий вариант? У них там довольно грабительские цены, если в коммерческих проетках использовать.
UFO just landed and posted this here
Включил их тест на эмуляторе с андроидом, вот что показывает:

Тест для 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. Самая быстрая из встраиваемых БД, похоже. Но лицензия не всегда удобная.
Sign up to leave a comment.

Articles