|
|
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Если запостил не в тот форум прошу заранее прощения - долго думал куда лучше поместить сабж :) Итак имеется следующая проблема Требуется организовать на С++ БД для хранилища полиморфных объектов. То есть что то типа зарегестрировал базовый класс — автоматически о стал как бы шаблоном таблицы. Далее можно вставлять в туже таблицу любой производный класс. В последствии можно либо выбирать классы по идентификаторма либо писать предикат, который прогоняется по всем классам этой коллекции и выбирает подходящие. Естсетсвенно таких коллекций может быть скока угодно, то есть как минимум столько же скока бызовых классов для хранения, хотя можо и регистрировать несколько коллекци для одного класса. Далее — важный момент. Нужно что бы прозрасчно для использования поддерживались ссылки между объектами разных коллекций. Хотелось бы сделать максимально просто и легко как в разработке так и в виспользовании. Буду оч благодарен за ссылки любой код/литературу/советы по тематике Пока даже не знаю как всё грамотно организовать... ЗЫ Как мне сообщили люди, это типичная задача решаемая ООСУБД поэтому буду благодарен за любые ссылки на e-книги по ООСУБД, особый интерес представляет непосредственная реализация ООСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 14:56 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Дак ты из реляционной объектную будешь делать или использовать готовую? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 15:23 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Нет, я хотел бы в идеале сам написать небольшую либу для хранения объектов для себя ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 15:39 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Есть такая СУБД Cache (www.intersystems.ru). Может тебе стоит ознакомится с ее возможностями. Не знаю насколько хорошо она взаимодействует с С++ но драйверы ODBC для нее точно есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 18:39 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
maytonЕсть такая СУБД Cache (www.intersystems.ru). Может тебе стоит ознакомится с ее возможностями. Не знаю насколько хорошо она взаимодействует с С++ но драйверы ODBC для нее точно есть. Не, реляционная модель мне точно не подходит. Никаких драйверов ODBC ! Я хочу брать обычные объекты и пихать их в базу, устанавливать прозрачные ссылки между объектами и т.д. И что бы всё было быстро и прозрачно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 10:18 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
2 Интегратор Ну и зря. Вот еще ссылка. Почитай. http://citforum.ru/database/articles/20030512 ...Cache' Objects - объектный доступ, для максимальной продуктивности разработки при использовании Java, EJB, C++, а также VB и других ActiveX-совместимых средств разработки, таких как PowerBuilder и Delphi. В Cache' реализована объектная модель в соответствии с рекомендациями ODMG (Группа управления объектными базами данных – Object Database Management Group). В Cache' полностью поддерживаются наследование (в том числе и множественное), инкапсуляция и полиморфизм. При создании информационной системы разработчик полу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 11:01 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
авторЯ хочу брать обычные объекты и пихать их в базу, устанавливать прозрачные ссылки между объектами и т.д. И что бы всё было быстро и прозрачно... Как можно писать то о чём не имеешь представления. ООП БД это не реляционная модель. И большинство имеют язык Java уже в БД для работы с объектами в БД. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 15:09 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123[quot автор]Я хочу брать обычные объекты и пихать их в базу, устанавливать прозрачные ссылки между объектами и т.д. И что бы всё было быстро и прозрачно... Как можно писать то о чём не имеешь представления. ООП БД это не реляционная модель. И большинство имеют язык Java уже в БД для работы с объектами в БД. Так мне и не нужна никакая релиционная модель ! У меня есть объекты в предметной облатсти - точнее коллекции объектов, я хочу не хранить коллекции и организовывать выборки объектов своими силами как сделано сейчас а что бы всё это за меня делала база + обоспечила сериализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 16:51 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Варианты от простого к сложному: - РСУБД (объекты умеют писать себя в поток и в BLOB БД) - ОРСУБД (на каждый тип объекта - таблица в БД) - ОСУБД советовал выше господин. Выбирай :). Что осилишь. Чтобы выбрать хоть немного почитай про эти варианты и их БД-представители . ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 17:03 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Варианты от простого к сложному: - РСУБД (объекты умеют писать себя в поток и в BLOB БД) - ОРСУБД (на каждый тип объекта - таблица в БД) - ОСУБД советовал выше господин. Выбирай :). Что осилишь. Чтобы выбрать хоть немного почитай про эти варианты и их БД-представители . ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Поддерживаю... Только про Cache забудь - дерьмо. Посмотри лучше это ... Конечно, денег стоит, но полностью соответствует твоим хотелкам. А по поводу книжек, то их не так и много. Начни с: Д.Джордан "Обработка объектных баз данных в С++". Удачи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 23:57 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Старый пень Petro123Варианты от простого к сложному: - РСУБД (объекты умеют писать себя в поток и в BLOB БД) - ОРСУБД (на каждый тип объекта - таблица в БД) - ОСУБД советовал выше господин. Выбирай :). Что осилишь. Чтобы выбрать хоть немного почитай про эти варианты и их БД-представители . ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Поддерживаю... Только про Cache забудь - дерьмо. Посмотри лучше это ... Конечно, денег стоит, но полностью соответствует твоим хотелкам. А по поводу книжек, то их не так и много. Начни с: Д.Джордан "Обработка объектных баз данных в С++". Удачи... Д.Джордан "Обработка объектных баз данных в С++ - есть ли в электронном варианте ? Кстати - вот ещё набрёл на Goods от Книжника, только что то не радует что там надо все типы писать те которые в базе определены... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 13:53 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
авторКстати - вот ещё набрёл на Goods от Книжника, только что то не радует что там надо все типы писать те которые в базе определены... Это ты о чём? Нормальные БД позволяют пользовательские типы определять. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 14:09 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Старый Пень Только про Cache забудь - дерьмо. Уважаемый господин Старый Пень. Обычно я не общаюсь с анонимами но здесь сделаю исключение. Если у вас есть более веские аргументы - прошу опубликовать. В противном случа позволю себе дать вам совет - не делать таких громких и глупых завлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 14:17 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 авторКстати - вот ещё набрёл на Goods от Книжника, только что то не радует что там надо все типы писать те которые в базе определены... Это ты о чём? Нормальные БД позволяют пользовательские типы определять. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Я не хочу их определять, я хочу взять обычный класс свой с примитивными типами типа int, long, немного его дополнить и запихнуть в БД ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 14:53 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
У тебя вопрос на 2 строки кода и ответ тебе тоже: В чём проблема? Твоя задача решается парой строчек кода. В чём ты видишь проблему? Ты думешь все клиенты БД на данном сайте без классов и ООП работают? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 15:10 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
mayton Старый Пень Только про Cache забудь - дерьмо. Уважаемый господин Старый Пень. Обычно я не общаюсь с анонимами но здесь сделаю исключение. Если у вас есть более веские аргументы - прошу опубликовать. В противном случа позволю себе дать вам совет - не делать таких громких и глупых завлений. Уважаемый г-н mayton! По поводу анонимности - не надо наездов, свой профайл посмотрите - много ли там информации. (Ежели Вас и вправду интересуют мои атрубуты - так и быть, ради Вас "раскроюсь") По поводу "громких и глупых завлений" - не имею привычки комментировать, а самое главное - ругать то, что лично не попробывал и не СРАВНИЛ с другими вариантами. Так вот, самое большое ДЕРЬМО от Cache - декларация о следовании рекомендациям ODMG, которые на самом деле существуют исключительно в рекламных проспектах, а не в продукте. Cache была и остается вещью в себе, софтинка для избранных ценителей. Возражения есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 15:19 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123У тебя вопрос на 2 строки кода и ответ тебе тоже: В чём проблема? Твоя задача решается парой строчек кода. В чём ты видишь проблему? Ты думешь все клиенты БД на данном сайте без классов и ООП работают? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Согласен, Интегратор не совсем точно описал задачу. Ежели она однопользовательская, то сериализация объектов действительно - пара лишних строк кода. А вот если нет - нужно думать о чем-то большем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 15:37 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Не вижу проблем от того сколько пользователей. Это проблема БД. Ваш процесс имеет проблемы если рядом есть другие? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 15:50 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Старый пень Так вот, самое большое ДЕРЬМО от Cache - декларация о следовании рекомендациям ODMG, которые на самом деле существуют исключительно в рекламных проспектах, а не в продукте. Cache была и остается вещью в себе, софтинка для избранных ценителей. Хм... то есть по вашему мнению следование рекомендациям ODMG есть сама цель разработки какой-либо системы? Может вы в силу своего консерватизма или ограниченности в свое время не разобрались с вышеуказанной технологией о обижено ушли в сторону? И при упоминании о Cache изрыгаете брань? Или вы просто лоббируете интересы Versant? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 16:37 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Интересы Versant лично мне по-барабану - я им не торгугю, не лоббирую его и т.д... Но ежели ОБЪЕКТИВНО сравнивать продукты, ныне существующие на рынке, то выводы напрашиваются далеко не в пользу Cache.... "Хм... то есть по вашему мнению следование рекомендациям ODMG есть сама цель разработки какой-либо системы?" Про самоцель никто не говорит, но НАХРЕНА рекламировать соответствие, которым и не пахнет... "Может вы в силу своего консерватизма или ограниченности в свое время не разобрались с вышеуказанной технологией о обижено ушли в сторону?"[/i Про какую технологию Вы говорите? Если М, то называйте меня убогим, ретроградом, консерватором, да хоть идиотом - соглашусь. Но никогда не соглашусь, что Cache имеет хоть какое-то отношение к объектным базам данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 18:11 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Старый пеньНо ежели ОБЪЕКТИВНО сравнивать продукты, ныне существующие на рынке, то выводы напрашиваются далеко не в пользу Cache.... Из каких фактов это следует. Поделитесь. Может я чего-то не знаю или недопонимаю? Но никогда не соглашусь, что Cache имеет хоть какое-то отношение к объектным базам данных... То есть вы хотите сказать что СУБД Cache не является обьектной? Так я вас понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 18:22 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Знаете, давайте закончим перепалку. Я высказал свое IMHO для г-на Интегратора. И не более того. А спорить с приверженцами MUMPS-ов себе дороже, по опыту знаю. Все равно аргументация у них очень быстро заканчивается и либо переходит на личности, либо сводится к анекдоту: "- Абрам, ты почему разводишься с Сарой? - Она меня не удовлетворяет как женщина! - Ну ты даешь, весь квартал удовлетворяет, а тебя - нет!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 18:33 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Старый пеньЗнаете, давайте закончим перепалку. Я высказал свое IMHO для г-на Интегратора. И не более того. А спорить с приверженцами MUMPS-ов себе дороже, по опыту знаю. Все равно аргументация у них очень быстро заканчивается и либо переходит на личности, либо сводится к анекдоту: "- Абрам, ты почему разводишься с Сарой? - Она меня не удовлетворяет как женщина! - Ну ты даешь, весь квартал удовлетворяет, а тебя - нет!" Как будет угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 19:06 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Многое зависит от объемов. Если они небольшие, то можно например gigbase http://www.garret.ru/~knizhnik/gigabase.html - это встраиваемая СУБД. Для больших объемов есть уже опущенные Verisant, Cache... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 11:20 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Подскажи про лицензию - она платная? 2. Поиск внутри классовый осуществляет? 3. SQL язык? SQL3 язык? Maksim UMМногое зависит от объемов. Если они небольшие, то можно например gigbase http://www.garret.ru/~knizhnik/gigabase.html - это встраиваемая СУБД. Для больших объемов есть уже опущенные Verisant, Cache... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 11:38 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
[quot Petro123]Подскажи про лицензию - она платная? 2. Поиск внутри классовый осуществляет? 3. SQL язык? SQL3 язык? [/quot Petro123] Смотря о чем? gigabase - бесплатная (разработчик наш). Возможности лучше посмотреть по ссылке. Если коротко, то есть поиск, запросы, индексы, различные интерфейсы, но моного и ограничений. Verisant, Cache... - коммерческие БД. Первые 2 СУБД довольно сильно отличаются, но возможностей для записи, обработки данных хватает для большинства стандартных задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 11:59 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
FastDB/Gigabase не устраивают в первую очередь тем, что я хочу хранить коллекции ПОЛИМОРФНЫХ объектов. То есть наследников от базового. То есть коллекция характеризуется не фиксированным классом, а базовым - реально же помещаются его насдледники. Процесс одни и сама сериализация проблем не вызывает. Проблемы вызывает организация и поддержка целостности ссылок между различными объектами разных коллекций. Думаю тепепрь моя проблема прояснилась ? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 21:56 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Всегда стараюсь найти наиболее простое решение. Чем вас не устраивает такое: id typ blob1 10 FFFFFFF0002 13 FFFFFFF0803 15 FFFFFFF060 Если тип объекта 13, то конструктор 13-го (типа фабрика классов). А объект сериализирует себя из BLOB. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 11:15 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Всегда стараюсь найти наиболее простое решение. Чем вас не устраивает такое: id typ blob1 10 FFFFFFF0002 13 FFFFFFF0803 15 FFFFFFF060 Если тип объекта 13, то конструктор 13-го (типа фабрика классов). А объект сериализирует себя из BLOB. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Главная проблема - целостность ссылок. Как я организую хранения ссылок между объектами ? ЗЫ Объём данных большой - хочектся максимально быстро всё организовать ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:22 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
авторГлавная проблема - целостность ссылок. Как я организую хранения ссылок между объектами ? Чё то вы мудрите. Вариант-статика (типа файла dfm у Delphi). При проектировании у каждого визуального компонента на форме-окне есть свойства owner и parent. При бросании на контейнер-объект автоматически записываются эти свойства. Все объекты умеют потом из потока (dfm/рессурса/бд сериализоваться). И обслужить дочерние и т.д. Для того чтобы объект умел читаться из потока (файл/блоб БД) надо только наследовать его от базового умеющего это делать. Механизм сериализации из потока везде одинаков , нодо тока синтаксис почитать и сравнить. В Delphi это 10 строк кода. 2 Вариант-динамика. А кто мешает завести эти 2 свойства, коллекцию дочерних (их id) и выдернуть в конструкторе главного - дочерних из БД? 3 Вариант-деревья в РСУБД (вот тебе ссылки родитель-дитё). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:59 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 авторГлавная проблема - целостность ссылок. Как я организую хранения ссылок между объектами ? Чё то вы мудрите. Вариант-статика (типа файла dfm у Delphi). При проектировании у каждого визуального компонента на форме-окне есть свойства owner и parent. При бросании на контейнер-объект автоматически записываются эти свойства. Все объекты умеют потом из потока (dfm/рессурса/бд сериализоваться). И обслужить дочерние и т.д. Для того чтобы объект умел читаться из потока (файл/блоб БД) надо только наследовать его от базового умеющего это делать. Механизм сериализации из потока везде одинаков , нодо тока синтаксис почитать и сравнить. В Delphi это 10 строк кода. 2 Вариант-динамика. А кто мешает завести эти 2 свойства, коллекцию дочерних (их id) и выдернуть в конструкторе главного - дочерних из БД? 3 Вариант-деревья в РСУБД (вот тебе ссылки родитель-дитё). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Обращение к базе/копирование блобов - операция довольно долгая, хотелось бы сразу получть указатель на объект, а не копировать большие куски памяти, как и будет происходить при считываении из РСУБД. У меня много объектов - к примеру спокойно может быть выборка, за раз возвращающая 20000 объектов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:39 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Обращение к базе/копирование блобов - операция довольно долгая, хотелось бы сразу получть указатель на объект================ Это как? Полная каша. Как получить значения полей класса для конструктора - не считывая их из файла/blob/db/потока? ))))). , а не копировать большие куски памяти, как и будет происходить при считываении из РСУБД. ============ Вы вообще хоть один проект с БД делали? У меня много объектов - к примеру спокойно может быть выборка, за раз возвращающая 20000 объектов...========= У меня миллион об-тов в БД. Но на клиента я тянуть стараюсь как можно меньше. Если клиент-серверная прога, то миллион об-тов должен сервер обрабатывать. Если нет, то вообще храни их в оперативке и при закрытии сохраняй все в поток в двоичный файл. Впечатление, что рассказав свою задачу, вы бы её решили гораздо грамотнее. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 15:03 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Обращение к базе/копирование блобов - операция довольно долгая, хотелось бы сразу получть указатель на объект================ Это как? Полная каша. Как получить значения полей класса для конструктора - не считывая их из файла/blob/db/потока? ))))). , а не копировать большие куски памяти, как и будет происходить при считываении из РСУБД. ============ Вы вообще хоть один проект с БД делали? У меня много объектов - к примеру спокойно может быть выборка, за раз возвращающая 20000 объектов...========= У меня миллион об-тов в БД. Но на клиента я тянуть стараюсь как можно меньше. Если клиент-серверная прога, то миллион об-тов должен сервер обрабатывать. Если нет, то вообще храни их в оперативке и при закрытии сохраняй все в поток в двоичный файл. Впечатление, что рассказав свою задачу, вы бы её решили гораздо грамотнее. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Приехали .... а). Я делал не один проект с РСУБД и представляю как всё работает, так что давайте с уважением относиться друг другу - ок ? Если бы надо было сделать бухгалтерский ширпотреб, я бы воспользовался каким - нить MySQL и вопросов в этот форум вообще не постил. б). Приложение НЕ клиент-серверное. База должна работать в контексте моего процесса и я прекрасно представляю, что запросив объект, база мне даст указатель на этот объект. Основная цель - не сериализация объектов, так как как раз эта проблема более-менее решена и объекты требует ся сохранять после закрытия приложения максимум в 10% случаев. в). Нужно иметь функционал по простому и быстрому добавлению объектов в базу и простым выборкам этих объектов из базы. Для чего это нужно ? Что бы избавится от множества по разному реализованных коллекций, сделанных и создающихся разными людьми + каждый организует ссылки между объектами как ему вздумается, что приводит к большому количеству глюков захоламлению кода всяким отжнотипным мусором. Логичное желание - максимально упростить управление коллекциями и связями мужде объектами, сосредоточив шаблон в одном месте программы, что бы рядовой программист мог легко добавлять/удалять объекты в хранилищеи делать выборки по своему усмотрению. Объекты кстати постоянно добавляются новыеи естесвенно дрегистрация нового объекта должна осущесьвляться соврешенно элементарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 15:18 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Смею Вас уверить, что БД в процессе приложения (встраиваемое) достаточно быстро работает. Если вам надо: - поиск SQL, - сохранение после закрытия, то пришли к тому от чего начали - 3 варианта. Обращение к базе/копирование блобов - операция довольно долгая, хотелось бы сразу получть указатель на объект, а не копировать большие куски памяти, как и будет происходить при считываении из РСУБД. ============ При открытии проги считаете что вам надо (можете всё сразу). В inproc DB вы получаете указатель на BLOB. И что здесь будет длительного? У меня много объектов - к примеру спокойно может быть выборка, за раз возвращающая 20000 объектов ...=============== Получишь 20000 указателей void для конструкторов объектов. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 15:50 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Смею Вас уверить, что БД в процессе приложения (встраиваемое) достаточно быстро работает. Если вам надо: - поиск SQL, - сохранение после закрытия, то пришли к тому от чего начали - 3 варианта. Обращение к базе/копирование блобов - операция довольно долгая, хотелось бы сразу получть указатель на объект, а не копировать большие куски памяти, как и будет происходить при считываении из РСУБД. ============ При открытии проги считаете что вам надо (можете всё сразу). В inproc DB вы получаете указатель на BLOB. И что здесь будет длительного? У меня много объектов - к примеру спокойно может быть выборка, за раз возвращающая 20000 объектов ...=============== Получишь 20000 указателей void для конструкторов объектов. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Да не хочу я ничего считывать при открытии базы ;) Я хочу в процессе работы постоянно сохранять объеты/считывать. Если я буду регулярно дёргать их конструкторы, то кроме тормозов я других плюсов не получу + поимею все вытекающие проблемы с выделенимем динамическо памяти - операция длительная и постоянное выделение / освобождение памяти кучи небольшими кусками приведёт к фрагментации памяти и существенным тормозам - я уже смотрел профайлером по проекту - delete съедает основную массу времени - 8 %. А я хочу тупо написать запрос - получить курсор, перебрать полученные объекты. То есть иметь доступ непосредственно к объектам, а не постоянно создавать из заново, дёргая их конструкторы. Повторюсь - я не хочу считывать объекты в свои контейнеры - свои структуру у меня и так есть - я как раз и хочу от них отказаться и переложить весь труд по работе с памятью/хранении объектов на базу. В принципе даже готов сам написать раз и навсегда. Повторюсь - проблема не в сериализации объектов, а в динамическо работе с ними в процессе работы приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:09 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Ну дак и держи их в памяти. БД нужна будет только для поиска. Регистрируя об-т ты только записываешь id в своей коллекции в оперативке в БД и поля для поиска (Иванов Иван Иваныч). Раз не можешь искать в своей коллекции (или медленно там). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:23 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 Ну дак и держи их в памяти. БД нужна будет только для поиска. Регистрируя об-т ты только записываешь id в своей коллекции в оперативке в БД и поля для поиска (Иванов Иван Иваныч). Раз не можешь искать в своей коллекции (или медленно там). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! В этом то и задача что бы база держала их в памяти и управляла ими ! Если мне придётся и дальше возиться со своими коллекциями то мне база стороння тогда вообще не нужна. Я хочу вообще отойти от своих коллекций - либо полностью написать аналог ООСУБД самому и тогда уж ни каким сторонним БД не обращаться... Для второго нужна серьёзная литература по оргпнизации структур данных/ООСУБД на С++, которой увы не могу найти :( А найти готовую БД удовлетворяющую моим требованиям увы пока не получается :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:30 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Не от того пляшите. Надо от того что запрос сложный или нет. Мы взяли БД без поддержки SQL (сами парсер написали). Потом прокляли того который это посоветовал. Если запросы сложные - SQL92 года, то не надо извращаться. Если простые, то не надо БД. У нас вообще двоичный файл был, по которому искали (в статике) и в оперативке (перебор коллекции). автор В этом то и задача что бы база держала их в памяти и управляла ими !================ Что значит управляла? Поиск?Сохранение?Индексация?Вставка? Если мне придётся и дальше возиться со своими коллекциями то мне база стороння тогда вообще не нужна.=================== Вот и определись - зачем БД. Я хочу вообще отойти от своих коллекций - либо полностью написать аналог ООСУБД самому и тогда уж ни каким сторонним БД не обращаться... ================== Лучше напиши операционку и не говори вслух громко. удовлетворяющую моим требованиям увы пока не получается :(============= А ты ни одного требования не выдвинул - общие разговоры. Мне когда нач-к ставил задачу, я ему тест делал (MSSQL миллион объектов). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:39 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Не от того пляшите. Надо от того что запрос сложный или нет. Мы взяли БД без поддержки SQL (сами парсер написали). Потом прокляли того который это посоветовал. Если запросы сложные - SQL92 года, то не надо извращаться. Если простые, то не надо БД. У нас вообще двоичный файл был, по которому искали (в статике) и в оперативке (перебор коллекции). автор В этом то и задача что бы база держала их в памяти и управляла ими !================ Что значит управляла? Поиск?Сохранение?Индексация?Вставка? Если мне придётся и дальше возиться со своими коллекциями то мне база стороння тогда вообще не нужна.=================== Вот и определись - зачем БД. Я хочу вообще отойти от своих коллекций - либо полностью написать аналог ООСУБД самому и тогда уж ни каким сторонним БД не обращаться... ================== Лучше напиши операционку и не говори вслух громко. удовлетворяющую моим требованиям увы пока не получается :(============= А ты ни одного требования не выдвинул - общие разговоры. Мне когда нач-к ставил задачу, я ему тест делал (MSSQL миллион объектов). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Зачем БД я явно сказал - что бы хранить в ней объекты и выбирать их из неё по мере надобности - помещать новые - что непонятного ? Хорошо, напишу псевдо код как это можно например представить на стороне клиента. struct Point { virtual Vector getPos() = 0; virtual void setPos(Vector&) = 0; virtual void draw() = 0; reference<Line> refs; REGISTER_REF(Line, refs); }; class Point3D : Point { int x, y; public: Vector getPos() { // реализация } void setPos(Vector&) { // реализация } void draw() { // реализация } }; class SurfacePoint : public Point { .... }; REGISTER_BASE_CLASS(Point); REGISTER_CLASS(Point, Point2D); REGISTER_CLASS(Point, SurfacePoint); class Line { public: references<Point> refs; REGISTER_REF(Point, refs); void draw() { ... } void rotate(double angle) { ... } }; REGISTER_BASE_CLASS(Line); main() { int id1 = storage.insert<Point>(new Point2D(...)); int id2 = storage.insert<Point>(new SurfacePoint(...)); Line* line = new Line(...); line.refs.addLink(id1); line.refs.addLink(id2); int lineId = storage.insert<Line>(line); Query query; // выбор всех точек, кторые ссылоются на заданный объект Line query << lineId << db::in << " refs"; Cursor<Point>* cursor = storage("Point").select(query); while (cursor->hasNext()) { ...... } } Коечно грубовато и не совсем последовательно - но общая идея что я хочу думапб понятна ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:50 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
авторЗачем БД я явно сказал - что бы хранить в ней объекты и выбирать их из неё по мере надобности - помещать новые - что непонятного ? Терминология Ваша не точна - хранить объекты вы что подразумеваете? - сериализация (вы говорите долго будет). - ссылки на id объекта в коллекции в оперативке (ничего не говорите). Вы пространственную БД делаете? Пусть у вас векторная карта СССР (миллионы линий из точек). Вы её рисуете или что делаете? (зачем сразу вам 20000 объектов?). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:06 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 авторЗачем БД я явно сказал - что бы хранить в ней объекты и выбирать их из неё по мере надобности - помещать новые - что непонятного ? Терминология Ваша не точна - хранить объекты вы что подразумеваете? - сериализация (вы говорите долго будет). - ссылки на id объекта в коллекции в оперативке (ничего не говорите). Вы пространственную БД делаете? Пусть у вас векторная карта СССР (миллионы линий из точек). Вы её рисуете или что делаете? (зачем сразу вам 20000 объектов?). ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Объекты сами себя сериализуют - все объекты реализуют интерфейс struct Serializable { virtual void serialize() = 0; }; Повторяю - вопрос сериализации меня беспокоит меньше всего. Главное - что бы все выборки/помещение объектов в базу (по сути оперативку = страничный файл) были быстрыми. Сама сериализация производится по выходу из приложения или запросе пользователя - но это случай как уже говорил не частый. ссылки - я показал как мне хотелось бы видеть ссылки между объектами в пользовательском коде - как их реально лучше реализовать я не знаю почему и спрашиваю. Хотелось бы что ьы всем хозяйством заправляла база и порльзовательский код был максимально прозрачным и лаконичным. Объекты нужны для САПР - системы - в часитности и для отображения трёхмерных моделей, но и для кучи всего остального ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:24 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
В MSSQL Server мне не хватает R-дерева и индекса по нему, что есть в Oracl (картриджем). Не случайно AutoCad подключается именно через этот механизм. Пришлось поиск делать ручками по габаритам объектов, но ничё - работает. Скорость у тебя упадёт не там где ты думаешь. Вот так как у БД Informix ты всё равно не напишешь: http://www.jetinfo.ru/1997/12-13/1/article1.12-13.1997337.html#AEN347 В общем - удачи! ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:55 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Ещё: http://www.yandex.ru/yandsearch?rpt=rad&text=%D2%E8%EF%FB+%E8+%F1%F2%F0%F3%EA%F2%F3%F0%FB+%E4%E0%ED%ED%FB%F5+%E2+INFORMIX-Universal+Server ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:56 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123В MSSQL Server мне не хватает R-дерева и индекса по нему, что есть в Oracl (картриджем). Не случайно AutoCad подключается именно через этот механизм. Пришлось поиск делать ручками по габаритам объектов, но ничё - работает. Скорость у тебя упадёт не там где ты думаешь. Вот так как у БД Informix ты всё равно не напишешь: http://www.jetinfo.ru/1997/12-13/1/article1.12-13.1997337.html#AEN347 В общем - удачи! ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Но автокад то для внутреннего хранения наверно свою свои структуру данных использует а я хочу полностью перейти на базу для динамического управлдени объектами. ЗЫ На сериализацию в принципе вообще можно забить - настолько это не важно. Все данные можно загрузить и через формирумый в процессе создания модели скрипт и подгрузка сформированных данных - полезная фича, но далеко не обязательная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 10:35 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Но автокад то для внутреннего хранения наверно свою свои структуру данных использует а я хочу полностью перейти на базу для динамического управлдени объектами.=================== Рисунок может быть большой (коттедж). Никто не грузит все элементы в память при рендеринге одной комнаты. Если у тебя визуализация, то почитай про OpenGL 3D и R-tree . Автоматически грузится толька видимая сцена . Остальное сидит в Базе. Ты проектируешь оторванные куски, которые без предмета и цели будут правильные в кавычках. Но при сборке проекта, конечная цель которого (неясно пока) например 3D рендеринг он работать не будет. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 10:59 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
авторя хочу полностью перейти на базу для динамического управлдени объектами - если цель БД - быстро вытащить объекты (поиск без сериализации) по ссылкам и пространственным координатам, то это область - пространственая БД/R-tree. - если цель БД - быстро вытащить объекты (поиск без сериализации) по SQL запросам, то это область - РСУБД. - если цель БД - быстро вытащить объекты (поиск без сериализации) по SQL запросам, то это область - РСУБД. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 11:04 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 авторя хочу полностью перейти на базу для динамического управлдени объектами - если цель БД - быстро вытащить объекты (поиск без сериализации) по ссылкам и пространственным координатам, то это область - пространственая БД/R-tree. - если цель БД - быстро вытащить объекты (поиск без сериализации) по SQL запросам, то это область - РСУБД. - если цель БД - быстро вытащить объекты (поиск без сериализации) по SQL запросам, то это область - РСУБД. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Что понимается под пространсвенная БД ? Через РСУБД быстро вытащить объекты в принципе невозможно, как я уже говорил. Дёргать конструкторы объектов по тысячи раз за несколько минут, причём регулярно для одного ти того же объекта - это полный бред. После того как я создал объект, он не должен пересоздаваться желательно ни разу за всё время функционарирования приложения, а если и долджен, то только если он очень редко используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 11:11 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Что понимается под пространсвенная БД ?========== В игрушки играли? Карта и все элементы коттежда находятся в БД. БД строит пространственный индекс по координатам всех элементов/классов (линия, сфера, треугольник, стол из треугольников). При запросе движка к БД "дай мне все элементы в простанстве куба камеры (левая плоскость, правая плоскость, верхняя плоскость, нижняя плоскость)". По индексу R-tree БД выдаёт стол и автоматом все элементы стола , а также всё что пересеклось с кубом. Из миллиона объектов БД ты отрисовываешь только видимые! Простр-ая БД продаётся как отдельный коммерческий продут (MapInfo). Есть картриджем к Oracl и т.д. Через РСУБД быстро вытащить объекты в принципе невозможно, как я уже говорил. Дёргать конструкторы объектов по тысячи раз за несколько минут, причём регулярно для одного ти того же объекта - это полный бред.=========== А зачем ты его уничтожаешь после первого дёрганья??????? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 11:37 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Что понимается под пространсвенная БД ?========== В игрушки играли? Карта и все элементы коттежда находятся в БД. БД строит пространственный индекс по координатам всех элементов/классов (линия, сфера, треугольник, стол из треугольников). При запросе движка к БД "дай мне все элементы в простанстве куба камеры (левая плоскость, правая плоскость, верхняя плоскость, нижняя плоскость)". По индексу R-tree БД выдаёт стол и автоматом все элементы стола , а также всё что пересеклось с кубом. Из миллиона объектов БД ты отрисовываешь только видимые! Простр-ая БД продаётся как отдельный коммерческий продут (MapInfo). Есть картриджем к Oracl и т.д. Через РСУБД быстро вытащить объекты в принципе невозможно, как я уже говорил. Дёргать конструкторы объектов по тысячи раз за несколько минут, причём регулярно для одного ти того же объекта - это полный бред.=========== А зачем ты его уничтожаешь после первого дёрганья??????? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Зачем уничтожаю - а затем что если я считаю данные, то мне надо их потом сохранить в коллекции - а я принципиально НЕ ХОЧУ ничего никуда сохранять. Если посмотришь например FastDB от книжника - то как раз такой интерфейс работы с базой я и хочу. Но там свои минусы - приходится регистрировать все данные класса (я бы предпочёил тольке те кпо которым буду выбирать) и главное - все объекты должны быть конкретными класами, а я хочу полиморфные. б). Нет, мне надо не пвыборки по пронстрансвенным координатам - ьребуются самы различные типы выьборок, но вся мощб SQL совершенно не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:15 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 Из миллиона объектов БД ты отрисовываешь только видимые! а binary space partition это не в эту тему? вон у квэйка открыты исходники, там это реализуется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:19 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Т.е. ты хочешь: 1 - запускаешь exe (об-ты пока не читаются). 2 - указываешь SQL выражение поиска нужных об-тов. 3 - Команда - Фас! провайдеру БД. 4 - Провайдер нашёл твои 20000 об-тов за 0,2 сек. 5 - Ты их имеешь в кэше в COM от провайдера ADO MS. 6 - Пробегаешь по списку COM - IADO.Next; и конструктор для объекта. Куда ты его денешь потом как не в свой список? Или ты перед следующим next он тебе не нужен? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:24 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
alex_k Petro123 Из миллиона объектов БД ты отрисовываешь только видимые! а binary space partition это не в эту тему? вон у квэйка открыты исходники, там это реализуется... Игровые движки предполагают, что вся база укладывается в доступный обьем виртуальной памяти. Сомневаюсь что Интегратору это поможет. Хотя идея интересная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:24 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
alex_k Petro123 Из миллиона объектов БД ты отрисовываешь только видимые! а binary space partition это не в эту тему? вон у квэйка открыты исходники, там это реализуется... Мне всегда интересно - есть ссылка кинь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:26 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Т.е. ты хочешь: 1 - запускаешь exe (об-ты пока не читаются). 2 - указываешь SQL выражение поиска нужных об-тов. 3 - Команда - Фас! провайдеру БД. 4 - Провайдер нашёл твои 20000 об-тов за 0,2 сек. 5 - Ты их имеешь в кэше в COM от провайдера ADO MS. 6 - Пробегаешь по списку COM - IADO.Next; и конструктор для объекта. Куда ты его денешь потом как не в свой список? Или ты перед следующим next он тебе не нужен? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Посмотрите как это реализовано в FastDB от Константина Книжника - и приблизительно поймёте что я хочу. http://www.ispras.ru/~knizhnik/fastdb/readme.htm Зачем мне нужен КЭШ если я буду использовать embedded СУБД, работающую в КОНТЕКСЕ моего процесса. Посмотрите ещё раз тот код который я по быстрому написал dsit - по нему легко понять как я виже работу с базой - всё предельно просто и прозрачно. Вы всё перекладываете на принципы работы РСУБД. Однако в РСУБД нет объектов и соответсвенно не может быть прямого доступа к памяти, где живёт объект - но это совершенно не значит что ВСЕ системы так работают ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:39 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 alex_k а binary space partition это не в эту тему? вон у квэйка открыты исходники, там это реализуется... Мне всегда интересно - есть ссылка кинь. минуты не потратил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:56 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Посмотрите как это реализовано в FastDB от Константина Книжника - и приблизительно поймёте что я хочу. ========= Посмотрел - это представитель ОРСУБД (2-ой вариант начала нашего трэда). Зачем мне нужен КЭШ если я буду использовать embedded СУБД, работающую в КОНТЕКСЕ моего процесса. ========== Да, тут я совсем забыл, но принцип не меняется. Всё равно класс начинает жить либо инициализируемый БД (объектная БД/ОРСУБД) либо клиентом БД (РСУБД). Другого не дано. При объектной БД при проходе курсора по записи Код: plaintext Посмотрите ещё раз тот код который я по быстрому написал dsit - по нему легко понять как я виже работу с базой - всё предельно просто и прозрачно.=========== Конечно - вы получаете экземпляр, а что его когда надо и не надо делает БД вам начихать. Вы всё перекладываете на принципы работы РСУБД. Однако в РСУБД нет объектов и соответсвенно не может быть прямого доступа к памяти, где живёт объект - но это совершенно не значит что ВСЕ системы так работают !=============== Выше я сказал как работает ОБД - на каждый ваш next - конструктор в БД. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:04 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Выше я сказал как работает ОБД - на каждый ваш next - конструктор в БД. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Если действительно каждое обращение к объекту приводит к его конструированию (в чём честно говоря я пока сомневаюсь, так как БД вполне может сериализовать оьъект только по мере необходимости а не сразу), то в этом случае единственный вариант - писать свой менеджер объектов (по сути свою базу), так как сериализация мне не нужна по сути. Как я уже сказал выборку объектов из одной коллекции я могу легко прикрутить - единственный открытый пока вопрос - как организовать связи между объектами с воддержкой целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:12 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Т.е. ты хочешь_2: 1 - запускаешь exe (об-ты пока не читаются). 2 - указываешь SQL выражение поиска нужных об-тов. 3 - Команда - Фас! БД. 4 - БД нашла твои 20000 об-тов за 0,2 сек. 5 - Ты ХОЧЕШЬ ИМЕТЬ ЭКЗЕМПЛЯРЫ ИЛИ ЧТО? ........... 6 - Пробегаешь по списку COM - IADO.Next; и конструктор для объекта. Куда ты его денешь потом как не в свой список? Или ты перед следующим next он тебе не нужен? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:21 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Т.е. ты хочешь_2: 1 - запускаешь exe (об-ты пока не читаются). 2 - указываешь SQL выражение поиска нужных об-тов. 3 - Команда - Фас! БД. 4 - БД нашла твои 20000 об-тов за 0,2 сек. 5 - Ты ХОЧЕШЬ ИМЕТЬ ЭКЗЕМПЛЯРЫ ИЛИ ЧТО? ........... 6 - Пробегаешь по списку COM - IADO.Next; и конструктор для объекта. Куда ты его денешь потом как не в свой список? Или ты перед следующим next он тебе не нужен? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Я хочу иметь указатели на объекты. Соответсвенно перебор - как перебор vector<Class*> через итераторы например. Когда я кладу в хранилитще - последнеее получает указатель на объект, никаких клонов не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:25 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Сериализацию база будет осуществлять запрашивая у объекта интерфейс Serializable и только по запросу пользователя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:27 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
В чём тогда проблема? Имеем в БД: id typ blob_serialyze Указатель1 10 FFFFFFF000 Null2 13 FFFFFFF080 2525543 15 FFFFFFF060 567889 Т.е. ты хочешь_3: 1 - запускаешь exe (об-ты пока не читаются). Плевать как запускаешь. Добавляешь указатель на объект в БД и БД хранит указатель и тип объета (для получения обратного преобразования). Либо интерфейс у всех одинаков и по нему узнаешь всё что хошь. То-же что твоя коллекция, только поиск по SQL, индексация, поиск не перебором и т.д. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:51 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123В чём тогда проблема? Имеем в БД: id typ blob_serialyze Указатель1 10 FFFFFFF000 Null2 13 FFFFFFF080 2525543 15 FFFFFFF060 567889 Т.е. ты хочешь_3: 1 - запускаешь exe (об-ты пока не читаются). Плевать как запускаешь. Добавляешь указатель на объект в БД и БД хранит указатель и тип объета (для получения обратного преобразования). Либо интерфейс у всех одинаков и по нему узнаешь всё что хошь. То-же что твоя коллекция, только поиск по SQL, индексация, поиск не перебором и т.д. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! В принципе можно попробовать что то подобное, даже можно сравнить скорость работы на том же MySQL в embedded варианте и обычной моей коллекции. Явный минус: неудобно делать сссылки между ообъектами - придётся заводить отдельную таблицу для связей id1-id2 и выборка типа отобрать все обхекты типа itypeId, на которые ссылается текущий объект будет долгой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:03 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
авторЯвный минус: неудобно делать сссылки между ообъектами - придётся заводить отдельную таблицу для связей id1-id2 и выборка типа отобрать все обхекты типа itypeId, на которые ссылается текущий объект будет долгой... Да, как выше говорил: - деревья не R-tree а таблицами в РСУБД. - R-tree как фича БД - R-tree ручками на клиенте (MapInfo делает дерево-кэш в оперативке а потом с ним работает). Есть библиотеки на С++. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:12 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123 авторЯвный минус: неудобно делать сссылки между ообъектами - придётся заводить отдельную таблицу для связей id1-id2 и выборка типа отобрать все обхекты типа itypeId, на которые ссылается текущий объект будет долгой... Да, как выше говорил: - деревья не R-tree а таблицами в РСУБД. - R-tree как фича БД - R-tree ручками на клиенте (MapInfo делает дерево-кэш в оперативке а потом с ним работает). Есть библиотеки на С++. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Вот здесь не совсем вас понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:22 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
http://www.chair36.msiu.ru/science/science/articles/3/html/node57.html ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:40 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
http://docs.luksian.com/programming/theory/sorting/ ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:43 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Могу на мыло выслать R-tree на С++. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:48 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Могу на мыло выслать R-tree на С++. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Давайте на albatrosb@newmail.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:53 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
А теперь смотрим что мы имеем. Таблица объектов ObjectTable содержит object_id,class_id, serialized_data, object_pointer + каким то образом организованы связим между объектами например в вижде таблицы RelationTable object_id1, object_id2 Хранит все объекты нерационально в одной таблице, так как много объектов разного типа - долго будет проходить выборка. Приходим к варианту одна иерархия - одна таблица ObjectTable. Что получаем в итоге: sql использовать можно только для выборки объектов на которые ссылается заданный объект - и всё, либо объектов заданного конкретного класса в пределах иерархии. Получаем по сути mapping объектов нареляционные структуры со всеми вытекающими проблемами - например необходимость создания таблиц по классам и т.д. и .т.п., написанием всей инфрастуктуры mappiing'a То есть прихожу как раз к тому от чего хочу отойти - никаких моих коллекций, всё прозрачно помещается в базу. Из приобретений - только выборка связанных объектов, что с тем же успехом и более эффективно могу реализовать и своими средствами. Ещё раз повотрюсь - не путайте мо задачу с задачей типчный программёшок про работе с БД - так называемый бизнес-приложений :) ( взял из базы данные - сделал пару арифметических опрераций - положил обратно), где задача основная - хранить данные в базе периодически их обрабатывая. У меня задачи хранить данные можно считать что нет - задача - легко и предельно просто и быстро получать объекты C++ по заданному условию. Причём процесса "положить" в базу просто нет - считается что я получаю непосредственно указатель на объект и все изменения автоматом осуществляются в хранилдище. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 10:30 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123Могу на мыло выслать R-tree на С++. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Спасибо за код ! ;) Изучим ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 10:30 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Всё что сказали это понятно. Те кому надо деревья-связи в РСУБД (например структура предприятия по отделам) именно так и делают. Только это всё отработано и есть куча примеров. В Вашем случае - изучите R-tree в собственной реализации и R-tree в реализации БД которая это поддерживает . И выбирайте - нужна ли Вам эта технология. Т.к. R-tree это тоже коллекция как у вас. И она счас наиболее перспективная. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 10:55 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
2 Интегратор Любопытно, вы смотрели ООСУБД FastObjects t7 ? Мне показалось, что по своим техническим возможностям она вас должна удовлетворять. Или же это не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 17:08 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo2 Интегратор Любопытно, вы смотрели ООСУБД FastObjects t7 ? Мне показалось, что по своим техническим возможностям она вас должна удовлетворять. Или же это не так ? Огорчает небесплатность :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 17:30 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo2 Интегратор Любопытно, вы смотрели ООСУБД FastObjects t7 ? Мне показалось, что по своим техническим возможностям она вас должна удовлетворять. Или же это не так ? При этом не забываем отделить "зёрна от плевел" - http://www.sql.ru/forum/actualthread.aspx?tid=143322&pg=5#1194915 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 18:04 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Интегратор Alexey Rovdo2 Интегратор Любопытно, вы смотрели ООСУБД FastObjects t7 ? Мне показалось, что по своим техническим возможностям она вас должна удовлетворять. Или же это не так ? Огорчает небесплатность :) Небесплатность - общая черта многих хороших продуктов. А вот если бы вы сказали "высокая цена", мне бы, пожалуй, было что вам предложить в плане ее снижения. PS: Из бесплатных можете обратить внимание на BerkleyDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 19:44 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo На простых примерах можно показать почему, напимер, коллекцию-класс использовать лучше чем просто список указателей на элементы. Но почему ОБД лучше РСУБД - нет таких простых примеров. С другой стороны я бы и посмотрел Выши предложения, но они все требуют С++ (Java) клиента? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 11:04 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Petro123На простых примерах можно показать почему, напимер, коллекцию-класс использовать лучше чем просто список указателей на элементы. Но почему ОБД лучше РСУБД - нет таких простых примеров. В FastObjects можно использовать и коллекции, и списки, и даже карты. ООБД лучше РСУБД в тех ситуациях, когда можно в полной мере воспользоваться скоростью и удобством прямой навигации по объектным ссылкам (указателям) и практически отказаться от использования запросов. В других ситуациях все гораздо сложнее и совсем не очевидно. Petro123 С другой стороны я бы и посмотрел Выши предложения, но они все требуют С++ (Java) клиента? С++, Java (FastObjects t7) или C#, VB .NET (FastObjects .NET). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 12:10 |
|
||
|
Организация ООСУБД и С++
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo Уже кое-что, НО: авторскоростью и удобством прямой навигации по объектным ссылкам (указателям) приведи пример )). Если у меня списки ООП объектов в RunTime то их строил Я САМ. КОГДА У МЕНЯ БУДЕТ ПРОБЛЕМА ИСКАТЬ ТАМ ЧТО-ТО ? автори практически отказаться от использования запросов А как искать без текста запроса. Например мне надо все объекты сгуппированные по полю - зарплата. На SQL одна строка - Код: plaintext ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 14:26 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2033615]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 365ms |

| 0 / 0 |
