упростил схему описания, несмотря на то, что для обслуживания нужен форк со спец комитом. зато стало похоже на то, как должно быть.
Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:
[Zo]class Px
public str : string
contains : List.[Px]
unsup : Dictionary.[string, object]
private cnt : int
class Y : Px
var1 : Var
cv : Dictionary.[Var, Var]
lv : list.[Var]
[Zno] count: int
Здравствуйте, _Claus_, Вы писали:
_C_>Для эффективной работы с вариантами в Zdb необходимо добавить атрибут Zv к объявлению. Без этого работа с вариантом будет строится как с неизвестным объектом, использующим стандартную .Net сериализацию.
_C_>>Для эффективной работы с вариантами в Zdb необходимо добавить атрибут Zv к объявлению. Без этого работа с вариантом будет строится как с неизвестным объектом, использующим стандартную .Net сериализацию.
C>Почему?
Эта операция добавляет поля и методы, может тебе это не надо. Второе — если используешь внешний вариант, он по любому сериализуемый.
И, при автомате модификации на внутрение варианты, будет непонимание, почему тут так, а здесь эдак (с внешними). Издержки автоматизма.
Супер. Проект интересный, но слишком уж объемный, имхо. До реального применения, как основной системы хранения работы очень много, на энтузиазме не вывезешь.
Кстати, в репозитарии надо удалить и заигнорить bin, obj, *.nsln. И прийти к какому-то решению в отношении tab/spaces. Ну и файл Macro1.n желательно переименовать.
Z>Супер. Проект интересный, но слишком уж объемный, имхо. До реального применения, как основной системы хранения работы очень много, на энтузиазме не вывезешь.
не понятно. чего не хватает как для встроенной субд?
Z>Кстати, в репозитарии надо удалить и заигнорить bin, obj, *.nsln. Ну и файл Macro1.n желательно переименовать.
сделаю.
Z>И прийти к какому-то решению в отношении tab/spaces.
что за решение?
Здравствуйте, _Claus_, Вы писали:
_C_>не понятно. чего не хватает как для встроенной субд?
Целевое применение какое? Для хранения бизнесданных требуется durability. Которую обеспечить совсем не дешево.
Z>>И прийти к какому-то решению в отношении tab/spaces. _C_>что за решение?
Отступы. Я мельком смотрел код, там частично пробелы, частично табы, читать на гитхабе неудобно.
Z>Целевое применение какое?
когда сериализация уже не проходит. из-за объема данных, структуры. а другие СУБД оказываются слишком медленными.
+ распределение данных в разных базах — свойство уникальное (других не видал).
для этого и писано. иначе использовал бы готовое.
Z>Для хранения бизнесданных требуется durability. Которую обеспечить совсем не дешево.
При желании можно добавить-держать всю историю коммитов для любых откатов.
только работая внутри .Net — все на честном слове. записало оно реально или закешировало — пойди погадай.
Z>Отступы. Я мельком смотрел код, там частично пробелы, частично табы, читать на гитхабе неудобно.
Это уже глюк студии. В настройках выставлено пробелы, но проверю.
Здравствуйте, _Claus_, Вы писали:
kl>>Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..
_C_> инглиш я слабо. к стати субд как раз под твои интересы делалась. коллеги практически.
У нас тут были мастаки в инглише, может они отзовутся? Все таки новый проект хорошо поддержать, не так много их на Н.
На всякий пожарный можешь попробовать гугл или какой нить онлайн транслит, а я со своим средним техническим английским могу подпилить текст, чтобы он был похож на настоящий. Твое последнее письмо я тоже рассмотрю, просто времени мало могу и это тоже в порядке очереди.
в коде Zdb есть несколько мест, которые, в силу моего незнания некоторых вещей, написаны плохо.
буду признателен за советы по улучшению как этого, так и других обнаруженных неоптимальных и некрасивых кусков.
Здравствуйте, kl, Вы писали:
kl>Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..
Проблема не только в английском — там и по-русски мрак. Проект начинается с фразы "Zdb предназначена для замены стандартной сериализации в следующих случаях:", ТАК описания не пишут. Никому не надо "заменять сериализацию", людям нужно конкретное назначение проекта с краткими и наиболее важными фичами. Перепишете — могу помочь перевести на более-менее уличный инглиш
M>Проблема не только в английском — там и по-русски мрак. Проект начинается с фразы "Zdb предназначена для замены стандартной сериализации в следующих случаях:", ТАК описания не пишут. Никому не надо "заменять сериализацию", людям нужно конкретное назначение проекта с краткими и наиболее важными фичами. Перепишете — могу помочь перевести на более-менее уличный инглиш
Здравствуйте, _Claus_, Вы писали:
_C_>Ваши предложения — что писать?
Главную цель/суть проекта. Желательно без опусканий в тех.детали. Можно с парой примеров, опять же — высокоуроневых задач.
Например, если кто-то написал компрессор на основе LZW, он же не пишет "это функция для взаимообратного преобразования множеств в меньшее по мощности"! Пишется просто: "Утилита для сжатия файлов". Если вам поможет, есть такое выражение: "За деревьями не видно леса".
M>Главную цель/суть проекта. Желательно без опусканий в тех.детали. Можно с парой примеров, опять же — высокоуроневых задач.
я не хотел бы грузить читателей своими задачами. они у меня слишком специфические. мысль была такая — пиши как раньше.
M>Например, если кто-то написал компрессор на основе LZW, он же не пишет "это функция для взаимообратного преобразования множеств в меньшее по мощности"! Пишется просто: "Утилита для сжатия файлов". Если вам поможет, есть такое выражение: "За деревьями не видно леса".
я "за" хороший урок русской словесности. там wiki. правь на свое усмотрение. если получится лучше — моё тебе респект.
слабо понимаю, зачем оно написано.
Это СУБД? Хранилка конфигов? Просто хранилище кучи объектов? Распределённая до какой степени? Как дела с синхронизацией? Требования к узлам-хранилищам? Почему 15 баз в кластере, это что-то принципиальное? К чему оптимизирована система — к записи, чтению, многоуровневым транзакциям? Что такое "множественные атомарные чтения" и в каких задачах это проявляется?
Т.е. сам видишь, из технических особенностей описание не состряпаешь — не поймут. Плюс, на фоне NoSQL придётся как-то объясняться — чем ZED лучше/хуже.
Ещё один афоризм: "Кто ясно мыслит, тот ясно излагает". Это не упрёк, ты наверное просто поторопился блеснуть фичами, но забыл куда этот паровоз должен ехать.
написано для замены сериализации. Если программа оперирует большим объемом данных в монопольном режиме.
M>Это СУБД? Хранилка конфигов? Просто хранилище кучи объектов? Распределённая до какой степени? Как дела с синхронизацией?
СУБД. монопольный режим. сервер.
M>Требования к узлам-хранилищам? Почему 15 баз в кластере, это что-то принципиальное?
надо было эффективно упаковать адрес в 32 бита. родилось такое ограничение.
M>К чему оптимизирована система — к записи, чтению, многоуровневым транзакциям? Что такое "множественные атомарные чтения" и в каких задачах это проявляется?
главная фича — скорость. когда NoSQL не пролазит. это задачи обработки сетей, графов, нейросетей, имеющие размер для решения практических задач. многоуровневые транзакции — такого просто не знаю.
многоуровневые данные — понимаю, и для этого как раз и написано.
M>Т.е. сам видишь, из технических особенностей описание не состряпаешь — не поймут. Плюс, на фоне NoSQL придётся как-то объясняться — чем ZED лучше/хуже. M>Ещё один афоризм: "Кто ясно мыслит, тот ясно излагает". Это не упрёк, ты наверное просто поторопился блеснуть фичами, но забыл куда этот паровоз должен ехать.
я простой украинский метапрограммист. даже не из Meta Systems. пишу доки как получается. повторюсь — цель разработки, чтобы ничего лишнего не писать по сравнению с обычным .Net кодом, кроме префиксов полей.
P.S. Специально снабдил код комментами, чтобы заинтересованные люди при желании сами или с моей помощью могли решить свои задачи.
Здравствуйте, _Claus_, Вы писали:
_C_>главная фича — скорость. когда NoSQL не пролазит. это задачи обработки сетей, графов, нейросетей, имеющие размер для решения практических задач. многоуровневые транзакции — такого просто не знаю. _C_>многоуровневые данные — понимаю, и для этого как раз и написано.
А как планируется реализация запроссов к такой базе?
Просто перебор дерева начиная с рута и углубляясь будет не очень эффективным (прийдется тянуть объекты с файла в кучу)
PS. а вот для такой задачи очень пригодился бы "небезопастный код" в безопастном контексте макроссов.
(Я имею в виду работу с Memory Mapped файлами, и мапить их напрямую насвойства объектов) Сам думал нечто подобное писать, но с отствуием ансейфа подумал что нет смисла.
PS. надо будет найти время, чтобы разобратся с этим кодом
BM>А как планируется реализация запроссов к такой базе?
запросы в данной реализации пишутся как обычно через Linq к поднятым коллекциям-контейтерам.
BM>Просто перебор дерева начиная с рута и углубляясь будет не очень эффективным (прийдется тянуть объекты с файла в кучу)
знаю. большие стандартные коллекции в базе — абсолютно неоптимально. она вся считывается. и при незначительной модификации вся записывается.
поэтому ессно нужно специализированные коллекции, которые хочу написать, но текущая реализация N этого не позволяет.
если наши переговоры с ConingUnit закончатся успехом по поводу макротипов — все будет умно и красиво. с помощью специализированных
List, Dictionaonary, Hash, .. а пока ничего лучшего предложить не могу — реализация N не позволяет.
BM>PS. надо будет найти время, чтобы разобратся с этим кодом
Здравствуйте, BogdanMart, Вы писали:
BM>Здравствуйте, _Claus_, Вы писали:
_C_>> ZT str : string _C_>> ZT contains : List.[Px] _C_>> Zs unsup : Dictionary.[string, object]
BM>зачем такие выкрутасы?
BM>Предлагаю использовать следующий алгоритм:
BM>1)Если поле является Persist классом -- использовать свой алгоритм BM>2)Если является сериалиуемім -- использовать BInForamtter BM>3)выдать ошибку
BM>и того нет ошибок и все работает и какраньше (ибо сомниваюсь что єти персист классі будут сериализуемыми)
BM>ПС. проект интересный, просто возникает небольшая критика)
критика не пугает, разумные мысли приветствуются.
Делай я это в Boo, все так бы и было. но предвидел замечание, что автомат (без предупреждений), не позволяет понять,
какой выбор сделан. а разница в производительности и поддержке того и другого существенно отличается.
могу предложить добавить третий тип — Zx — который будет так себя вести. и отдать на усмотрение пользователя.
хочет автомат без всяких предупреждений- пишет Zx и отдает на усмотрение Zdb. тогда и любители строгости будут
удовлетворены, и простоты.
хотел бы так, но в описании класса невозможно менять поля — простое на свойство.
если компилятор позволял бы, это бы было. а когда префикс, то макрос перехватывает до
формирования поля. увы.
Здравствуйте, _Claus_, Вы писали:
_C_>Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:
Только один вопрос. А Zo — это что бы никто не догадался?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _Claus_, Вы писали:
_C_>>Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:
VD>Только один вопрос. А Zo — это что бы никто не догадался?
Здравствуйте, _Claus_, Вы писали:
_C_>Здравствуйте, VladD2, Вы писали:
VD>>Здравствуйте, _Claus_, Вы писали:
_C_>>>Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:
VD>>Только один вопрос. А Zo — это что бы никто не догадался?
_C_>Zo[bject], а что, есть вариант лучше?