Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 31.01.12 21:47
Оценка: 81 (6)
#Имя: FAQ.nemerle.ZenEmbeddedDatabase
Описание

Проект
Re: Zen Embedded Database for Nemerle
От: catbert  
Дата: 31.01.12 22:14
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Для эффективной работы с вариантами в Zdb необходимо добавить атрибут Zv к объявлению. Без этого работа с вариантом будет строится как с неизвестным объектом, использующим стандартную .Net сериализацию.


Почему?
Re[2]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 31.01.12 22:27
Оценка:
_C_>>Для эффективной работы с вариантами в Zdb необходимо добавить атрибут Zv к объявлению. Без этого работа с вариантом будет строится как с неизвестным объектом, использующим стандартную .Net сериализацию.

C>Почему?


Эта операция добавляет поля и методы, может тебе это не надо. Второе — если используешь внешний вариант, он по любому сериализуемый.
И, при автомате модификации на внутрение варианты, будет непонимание, почему тут так, а здесь эдак (с внешними). Издержки автоматизма.
Re: Zen Embedded Database for Nemerle
От: Ziaw Россия  
Дата: 01.02.12 04:49
Оценка:
Здравствуйте, _Claus_, Вы писали:

Супер. Проект интересный, но слишком уж объемный, имхо. До реального применения, как основной системы хранения работы очень много, на энтузиазме не вывезешь.

Кстати, в репозитарии надо удалить и заигнорить bin, obj, *.nsln. И прийти к какому-то решению в отношении tab/spaces. Ну и файл Macro1.n желательно переименовать.
Re[2]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 01.02.12 10:35
Оценка:
Z>Супер. Проект интересный, но слишком уж объемный, имхо. До реального применения, как основной системы хранения работы очень много, на энтузиазме не вывезешь.
не понятно. чего не хватает как для встроенной субд?

Z>Кстати, в репозитарии надо удалить и заигнорить bin, obj, *.nsln. Ну и файл Macro1.n желательно переименовать.


сделаю.

Z>И прийти к какому-то решению в отношении tab/spaces.

что за решение?
Re[3]: Zen Embedded Database for Nemerle
От: Ziaw Россия  
Дата: 01.02.12 13:54
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>не понятно. чего не хватает как для встроенной субд?


Целевое применение какое? Для хранения бизнесданных требуется durability. Которую обеспечить совсем не дешево.

Z>>И прийти к какому-то решению в отношении tab/spaces.

_C_>что за решение?

Отступы. Я мельком смотрел код, там частично пробелы, частично табы, читать на гитхабе неудобно.
Re[4]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 01.02.12 15:30
Оценка:
Z>Целевое применение какое?
когда сериализация уже не проходит. из-за объема данных, структуры. а другие СУБД оказываются слишком медленными.
+ распределение данных в разных базах — свойство уникальное (других не видал).
для этого и писано. иначе использовал бы готовое.

Z>Для хранения бизнесданных требуется durability. Которую обеспечить совсем не дешево.


При желании можно добавить-держать всю историю коммитов для любых откатов.
только работая внутри .Net — все на честном слове. записало оно реально или закешировало — пойди погадай.


Z>Отступы. Я мельком смотрел код, там частично пробелы, частично табы, читать на гитхабе неудобно.


Это уже глюк студии. В настройках выставлено пробелы, но проверю.
Re: Zen Embedded Database for Nemerle
От: kl Германия http://stardog.com
Дата: 01.02.12 17:00
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Описание


_C_>Проект


Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..
no fate but what we make
Re[2]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 01.02.12 18:14
Оценка:
kl>Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..

инглиш я слабо. к стати субд как раз под твои интересы делалась. коллеги практически.
Re[3]: Zen Embedded Database for Nemerle
От: CodingUnit Россия  
Дата: 01.02.12 18:50
Оценка:
Здравствуйте, _Claus_, Вы писали:

kl>>Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..


_C_> инглиш я слабо. к стати субд как раз под твои интересы делалась. коллеги практически.


У нас тут были мастаки в инглише, может они отзовутся? Все таки новый проект хорошо поддержать, не так много их на Н.
На всякий пожарный можешь попробовать гугл или какой нить онлайн транслит, а я со своим средним техническим английским могу подпилить текст, чтобы он был похож на настоящий. Твое последнее письмо я тоже рассмотрю, просто времени мало могу и это тоже в порядке очереди.
Re[3]: Zen Embedded Database for Nemerle
От: kl Германия http://stardog.com
Дата: 01.02.12 19:06
Оценка:
Здравствуйте, _Claus_, Вы писали:

kl>>Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..


_C_> инглиш я слабо.


Я могу с этим помочь, может на ближайших выходных (если будет время).

_C_> к стати субд как раз под твои интересы делалась. коллеги практически.


Мои интересы? А какие у меня интересы? Ты меня ни с кем не путаешь? =)
no fate but what we make
Re[4]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 01.02.12 19:35
Оценка:
kl>Мои интересы? А какие у меня интересы? Ты меня ни с кем не путаешь? =)

если ты от балды написал раздел Специализация, тогда путаю
Re: Zen Embedded Database for Nemerle
От: BogdanMart Украина  
Дата: 05.02.12 20:46
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Состояние БД на диске не изменяется до вызова Zdb.Commit()


Я так понял транзакция одна наа све плиложение, независимо от потоков?
Re[2]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 05.02.12 21:13
Оценка:
_C_>>Состояние БД на диске не изменяется до вызова Zdb.Commit()

BM>Я так понял транзакция одна наа све плиложение, независимо от потоков?


да.
Re: полировка кода
От: _Claus_  
Дата: 06.02.12 21:13
Оценка:
в коде Zdb есть несколько мест, которые, в силу моего незнания некоторых вещей, написаны плохо.
буду признателен за советы по улучшению как этого, так и других обнаруженных неоптимальных и некрасивых кусков.

одно из них в https://github.com/Claus1/Zdb/blob/master/DBLib/DBLib/ClassFormer.n :


foreach(member in ty.GetParsedMembers())
          match (member)
            | ClassMember.Field(name = n, ty = t) =>
                def nstr = $"$n"
                
                def fld = FieldFormer(ty, Macros.UseSiteSymbol(nstr), t, member.Location, tp)
                
                fld.Proccess()
                
                def nstr_ = $"__$(nstr)__"
                
                unless(fld.error_found)          
                  
                  save_block ::= <[ $(fld.save_block) ]> 
                  
                  load_block ::= <[
                  
                    $(nstr_ : usesite) : 
                    {                    
                      mutable $(nstr : usesite);
                      
                      $(fld.load_block); 
                      
                      $(nstr : usesite)
                    }]>                  
                    
            | _ => {}


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

но вот почему имя блока не может быть _ ? мне бы не пришлось это выдумывать. блок я использовал потому что на несколько букв меньше, чем функция.
Re[2]: Zen Embedded Database for Nemerle
От: matumba  
Дата: 07.02.12 12:12
Оценка:
Здравствуйте, kl, Вы писали:

kl>Хотел порекламировать в твиттере, но к сожалению страничка только на русском Перевести бы..


Проблема не только в английском — там и по-русски мрак. Проект начинается с фразы "Zdb предназначена для замены стандартной сериализации в следующих случаях:", ТАК описания не пишут. Никому не надо "заменять сериализацию", людям нужно конкретное назначение проекта с краткими и наиболее важными фичами. Перепишете — могу помочь перевести на более-менее уличный инглиш
Re[3]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 07.02.12 12:28
Оценка:
M>Проблема не только в английском — там и по-русски мрак. Проект начинается с фразы "Zdb предназначена для замены стандартной сериализации в следующих случаях:", ТАК описания не пишут. Никому не надо "заменять сериализацию", людям нужно конкретное назначение проекта с краткими и наиболее важными фичами. Перепишете — могу помочь перевести на более-менее уличный инглиш

Ваши предложения — что писать?
Re[4]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 07.02.12 12:29
Оценка:
_C_>Ваши предложения — что писать?

а то боюсь, не угадаю
Re[4]: Zen Embedded Database for Nemerle
От: matumba  
Дата: 07.02.12 14:49
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Ваши предложения — что писать?


Главную цель/суть проекта. Желательно без опусканий в тех.детали. Можно с парой примеров, опять же — высокоуроневых задач.

Например, если кто-то написал компрессор на основе LZW, он же не пишет "это функция для взаимообратного преобразования множеств в меньшее по мощности"! Пишется просто: "Утилита для сжатия файлов". Если вам поможет, есть такое выражение: "За деревьями не видно леса".
Re[5]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 07.02.12 17:22
Оценка:
M>Главную цель/суть проекта. Желательно без опусканий в тех.детали. Можно с парой примеров, опять же — высокоуроневых задач.

я не хотел бы грузить читателей своими задачами. они у меня слишком специфические. мысль была такая — пиши как раньше.

M>Например, если кто-то написал компрессор на основе LZW, он же не пишет "это функция для взаимообратного преобразования множеств в меньшее по мощности"! Пишется просто: "Утилита для сжатия файлов". Если вам поможет, есть такое выражение: "За деревьями не видно леса".


я "за" хороший урок русской словесности. там wiki. правь на свое усмотрение. если получится лучше — моё тебе респект.
Re[6]: Zen Embedded Database for Nemerle
От: matumba  
Дата: 07.02.12 18:09
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>я не хотел бы грузить читателей своими задачами. они у меня слишком специфические.


эээ... да не проектами грузить, а задачами, которые может решать этот ZED! Я даже после этого
Автор: _Claus_
Дата: 01.02.12
слабо понимаю, зачем оно написано.
Это СУБД? Хранилка конфигов? Просто хранилище кучи объектов? Распределённая до какой степени? Как дела с синхронизацией? Требования к узлам-хранилищам? Почему 15 баз в кластере, это что-то принципиальное? К чему оптимизирована система — к записи, чтению, многоуровневым транзакциям? Что такое "множественные атомарные чтения" и в каких задачах это проявляется?

Т.е. сам видишь, из технических особенностей описание не состряпаешь — не поймут. Плюс, на фоне NoSQL придётся как-то объясняться — чем ZED лучше/хуже.
Ещё один афоризм: "Кто ясно мыслит, тот ясно излагает". Это не упрёк, ты наверное просто поторопился блеснуть фичами, но забыл куда этот паровоз должен ехать.
Re[7]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 07.02.12 19:04
Оценка:
M> Я даже после этого
Автор: _Claus_
Дата: 01.02.12
слабо понимаю, зачем оно написано.


написано для замены сериализации. Если программа оперирует большим объемом данных в монопольном режиме.

M>Это СУБД? Хранилка конфигов? Просто хранилище кучи объектов? Распределённая до какой степени? Как дела с синхронизацией?


СУБД. монопольный режим. сервер.

M>Требования к узлам-хранилищам? Почему 15 баз в кластере, это что-то принципиальное?


надо было эффективно упаковать адрес в 32 бита. родилось такое ограничение.

M>К чему оптимизирована система — к записи, чтению, многоуровневым транзакциям? Что такое "множественные атомарные чтения" и в каких задачах это проявляется?


главная фича — скорость. когда NoSQL не пролазит. это задачи обработки сетей, графов, нейросетей, имеющие размер для решения практических задач. многоуровневые транзакции — такого просто не знаю.
многоуровневые данные — понимаю, и для этого как раз и написано.

M>Т.е. сам видишь, из технических особенностей описание не состряпаешь — не поймут. Плюс, на фоне NoSQL придётся как-то объясняться — чем ZED лучше/хуже.

M>Ещё один афоризм: "Кто ясно мыслит, тот ясно излагает". Это не упрёк, ты наверное просто поторопился блеснуть фичами, но забыл куда этот паровоз должен ехать.

я простой украинский метапрограммист. даже не из Meta Systems. пишу доки как получается. повторюсь — цель разработки, чтобы ничего лишнего не писать по сравнению с обычным .Net кодом, кроме префиксов полей.

P.S. Специально снабдил код комментами, чтобы заинтересованные люди при желании сами или с моей помощью могли решить свои задачи.
Re[8]: Zen Embedded Database for Nemerle
От: BogdanMart Украина  
Дата: 07.02.12 22:45
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>главная фича — скорость. когда NoSQL не пролазит. это задачи обработки сетей, графов, нейросетей, имеющие размер для решения практических задач. многоуровневые транзакции — такого просто не знаю.

_C_>многоуровневые данные — понимаю, и для этого как раз и написано.


А как планируется реализация запроссов к такой базе?
Просто перебор дерева начиная с рута и углубляясь будет не очень эффективным (прийдется тянуть объекты с файла в кучу)


PS. а вот для такой задачи очень пригодился бы "небезопастный код" в безопастном контексте макроссов.
(Я имею в виду работу с Memory Mapped файлами, и мапить их напрямую насвойства объектов) Сам думал нечто подобное писать, но с отствуием ансейфа подумал что нет смисла.


PS. надо будет найти время, чтобы разобратся с этим кодом
Re: Zen Embedded Database for Nemerle
От: BogdanMart Украина  
Дата: 07.02.12 22:50
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_> ZT str : string

_C_> ZT contains : List.[Px]
_C_> Zs unsup : Dictionary.[string, object]

зачем такие выкрутасы?

Предлагаю использовать следующий алгоритм:

1)Если поле является Persist классом -- использовать свой алгоритм
2)Если является сериалиуемім -- использовать BInForamtter
3)выдать ошибку

и того нет ошибок и все работает и какраньше (ибо сомниваюсь что єти персист классі будут сериализуемыми)

А уровень видимости можно брать с самой пропорты/филда.

ПС. проект интересный, просто возникает небольшая критика)
Re[9]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 07.02.12 23:03
Оценка:
BM>А как планируется реализация запроссов к такой базе?

запросы в данной реализации пишутся как обычно через Linq к поднятым коллекциям-контейтерам.

BM>Просто перебор дерева начиная с рута и углубляясь будет не очень эффективным (прийдется тянуть объекты с файла в кучу)


знаю. большие стандартные коллекции в базе — абсолютно неоптимально. она вся считывается. и при незначительной модификации вся записывается.
поэтому ессно нужно специализированные коллекции, которые хочу написать, но текущая реализация N этого не позволяет.
если наши переговоры с ConingUnit закончатся успехом по поводу макротипов — все будет умно и красиво. с помощью специализированных
List, Dictionaonary, Hash, .. а пока ничего лучшего предложить не могу — реализация N не позволяет.

BM>PS. надо будет найти время, чтобы разобратся с этим кодом


аналогично хочу довести до ума свои идейки под N
Re[2]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 08.02.12 15:03
Оценка:
Здравствуйте, 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. тогда и любители строгости будут
удовлетворены, и простоты.
Re[2]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 08.02.12 18:25
Оценка:
BM>А уровень видимости можно брать с самой пропорты/филда.

это не работает. компилятор не пропускает

Zt public x: int

поэтому выходит, что только так.
Re[3]: Zen Embedded Database for Nemerle
От: BogdanMart Украина  
Дата: 08.02.12 20:09
Оценка:
Здравствуйте, _Claus_, Вы писали:
_C_>это не работает. компилятор не пропускает
_C_>Zt public x: int
_C_>поэтому выходит, что только так.

а так:


[Persist]
class Cls
   public x : int;



?


просто не хочется писать лишний код..)
Re[4]: Zen Embedded Database for Nemerle
От: _Claus_  
Дата: 08.02.12 21:51
Оценка:
BM>просто не хочется писать лишний код..)

хотел бы так, но в описании класса невозможно менять поля — простое на свойство.
если компилятор позволял бы, это бы было. а когда префикс, то макрос перехватывает до
формирования поля. увы.
Re: v 0.2
От: _Claus_  
Дата: 13.05.12 20:13
Оценка: 150 (1)
упростил схему описания, несмотря на то, что для обслуживания нужен форк со спец комитом. зато стало похоже на то, как должно быть.

Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [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


подробности здесь
Re[2]: v 0.2
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.05.12 20:17
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:


Только один вопрос. А Zo — это что бы никто не догадался?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: v 0.2
От: _Claus_  
Дата: 13.05.12 20:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Claus_, Вы писали:


_C_>>Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:


VD>Только один вопрос. А Zo — это что бы никто не догадался?


Zo[bject], а что, есть вариант лучше?
Re[4]: v 0.2
От: QrystaL Украина  
Дата: 14.05.12 07:12
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>Здравствуйте, VladD2, Вы писали:


VD>>Здравствуйте, _Claus_, Вы писали:


_C_>>>Использование. Рутовые сохраняемые классы должны быть помечены атрибутом [Zo], все наследники автоматически становятся сохраняемыми. При описании полей класса можно использовать атрибут [Zno] (временное поле). Описание сохраняемых (Persist) классов:


VD>>Только один вопрос. А Zo — это что бы никто не догадался?


_C_>Zo[bject], а что, есть вариант лучше?


Да, ZObject
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.