powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Новая бесплатная БД – К3 (Кэтрин)
25 сообщений из 156, страница 3 из 7
Новая бесплатная БД – К3 (Кэтрин)
    #36564428
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirSiemargl, оно у вас windows-only? сомневаюсь, что вы поборетесь даже с экспресcом, не говоря уж о
Плин. Выяснил для себя, что сделанная часть жутко похожа на Berkeley DB, только на объектный лад. Опоздал на 15 лет '-((

Одно утешение - <Berkeley DB Transactional Store> стоит бешеных бабок для коммерческого использования - 5800$ на процессор.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36589905
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Развитие продолжилось. Сложилась полная идеология к окончательной реализации.

Несколько рекламных слов о нововведениях (дополнение к титульному посту):
2.\tRENEW Отсутствие необходимости «привязывать» сущности прикладной области к реляционным таблицам, или создания маппингов ORM;
8.\tRENEW.Работа с множествами связанных объектов. Поддержка объектов сложной структуры согласно JSON, со свойствами переменной длины – массивами и списками;
10.\tRENEW. Широкие возможности по оптимизации структуры хранения данных, индивидуальные настройки кэширования множеств и индексов.

Теперь немного к обсуждению, как сделать так, чтобы было удобно работать.
За постановку задачи взят древний спор и задачи о самолетах (упрощено согласно решениям SergSuper).

Решение на K3. (Код C++ слегка попорченный Вордом)
Структура базы по JSON
Код: plaintext
\nFly\n{\n\t“Type”:  “TU134”,\n\t“Class1placesNum”:  10 ,\n\t“Class2placesNum”:  120 ,\n           "FlyportAddress": {\n                "streetAddress": "Московское ш., 101, кв.101",\n                "city": "Ленинград",\n                "postalCode":  101101 \n           }\n}\n\nRace\n{\n\t“Fly”:  Fly:UID,\n\t“Date”: ’ 12 - 10 - 2001 ’,\n\t“Where”: ‘Anapa’,\n\t“Tickets”: [Ticket:UID]\n}\n\nTicket\n{\n\t“Race”:  Race:UID,\n\t“Class”:  1 ,\n\t“Count”:  3 ,\n\t“FIO”: “Petrovich A.A.”,\n\t“Flag”:  0 \n}\n

Реализация в Кэтрин
Код: plaintext
\nЗадача  1  (Задача  2  и  3  и с127. 1  аналогичны).\nПосчитать невыкупленные билеты на заданную дату и  маршрут.\n\nE3Race.ForEachKeyRange(“Date”,  Functor1,  “Novosib”, “ 10 - 10 - 2001 ”, “ 10 - 10 - 2001 ”);\n\nBool Functor1(k3obj* obj, void* param)\n{\n   K3Race* objRace = (K3Race*) obj; \n   Const Wchar_t *scity = (LPCSTR) param;\n   If (objRace->Where == scity)\n   {\n        Int Sum1Class = Sum2Class =  0 ;\n\t \n        For(objRace->Ticket::Iterator itt = objRace->Tickets.begin(); itt != objRace->Tickets->end();  itt++)\n        {\n            K3Ticket objTicket;\n            E3Ticket.Load(*itt, objTicket) ;\n            if( objTicket.Class =  1  && objTicket.Flag !=  1 ) Sum1Class++;\n            if( objTicket.Class =  2  && objTicket.Flag !=  1 ) Sum2Class++;\n        } \n        K3Fly objFly;\n        E3Fly.Load(objRace->Fly, objFly);\n        cout << objRace->UID << “  Fly:” << objFly.Type ;\n        cout  << “  Class1: ” << objFly.Class1placesNum - Sum1Class;\n        cout  << “  Class2: ” << objFly.Class2placesNum - Sum2Class;\n   }\n}\n\n\nЗадача  4  \nЗабронировать и выдать билет\n\nE3Race.Load(UID,  objRace);\nobjTicket = new Ticket(objRace.UID, ’ 15 - 02 - 2000 ’,  1 ,  3 , “Pupkin V.C.”,  0 );\nobjRace.Tickets.Insert(objTicket);\nE3Ticket.Save(objTicket);\nE3Race.Save( objRace);\nobjTicket.Flag =  1 ; // выдать билет\nE3Ticket.Save(objTicket);\n\n\nЗадача с127. 2 \n\nНомера рейсов, которые были в январе  2003  года, и на которые оставалось от  10  до  20  непроданных билетов включительно, но самолет не "TU 154" \nE3Race. ForEachKeyRange(“Date”,  Functor1,  "TU 154", “ 01 - 01 - 2003 ”, “ 31 - 01 - 2003 ”);\n\nBool Functor1(k3obj* obj, void* param)\n{\n    K3Race * objRace = (K3Race*) obj;\n    Const Wchar_t *sType = (LPCSTR) param;\n    K3Fly objFly;\n    E3Fly.Load(objRace->Fly, objFly);\n    If (objFly.Type != sType)\n    {\n        E3Ticket.Load(“Race=objRace”, lstTicket);\n        Int countSale =  0 ;\n        countSale  = count_if(lstTicket, FunctorCnt );\n        Int countFree = objFly.Class1placesNum + objFly.Class2placesNum - countSale;\n        If (countFree <=  10  && countFree >=  20 ) \n        Cout << objRace.UID;\n    }\n}\n\nBool FunctorCnt(UID uid)\n{\n   K3Ticket objTicket;\n   E3Ticket.Load(uid, objTicket);\n   Return objTicket.Flag ==  1 ;\n}\n
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36617750
cyclinder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сколько часов ушло на написание, какой щас размер кода?

пользоваться файловой системой для кэширования - ошибка, хуже только mmap всего образа в память, что особенно подмывает сделать на 64 битах
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36617770
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cyclinder,

Кода меньше 100Кб.

Скоро причешу да зарелизю в общий доступ, надоело уже писать.

А кэш что - есть и свой кэш, при желании в исходниках можно кэш системы выключить и погонять.
Все равно до больших СУБД, как до луны )
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36618681
cyclinder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неплохо уложились видать. у меня уже 200 и будет еще 200. :)

кстати не обязательно копировать интерфейс с++ итераторов - тут end-итератор не особо нужен как мне кажется
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36618682
cyclinder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Все равно до больших СУБД, как до луны )

ну ничего страшного. вон redis, mongodb и проч. неплохо себя чувствуют и их разрабы - тоже :)
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36618894
dedal-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не конкурент TJ7 - однозначно... Разработчики и производители выбирут именно TJ7!!!
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36620061
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дедал... Свали в туман. Тут ребята пытаются JSON-DB сделать. Оно надо - точно. Если еще и быстрое будет, то как embedded система будет очень даже ничего.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36620181
dedal-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarstoneДедал... Свали в туман. Тут ребята пытаются JSON-DB сделать. Оно надо - точно. Если еще и быстрое будет, то как embedded система будет очень даже ничего.Лучше FVMas не будет - это точно, так ак она быстрее, эффективнее, экономичнее и безопаснее... главное нормального программиста и всё!!! - но это в любом случае - важно :)
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36621657
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топикстартер, не обращайте внимание на юродивых.

По сабжу: Баиндинги куда-нибудь кроме Си планируются?
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36622247
dedal-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А поддержка формата TJ7 -будет? ибо без неё сфера применения данного драйвера - значительно сужается...
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36622571
Vinny the POOH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dedal-guest, сынок, не лезь сюда. Тут большие и серьёзные дяди развлекаются.. ещё и пристрелят ненароком...
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36648542
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фух. Релиз

Конечно пока без кое-чего запланированного.

В архиве - собранный демо пример с тестами и конечно, сырцы.

Как и обещано - транзакции поддержаны только на Viste - для XP демка нетранзакционная.

Студентам на курсовик хватит - с каждого такого по купюре с Эндрю Джексоном =)
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36649350
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил туда же описание системы с набросками будущих реализаций.

Вместо отсутствующей документации.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36649664
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть под никсы это портироваться не будет (легче новую БД написать)... Хотя в никсах с ее хардлинками можно такое навытворять...
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36649720
Vinny the POOH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warstone, автор же заявил, что его БД очень похожа на Berkley DB. Как я понял - это что-то вроде key - value хранилища. Под никсами их завались - тот же беркли, редиска, монго... А эта - мож и правда для курсача кому поможет =)
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36649740
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneТо есть под никсы это портироваться не будет (легче новую БД написать)... Хотя в никсах с ее хардлинками можно такое навытворять...
А что, в никсах есть транзакционное API для ФС?

Писать драйвера к другим языкам кроме с++ смысла нет. В Яве, и дотнете работу с объектами можно красивее сделать - проще переписать, а в дельфи другая идеология - там такие фокусы не очень нужны (кроме того, аналога STL там нет - будет коряво). Другие же языки - хз.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36649792
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vinny the POOH,

Key-value и объектная СУБД - несколько разные вещи. С объектами гораздо удобнее работать, когда структура сложнее POD'a.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36650099
opendsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl
С объектами гораздо удобнее работать, когда структура сложнее POD'a.

ACID + не-POD вызовут большие архитектурные проблемы:

http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82
Существует теорема, гласящая, что «Любой недетерминированный конечный автомат может быть преобразован в детерминированный так, чтобы их языки совпадали» (такие автоматы называются эквивалентными). Однако, поскольку количество состояний в эквивалентном ДКА в худшем случае растёт экспоненциально с ростом количества состояний исходного НКА, на практике подобная детерминизация не всегда возможна. Кроме того, конечные автоматы с выходом в общем случае не поддаются детерминизации.


В конечном итоге появится немерянное количество ограничений, несовместимых универсальностью массового использования,
или слишком сложным синтаксисом доступа и поддержки транзакционной целостности.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36650178
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА что, в никсах есть транзакционное API для ФС?

Писать драйвера к другим языкам кроме с++ смысла нет. В Яве, и дотнете работу с объектами можно красивее сделать - проще переписать, а в дельфи другая идеология - там такие фокусы не очень нужны (кроме того, аналога STL там нет - будет коряво). Другие же языки - хз.А вот не знаю... Не надо было никогда... Но 99%, что есть =))

Я-то про Перл думал... Но только в случае если будет Linux поддержка... Тогда перловые хеши - наше все.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36650213
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
opendsaSiemargl
С объектами гораздо удобнее работать, когда структура сложнее POD'a.

ACID + не-POD вызовут большие архитектурные проблемы:

http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82
Существует теорема, гласящая, что «Любой недетерминированный конечный автомат может быть преобразован в детерминированный так, чтобы их языки совпадали» (такие автоматы называются эквивалентными). Однако, поскольку количество состояний в эквивалентном ДКА в худшем случае растёт экспоненциально с ростом количества состояний исходного НКА, на практике подобная детерминизация не всегда возможна. Кроме того, конечные автоматы с выходом в общем случае не поддаются детерминизации.


В конечном итоге появится немерянное количество ограничений, несовместимых универсальностью массового использования,
или слишком сложным синтаксисом доступа и поддержки транзакционной целостности.
Слишком глубокая мысль - не понял =) Можно привести пример?

Под КА понимаем схему всей БД или хранимого объекта?

До целостности (непротиворечивости) схемы в целом, Катрин еще не доросла. Что касается единичных объектов любой сложностью структуры - пока проблемы не вижу.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36651043
opendsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl

Под КА понимаем схему всей БД или хранимого объекта?


Если это не-POD то разницы нет,
контейнер не-POD обьектов - есть не-POD объект.


Siemargl
До целостности (непротиворечивости) схемы в целом, Катрин еще не доросла. Что касается единичных объектов любой сложностью структуры - пока проблемы не вижу.


см выше , где разница между единичным не-POD и множестом обьектов внутри одного не -POD,
необходим ли ACID при доступ к разным элементам не-POD множества из разных сессий?
В каком состоянии при этом должен находиться не-POD контейнер ( владелец множества).
Как быть с пересекаемыми множествами, кто реальный хозяин обьектов ?

Как по мне то ACID нужен в любой точке, иначе теряется универсальность.
И главная задача архитектуры оповестить о попытке доступа всех хозяев обьектов
и спросить у них разрешения.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36651139
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
opendsa,

Это слишком глобальный подход ))

JSON структура проще. Линк
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36651146
opendsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При создании БД( хранения) мыслить нужно категориями множеств( типов, обьектов, свойств).
При планировании доступа на множества типов, обьектов, свойств накладывется ACID.

Иначе это не БД, а специализированное хранилище едеинчных обьектов ограниченного количества типов.


IMHO
И попытка хранить там обьекты других типов , а тем более множеств обьектов, кроме как к головной боли ни к чему не приведет.
...
Рейтинг: 0 / 0
Новая бесплатная БД – К3 (Кэтрин)
    #36651194
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneSiemarglА что, в никсах есть транзакционное API для ФС?А вот не знаю... Не надо было никогда... Но 99%, что есть =))

А вот нету. Не дорос еще Линух. - Я нашел только исследовательний проект TxOS. Возможно, что то появилось в ZFS, но я полное API не видел, и она все равно только для фри и солярки.
...
Рейтинг: 0 / 0
25 сообщений из 156, страница 3 из 7
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Новая бесплатная БД – К3 (Кэтрин)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]