LINUX.ORG.RU

Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.


0

0

Здравствуйте. Извиняюсь, если дублирую какую-нибудь тему или пишу не в тот форум.

Вот уже неделю ищу информацию в интернете по поводу того, на каком этапе сейчас развитие ООСУБД в мире. Я сам занимаюсь веб-разработкой, опыт небольшой, раньше вёрсткой занимался, а сейчас именно программированием. Имею небольшой опыт работы с MySQL. Но так как я сейчас занимаюсь объектно-ориентированным программированием, в частности на PHP, то возникает желание чтобы и в базе данные хранились в виде объектов, то есть ближе к естественному состоянию. Данные бывают разные, и как-то не хочется размещать их в таблицах. Мне не трудно это делать в таблицах, но, прочитав в интернете о принципах ООСУБД, появилось огромное желание найти эту СУБД. К сожалению, предлагаемые СУБД имеют встроенный язык программирования, неужели нет таких же наподое той же MySQL. Вроде же есть язык запросов OQL, как раз для цели выборки данных из ООСУБД, неужели нельзя обойтись просто поддержкой на внутреннем уровне OQL, а они встраивают тот же C++, как будто нет других языков. Вот тут непонятно, конечно. Можно было оставлять просто интерфейс доступа, независимо для языка.

Если кто встречался с этой темой, подскажите, пожалуйста, где найти эту СУБД, чтоб не зависил от языка. Я правда ещё на Линукс не перешёл полностью, хотя бы для Виндовс. А позже я на Линукс собираюсь перебираться (нужно разобраться с настройкой его и прочих делах).

На случай если таких сейчас нет, имеет ли смысл тогда хранить данные в таблицах так: таблица типов, таблица описания типов, таблица описания свойств, таблица объектов, таблица значений свойтсв объектов. Но как тогда хранить массивы и деревья разной структуры? Кто-нибудь такое делает, или я придумываю себе лишнюю работу?

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

ООСУБД так и не встали на крыло. Загляни на http://www.odbms.org/, но там тоже тухло.

Самая доступная из "вроде OO СУБД" - это Postgres.

tailgunner ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Можешь ORM использовать, будет типа как объект

dimon555 ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

А вот OpenLDAP не сайдёт за ООСУБД

dimon555 ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Спасибо.

Postgres - очень интересная БД, есть пользовательские типы (я так понял, что от пользовательских типов могут создаваться только таблицы), массивы, возможность наследования таблиц (сами типы наследоваться не могут?) и многое другое. На него даже имеет смысл переходить с MySQL, конечно, кому это надо.

Что касается ORM, интересно было бы узнать, поддерживает ли он свойство-массивы (списки и ассоциативные, деревья), свойства-ссылки у объекта. И насколько при этом замедляется БД, кто-нибудь имеет опыт работы с ним?

Programmer ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

В принципе, по тому, что хочется, может быть лучше посмотреть на технологию репозиториев. Не знаю, что там с PHP, для Java есть спецификация JCR и ее реализация Jackrabbit.

svr69 ★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Отчасти встали. У Cach\'e были и есть толстые инсталляции, вот популярности не получили - это да.

svr69 ★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

> Отчасти встали

От очень малой части.

> У Cach\'e были и есть толстые инсталляции

Cache появилась раньше ООСУБД и не является ООСУБД, IIRC.

tailgunner ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

> Cache появилась раньше ООСУБД и не является ООСУБД, IIRC

Что значит раньше ООСУБД? Раньше 1995? Ну может быть, уже не помню, но вообще объектные базы данных разрабатывались еще в 80-х. И да, Cache - объектная база данных, хотя у нее и есть интерфейс SQL.

svr69 ★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Во всяком случае вот тут: http://www.odbms.org/vendors.aspx Cache упомянута

svr69 ★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

> Что значит раньше ООСУБД? Раньше 1995?

Раньше середины 80-х.

> И да, Cache - объектная база данных, хотя у нее и есть интерфейс SQL.

Cache - многомерная БД. И SQL, и объектный интерфейс ей не родные.

tailgunner ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Раньше середины 80-x? На intersystems.com:

The development of Caché began in 1995 as successor product to InterSystems' family of ANSI-Standard M-based database products.

Никому верить нельзя, даже производителю. Ну и odms.org тоже врет как сивый мерин. Ужас.

svr69 ★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

> The development of Caché began in 1995 as successor product to InterSystems' family of ANSI-Standard M-based database products.

"Founded in 1978 by Phillip T. (Terry) Ragon, who remains its CEO.

InterSystems was one of the original vendors of M-technology (aka MUMPS) systems, with a product called ISM. Over the years, InterSystems acquired several other MUMPS implementations"

"Internally, Caché stores data in multidimensional arrays capable of carrying hierarchically structured data. These are the same “global” data structures used by the MUMPS database language"

Это значит, что Cache как продукт - очень старая, с корнями в 70-х. Просто в 1997 она получила новое имя.

> Никому верить нельзя, даже производителю.

Особенно производителю.

> Ну и odms.org тоже врет как сивый мерин. Ужас.

Ты просто не понял, что там сказано.

tailgunner ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Не буду спорить, тем более, что с Cache я не работал. Просто обычно она позиционируется как объектная.

svr69 ★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

CouchDB?

kkw ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Вот некоторый список ООСУБД

http://www.versant.com/ http://www.db4o.com/ http://www.intersystems.com/ http://www.neodatis.org/ http://www.objectdb.com/ http://www.objectivity.com/ http://www.orientechnologies.com/cms/

по моему мнению встроенный язык вообще не нужен. нужна интеграция с существующими языками. я сам пользовался интеграцией с java (JDO)

lbvf ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

для пистона есть zope object db

dimon555 ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Я бы посоветовал любопытствовать в сторону db4o. Это для явы и дотнета, но есть информация вроде простых туториалов на русском. Объекты в базе хранятся прямо в виде объектов. То есть ты получаешь прямо объект. Нет ни каких таблиц и прочего. просто делашь какую то операцию вроде $myObj = getFromDb( Person("Паша", "Козлов") ); и у тебя объект. Никаких таблиц и отображений. Очень удобно на первый взгляд. В реальности ни разу применять не пробовал. Из того, что знаю, насколько я понял для конкретно для веба возникнут проблемы создания отчётов, так как средства создания этих самых отчётов либо слабо развиты, либо почти отсутствуют. Хотя вроде автор в одной статье намекал что есть что-то. Но сказал "если вы думаете, что нет, можете в принципе не заморачиваться. Но если очень хотите - попробуйте, может понравится". Ну то есть по русски если и на языке php-шника, то так примерно - сложно будет выбрать наиболее популярные картинки за день, и прочую подобную лабуду.

Пару ссылочек для затравки

http://dev.net.ua/blogs/servicedeveloper/archive/2008/03/26/5776.aspx

http://www.ibm.com/developerworks/ru/library/j-db4o6/index.html?ca=dre-ru-0114

Да,для php вроде нет ничего свободного. По крайней мере я не нашёл, Когда искал. Если найдёшь чего - создай тему в толксах, ибо любопытно, пжл.

AndreyKl ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

вообще-то можно написать класс что-то вроде бы ORM, или не ORM, а модуль и передвать в него данные в виде объектов

http://search.cpan.org/search?query=DBIX&mode=all на все случаи жизни http://search.cpan.org/search?query=Rose%3A%3ADBx&mode=all http://search.cpan.org/search?query=ORM&mode=all

их там штук 50

theri ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

то есть удобно использовать ORM вместе с модулем валидации данных из форм

[code]


sub edit : Local Form {
     my ($self, $c, $address_id, $person_id) = @_;
     my $address : Stashed;
     if(!$address_id && $person_id){
         # we're adding a new address to $person
         # check that person exists
         my $person = $c->model('AddressDB::People')->
                                      find({id => $person_id});
             if(!$person){
                $c->stash->{error} = 'No such person!';
                $c->detach('/person/list');
             }
         # create the new address
             $address = $c->model('AddressDB::Addresses')->
                                       new({person => $person});
   
     }
     else {
         $address = $c->model('AddressDB::Addresses')->
                                   find({id => $address_id});
         if(!$address){
             $c->stash->{error} = 'No such address!';
               $c->detach('/person/list');
         }
     }
     if ($c->form->submitted && $c->form->validate){
             # transfer data from form to database
         $address->location($c->form->field('location'));
         $address->postal ($c->form->field('postal' ));
         $address->phone    ($c->form->field('phone'    ));
         $address->email    ($c->form->field('email'    ));
         $address->insert_or_update;
         $c->stash->{message} =
             ($address_id > 0 ? 'Updated ' : 'Added new ').
                         'address for '. $address->person->name;
         $c->detach('/person/list');
   }
   else {
       # transfer data from database to form
       if(!$address_id){
            $c->stash->{message} = 'Adding a new address ';
       }

             else {
                 $c->stash->{message} = 'Updating an address ';
             }
             $c->stash->{message} .= ' for '. $address->person->name;
             $c->form->field(name => 'location',
                                  value => $address->location);
             $c->form->field(name => 'postal',
                                  value => $address->postal);
             $c->form->field(name => 'phone',
                                  value => $address->phone);
             $c->form->field(name => 'email',
                                  value => $address->email);
         }
     }
     sub delete : Local {
           my ($self, $c, $address_id) = @_;
           my $address = $c->model('AddressDB::Addresses')->
                                            find({id => $address_id});
           if($address){
                 # "Deleted First Last's Home address"
                 $c->stash->{message} =
                       'Deleted ' . $address->person->name. q{'s }.
                             $address->location. ' address';
                 $address->delete;
           }
           else {
                 $c->stash->{error} = 'No such address';
           }
           $c->forward('/person/list');
     }
     1;

[/code]

theri ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Вроде выглядит не так уж и плохо. Но перл.. он меня с детсва пугает. Вот tailgunner'у вроде изменяющая компилятор и перекомпилирующая им себя в рантайме программа на лиспе снится, а мне вот попроще вещи - перл )).

AndreyKl ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

Да, я шучу про перл конечно.

Не с детства он мне снится. С тех пор как увидел, вот с тех и снится. А в детстве я его не видел. )

AndreyKl ★★★★★ ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

я привел в качестве примера, а программируете на чем хотите....

theri ()

Re: Вопрос по объектно-ориентированным СУБД и хранению данных в виде типов и объектов.

да не расстаивайтесь. Я шучу. Честное слово не хотел обидеть. Пример, по моему, интересный.

AndreyKl ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.