powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Что же главное в Cache?
418 сообщений из 418, показаны все 17 страниц
Что же главное в Cache?
    #34050338
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочется поинтересоваться у многоуважаемых приверженцев Cache.

Насколько я понял, Cache хранит данные в виде сложной структуры, отражающей понятие MUMPS-глобальных переменных и позволяет иметь к этим данным доступ через несколько интерфейсов - иерархический доступ (реализованный в MUMPS), SQL-доступ, объектный доступ.

Хочется узнать, а что из этого и в каких случаях реально применяется в сколько-нибудь масштабных приложениях? Т.е. понятно, что если я пишу разовую выборку, то в зависимости от конкретной задачи самой удобной может оказатьбся каждая из перечисленных моделей.

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

/topic/54920&pg=12#2406070

следует, что даже приделывание простого индекса к базе требует весьма существенной переработки MUMPS-программы. А как с этим обстоит дело в других случаях?

Какие еще типичиные особенности приложений бывают, от которых зависит выбор одной из трех моделей? Какие примеры выбора одного из способов доступа или какой-то их комбинации в реальных системах вы можете привести?
Интересно было бы также узнать, почему эти методы используются в этих системах - к примеру то, что некоторая больница в США использует MUMPS может означать как то, что MUMPS был признан лучшим решением, так и то, что эту больницу компьютеризовали в 70-е годы и с тех пор она не изменила используемые технологии...

Заранее спасибо
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34050601
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey GladilinХочется узнать, а что из этого и в каких случаях реально применяется в сколько-нибудь масштабных приложениях?

следует, что даже приделывание простого индекса к базе требует весьма существенной переработки MUMPS-программы.
В случаях когда предполагается что приложение будет меняться это обстоятельство учитывают и пишут себе небольшой нижний уровень. Большинство индексных структур допускают их использование в различных задачах. Поэтому сначала разработчик подумает, использовать ли специализированные индексы применимые в малом числе задач но работающие быстрее или более общие структуры и несколько функций-операций над индексами но работающие чуть медленнее. Потом проведет макетирование подходит ли выбранный метод под предъявленные требования по времени работы. Чем больше система тем обычно по структуре она ближе к таблицам похожим на sql таблицы. В SQL есть чисто языковые ограничения, например нельзя строить индекс не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса. Поэтому обычно ни SQL ни объекты в полной мере разработчиков не удовлетворяют.

SQL и объектный доступ в каше реализованы на mumps. Это вроде описанных выше библиотек. Если в объектном доступе пишут в объектном синтаксисе, то в sql доступе пишут (так называемые) запросы, которые транслируются в те же вызовы нижнего уровня на mumps. В принципе, никто не мешает программисту написать свои библиотеки в своем видении проблемы. В том числе с ведением так называемых метаданных и автоматической корректировкой выполнения. Хоть QBE. Можно также написать свои классы которые будут реализовать свои стратегии хранения.

Однозначного ответа на вопрос "как делают" наверно не смогу дать - в разных системах разработчики могут выбрать разные методы. Иногда проще потратить месяц-другой на свой нижний уровень чем два-три года морочить голову как реализовать эффективно на штатных средствах. Иногда более чем достаточно штатных средств.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051055
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже интересно ;-)
Для начала вопрос насчет того, что "в SQL есть чисто языковые ограничения, например нельзя строить индекс не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса" - наложение индексов на view - это не то, что надо?

Далее, насколько я понял основную суть ответа, - Вас не удовлетворяет подход к организации базы данных, заключающийся в использовании непроцедурного языка запросов - вместо этого Вы предпочитаете использовать процедурный язык, позволяющйи на низком уровне высокоэффективно копаться в отдельных данных, находящихся в базе?

Тогда сразу вопрос - как соотносится процедурный язык с реализацией "клиент-сервер"? MUMPS-программа, реализующая интерфейс с пользователем, работает на машине клиента. Она сама лазает внутрь файла на сервере, в котором физически лежит база данных, или для этого есть серверная часть приложения?
- Если есть серверная часть, то какой используется протокол обмена?
- Если идет обращение к файлу, то какой же объем данных передается по сети при сколько-нибудь сложном поиске в базе?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051387
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilinналожение индексов на view - это не то, что надо?
Это специфика имплементации.

Sergey GladilinДалее, насколько я понял основную суть ответа, - Вас не удовлетворяет подход к организации базы данных, заключающийся в использовании непроцедурного языка запросов - вместо этого Вы предпочитаете использовать процедурный язык, позволяющйи на низком уровне высокоэффективно копаться в отдельных данных, находящихся в базе?
Не совсем так. Меня удовлетворяет любой подход решающий задачу в том числе с учетом дальнейших перспектив изменений. А будет результат процедурным или нет - это вторично.

Sergey GladilinТогда сразу вопрос - как соотносится процедурный язык с реализацией "клиент-сервер"? MUMPS-программа, реализующая интерфейс с пользователем, работает на машине клиента. Она сама лазает внутрь файла на сервере, в котором физически лежит база данных, или для этого есть серверная часть приложения?
- Если есть серверная часть, то какой используется протокол обмена?
- Если идет обращение к файлу, то какой же объем данных передается по сети при сколько-нибудь сложном поиске в базе?
Нет. То что написано на mumps - это на стороне сервера. Программа не лазает внутрь файла, это делает интерпретатор, когда выполняет обращение к глобалам (то что начинается на ^). База также не обязана лежать на том же сервере где исполняется серверный процесс, данные могут быть там же, на другом сервере или часть там часть здесь (детали зависят от имплементации). Протокол обмена зависит от коннекта и вида клиентского приложения. Можно телнетом, можно вебом, можно частный поверх tcp/ip. Телнет очевидно не будет работать по http, а вебсервис по телнету, логично? Сколько передается по сети - опять же смотря что за приложение. Непример при работе по телнет по сети передаются байты соответствующие нажатию кнопок, а обратно от сервера - эскейп команды. Если это дельфи - клиент, то туда параметры запроса, оттуда - строки в грид например.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051425
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey GladilinУже интересно ;-)
Тогда сразу вопрос - как соотносится процедурный язык с реализацией "клиент-сервер"? MUMPS-программа, реализующая интерфейс с пользователем, работает на машине клиента. Она сама лазает внутрь файла на сервере, в котором физически лежит база данных, или для этого есть серверная часть приложения?
- Если есть серверная часть, то какой используется протокол обмена?
- Если идет обращение к файлу, то какой же объем данных передается по сети при сколько-нибудь сложном поиске в базе?

например - у нас на клиентах нет MUMPS - только EXCEL+VBA
(VBA - раз написан и не изменяется - у всех одинаковый)

сетевой трафик = только запросы и готовые ответы
притом ответы даже без элементов форматирования - одни цифры
меньше этого трафика трудно представить
все летает - но документы оформлены - красота
многоязычно-многооконно-интерактивно
автоподстройка перекодировочных таблиц на лету
TCP/IP
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051587
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Cache главное то - чего нет у других.
Другие это те - с чем пытаются сравнивать Cache.
Кстати, сравнивают совершенно безграмотно (с точки зрения Cache).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051590
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это специфика имплементации
Поясните, пожалуйста, что имеется в виду. Решает ли наложение индексов на view проблему построения индекса, который "не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса" ?

Не совсем так. Меня удовлетворяет любой подход решающий задачу в том числе с учетом дальнейших перспектив изменений. А будет результат процедурным или нет - это вторично.
Расскажите, пожалуйста, чем, кроме как процедурностью (в смысле возможности и необходимости самому выбирать от какого к какому узлу базы перейти и как таким образом организовать в базе поиск) M-системы отличаются от SQL-систем.

База также не обязана лежать на том же сервере где исполняется серверный процесс, данные могут быть там же, на другом сервере или часть там часть здесь (детали зависят от имплементации)
Т.е. внутри M-системы таки есть свой фиксированный протокол запросов между MUMPS-интерпретатором и собственно сервером? Можно ли его использовать, если клиент написан на MUMPS?

Вопрос и к "ну я" и к MC--ALEX - запросы и ответы, передаваемые по сети, в Вашей системе насколько сложны? Действительно ли разработка своего языка/протокола запросов и ответов имеет преимущества перед использованием стандартного языка вопросов и ответов SQL?

Сразу хотел бы также задать вопрос про производительность. Вот здесь:

/topic/54920&pg=3#396080

"ну я" предлагает задачу, демонстрирующую случай, когда M-системы имеют значительное преимущество в производительности перед SQL. В ответах в той ветке я так и не нашел объяснений, почему это происходит. Можете ли Вы рассказать, каким образом в данной задаче можно организовать хранение данных в MUMPS и каким образом организуется поиск в этой структуре данных для обеспечения указанной производительности?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051604
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBВ Cache главное то - чего нет у других.
Другие это те - с чем пытаются сравнивать Cache.
Кстати, сравнивают совершенно безграмотно (с точки зрения Cache).
Т.е. я неправ, считая наличие прямого доступа к иерархической структуре данных в базе основным отличием Cache от других систем? Расскажите, пожалуйста, какие отличия я забыл?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051747
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работая более 16 лет с М-технологией (MUMPS->Cache), мне до сих пор трудно сказать - что же в этой технологии является самым главным.
Лучше сказать что для меня является важным.

Например для меня важно то, что я могу напрямую связываться с внешними устройствами по Com портам, без всяких надстроек, напрямую из кода программы написанной на CacheObjectScript. Т.е. я могу писать свои драйвера устройств.

Для меня важно, что я могу легко и просто перенаправлять входные и выходные потоки на различные стандартные устройства, причем на лету.

Для меня важно, что я могу порождать различные фоновые процессы, и те, работая по довольно таки сложным мной определяемым алгоритмам (уровень С++, а может и выше) легко и просто обмениваются информацией между собой и интерактивными процессами. Кроме того, они сами (процессы) могут порождать себе подобные, координировать работу между собой и т.д.

Для меня важно, что можно исполнять такие алгоритмы, которые в темпе поступающей входной информации ведут довольно таки сложную обработку этой поступающей информации, совместно со справочной информацией и той информацией, что была получена некоторое время назад (допустим вчера, месяц назад). При этом результаты обработки можно выкладывать в единые пакеты с поступающей информацией и отправлять дальше. А можно обработанную информацию выклодывать точно в то место, которое было занято полгода назад. И при этом я буду уверен, что моя обработка не притормаживает входной поток и не отражается на процессах записи надиск.
Ну конечно это все в допустимых пределах, скажем десятки миллисекунд.

Для меня важно, что на Cache можно строить управляющие системы, где основным компонентом, ядром, будет выступать сервер Cache, а не просто бочкой для накапливания.

Для меня еще есть много чего важного.

А сколько важных сторон находят для себя другие разработчики - не берусь судить.

Скажу одно - нельзя рассматривать Cache только как сервер БД.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051767
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin Это специфика имплементации
Поясните, пожалуйста, что имеется в виду. Решает ли наложение индексов на view проблему построения индекса, который "не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса" ?
Думаю, что да, решает. Если СУБД это поддерживает и оптимизатор грамотно использует, то это большой плюс этой СУБД.

Sergey Gladilin Не совсем так. Меня удовлетворяет любой подход решающий задачу в том числе с учетом дальнейших перспектив изменений. А будет результат процедурным или нет - это вторично.
Расскажите, пожалуйста, чем, кроме как процедурностью (в смысле возможности и необходимости самому выбирать от какого к какому узлу базы перейти и как таким образом организовать в базе поиск) M-системы отличаются от SQL-систем.
Пробую понять. В процедурном языке не рассматриваем процедурность, что в нем останется? Ну разве что общие вещи для СУБД - транзакции, ввод-вывод, управление процессами и прочие атрибуты.

Sergey Gladilin База также не обязана лежать на том же сервере где исполняется серверный процесс, данные могут быть там же, на другом сервере или часть там часть здесь (детали зависят от имплементации)
Т.е. внутри M-системы таки есть свой фиксированный протокол запросов между MUMPS-интерпретатором и собственно сервером? Можно ли его использовать, если клиент написан на MUMPS?
Клиент на mumps - это или про msm-ws или я не знаю про что, нужно смотреть документацию на него. Между серверами поддерживается свой протокол распределенного кеширования. Какой - зависит от имплементации. Например в каше поддерживается DCP и ECP, в msm - DDP.

Sergey GladilinВопрос и к "ну я" и к MC--ALEX - запросы и ответы, передаваемые по сети, в Вашей системе насколько сложны? Действительно ли разработка своего языка/протокола запросов и ответов имеет преимущества перед использованием стандартного языка вопросов и ответов SQL?
Вот примерные коды из моей текущей задачи:
CacheConnect.Execute( \'d ClearData^UTZ07(resglob,3,\' + month + \')\');
На сервер уходит байт 50, обратно - байт 20 подтверждение. Функция выполняет пересчет данных отчета.
CacheConnect.Execute( \'d GetData^UTZ07(resglob)\');
На сервер тоже около 50 байт, обратно - примерно от 20 байт до нескольких мегабайт. Сколько придет - зависит от данных, в каком формате - решаю я сам. В качестве ответа приходит кросстаблица.

Sergey GladilinСразу хотел бы также задать вопрос про производительность. Вот здесь:

/topic/54920&pg=3#396080

"ну я" предлагает задачу, демонстрирующую случай, когда M-системы имеют значительное преимущество в производительности перед SQL. В ответах в той ветке я так и не нашел объяснений, почему это происходит. Можете ли Вы рассказать, каким образом в данной задаче можно организовать хранение данных в MUMPS и каким образом организуется поиск в этой структуре данных для обеспечения указанной производительности?
Пока не могу, это составляет внутренние секреты некоторых компаний.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34051815
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey GladilinСразу хотел бы также задать вопрос про производительность. Вот здесь:

/topic/54920&pg=3#396080

"ну я" предлагает задачу, демонстрирующую случай, когда M-системы имеют значительное преимущество в производительности перед SQL. В ответах в той ветке я так и не нашел объяснений, почему это происходит. Можете ли Вы рассказать, каким образом в данной задаче можно организовать хранение данных в MUMPS и каким образом организуется поиск в этой структуре данных для обеспечения указанной производительности?
Могу лишь сказать что mumps - это обычно не самоцель для адептов, а многофункциональный инструмент. Попробуйте решить эту задачу как таковую, а потом решение перепишите на mumps и sql.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34052022
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To "ну я":
Про процедурность - под процедурным языком обращения к базе данных (не языком программирования, а просто языком обращения к базе данных) я подразумеваю язык, в котором обращение состоит из указаний, КАК в базе что-то найти - пойди туда, посмотри такое-то поле, если оно удовлетворяет такому-то условию, то сделай то-то, затем пойди туда - и т.д. Насколько я понимаю, MUMPS - именно такой язык.

Альтернативой, на мой взгляд, являются непроцедурные языки запросов - SQL, XQuery. В них описывается, ЧТО достать из базы, но не описывается, как.

Если я правильно понял, то Вас привлекает именно процедурность (в описанном выше смысле) MUMPS'а, т.к. как Вы считаете ограничения, появляющиеся из-за непроцедурности, слишком серьезными?

Спасибо за остальные ответы - как осознаю - спрошу еще :-)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34052404
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBНапример для меня важно то, что я могу напрямую связываться с внешними устройствами по Com портам, без всяких надстроек, напрямую из кода программы написанной на CacheObjectScript. Т.е. я могу писать свои драйвера устройств.
Спасибо за ответ. Хотелось бы разобраться подробнее. Общение через COM-порт происходит на уровне "записать байт в /dev/ttyS01, прочитать байт из /dev/ttyS01"? Если да, то это в Unix прямо из командной строки делать можно ;-) Если на более низком уровне, то на каком? Не пишете же Вы, в конце концов, обработчики прерываний - ясно, что они должны работать в режиме ядра, а Cache в целом - не должен.

Кстати вопрос - а что такое CacheObjectScript? Это альтернативный язык Cache, не MUMPS? Или я зря считаю MUMPS основным языком в Cache?

AlexKB
Для меня важно, что я могу легко и просто перенаправлять входные и выходные потоки на различные стандартные устройства, причем на лету.

Для меня важно, что я могу порождать различные фоновые процессы, и те, работая по довольно таки сложным мной определяемым алгоритмам (уровень С++, а может и выше) легко и просто обмениваются информацией между собой и интерактивными процессами. Кроме того, они сами (процессы) могут порождать себе подобные, координировать работу между собой и т.д.

Если я правильно понимаю, все перечисленное вполне укладывается в стандартный Unix'овый IPC, т.е. доступно практически из любого языка программирования. Мы вот на PHP написали простенький daemon, который форкается и обрабатывает сетевые запросы.

AlexKB
Для меня важно, что можно исполнять такие алгоритмы, которые в темпе поступающей входной информации ведут довольно таки сложную обработку этой поступающей информации, совместно со справочной информацией и той информацией, что была получена некоторое время назад (допустим вчера, месяц назад). При этом результаты обработки можно выкладывать в единые пакеты с поступающей информацией и отправлять дальше. А можно обработанную информацию выклодывать точно в то место, которое было занято полгода назад. И при этом я буду уверен, что моя обработка не притормаживает входной поток и не отражается на процессах записи надиск.
Ну конечно это все в допустимых пределах, скажем десятки миллисекунд.
Вот, в этом видимо и был мой вопрос. Насколько я понял, Вы цените высокую скорость работу систем, разработанных на основании Cache, по сравнению с системами, разработанными на основании других СУБД? Значит должны быть типичные задачи, где это происходит? Или типичные методы обработки, отсутствующие в других системах? Вы могли бы об этом рассказать?

AlexKB
Для меня важно, что на Cache можно строить управляющие системы, где основным компонентом, ядром, будет выступать сервер Cache, а не просто бочкой для накапливания.
Вот, также было бы интересно узнать, какие функции умеет выполнять ядро Cache кроме как функции простого хранилища данных?

Заранее спасибо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34052603
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за интерес, если только он не поддельный.
Приятно общаться с тем, кто умеет слушать. И, поверьте, не хотелось бы говорить с тем, кто заткнувши свои уши и глаза, пытается всех перекричать своим возгласом: "Я ВСЕХ ВАС НЕ СЛЫШУ".
//-----------------

В Вашем контрпримере видим PHP, СУБД(SQL) и UNIX, не считая возможных интерфейсов. А это все не только накладные работы системы, но еще и накладные работы НЕПРОДУКТИВНОГО ума программиста. Программисту все это разнородное необходимо объединять в одно целое.
В моем примере это примерно так:

set com="COM1"
open com:("":"SI")
use com
set byte=^ARHIV("1996","Сентябрь","Кислородный цех","Расход пара")
write byte
close com
quit

Открыл порт, сделал его текущим устройством, взял из базы необходимые мне данные и отправил их другому абоненту.

Написан этот код на CacheObjectScript (Это можно сказать следующий шаг развития MUMPS) (С и С++ для сравнения).

По поводу того, а кому все это нужно:
К большому возмущению большинства программистов пользователям на сегодняшний день все больше и больше именно это и нужно. Им уже мало того, что предлагает стандартное мышление и стандартные подходы. Пользователям уже нужно, наконец то, управление производством, а не просто голая статистика и отчеты.

Вот примерное высказывание одного из директоров крупного металлургического предприятия: "Мы сейчас только подходим к уровню того объема производства продукции, когда всем учетом и статистикой занимались 100 бухгалтеров и экономистов, при этом основным инструментом у них были счеты. Теперь я имею огромный штат программистов и иже с ними, огромный парк компьютеров и другого дорогого оборудования, много умных и очень-очень умных. Сократить бухгалтеров и экономистов так и не удалось, наоборот пришлось взять на работу дополнительный штат. А сэкономил я только счеты?! "

Вот и призадумайтесь, нужны ли подобные задачи на сегодняшний день, и все ли решаемо теми методами, которыми Вы обладаете. И нужно ли хотя бы знакомиться с возможностями других технологий, пусть даже нетрадиционных.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34052774
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey GladilinЕсли я правильно понял, то Вас привлекает именно процедурность (в описанном выше смысле) MUMPS'а, т.к. как Вы считаете ограничения, появляющиеся из-за непроцедурности, слишком серьезными?
Это зависит от задачи. Для некоторых задач SQL хватает за глаза, зачастую даже голову ломать не нужно.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34052795
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<<<<<<<<<Вопрос и к "ну я" и к MC--ALEX - запросы и ответы, передаваемые по сети, в Вашей системе насколько сложны? Действительно ли разработка своего языка/протокола запросов и ответов имеет преимущества перед использованием стандартного языка вопросов и ответов SQL?

например запрос на создание сразу нескольких отчетов в нашей системе MX :
- это строка, расположенная в одной ячейке EXCEL
не более 255 символов - наподобие формулы EXCEL

ответ - это сам отчет - голые бизнес-цифры без элементов оформления
но с привязкой к координатной сетке EXCEL
привязка увеличивает обьем ответа процентов на 10-20

(оформление уже сидит на клиенте и ждет цифр в подготовленые места)

еще раз отмечу - сетевой трафик - минимальный !

разработка своего языка запросов имеет преимущества если :
ориентирована на тиражируемый продукт,
превосходящий аналоги, просматривается нехилый рынок сбыта,
и будет гарантированная поддержка продукта несколькими
хотя бы микро-фирмами на очень длительный период

у нас это получилось и поддержка несколькими независимыми
группами есть.

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

делать свой язык запросов ради нескольких обьектов - невыгодно.
лучше уж все плохонькое - но стандартное - типа SQL
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34054503
kvasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB

set com="COM1"
open com:("":"SI")
use com
set byte=^ARHIV("1996","Сентябрь","Кислородный цех","Расход пара")
write byte
close com
quit

Открыл порт, сделал его текущим устройством, взял из базы необходимые мне данные и отправил их другому абоненту.

Пользователям уже нужно, наконец то, управление производством, а не просто голая статистика и отчеты.



то бишь так видимо можно включить/выключить какой электрический клапан или насосом-дозатором управлять, или опрашивать датчик температуры

наверно на MSSQL такое и не сделать
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055152
На sql.ru, Sergey Gladilin, уже весьма подробно обсуждали все эти вопросы. У Вас не совсем правильное представление о "реляционных системах" раз Вы говорите о "подходах к организации данных, заключающихся в использовании непроцедурного языка запросов." В РМД, ради чистой математики, пришлось (вынужденно) отказаться от таких важнейших свойств баз данных, как идентификация, навигация и семантика. Взамен - "декларативный язык запросов". В MUMPS изначально используется одноименный интегрированный язык баз данных. И SQL, в течение 30 лет, вынужденно превращается в самый настоящий процедурный язык, чтобы стать вторым в истории интегрированным языком баз данных.
Несмотря на то, что так и не появилось ни одной реляционной СУБД, пагубное влияние РМД проявляется, конечно, в существующих псевдореляционных СУБД ("Р"СУБД). Пользователи работают не с данными а с некими представлениями данных, и требуется постоянное программирование любых, даже самых простых, запросов. MUMPS не ориентирована ни на какую конкретную модель данных, а служит средой для разработки СУБД. Никто "на низком уровне" не "копается в отдельных данных". MUMPS, в частности, идеальная (просто единственная) среда для реализации классической объектной модели данных. Пользователи при этом работают непосредственно с данными (в рамках концептуальной схемы). Они сами создают запросы и отчеты, а оптимизаторы запросов как минимум не менее эффективны, чем в "Р"СУБД. Все разработчики баз данных стремятся меньше программировать. MUMPS легче всего приводит к такому результату (что не удивительно - ведь это единственная целостная технология баз данных). Все администраторы стремятся меньше администрировать. И здесь MUMPS (в данном контексте правильнее говорить уже о Cache) дает лучший результат.

Странный Вы задаете вопрос: "Расскажите, пожалуйста, какие отличия я забыл?". Мне кажется нужно поглубже разобраться в теории и технологии баз данных, чтобы говорить об отличиях.
"Доступно практически из любого языка программирования", "Мы вот на PHP написали...". Так что же Вы на SQL-то не написали. Значит Вы не понимаете что такое интегрированный язык баз данных ?
Еще более странно про "типичные задачи". В одной из тем никто не смог привести ни одной "типичной задачи", для которой использование "Р"СУБД было бы разумнее, чем СУБД на MUMPS. Говорили только о "получении больших и сложных отчетов." Смешнее не придумаешь.

Желаю Вам успехов в изучении теории и технологии баз данных, и в поиске отличий.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055192
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чернышев Андрей ЛеонидовичНа sql.ru, Sergey Gladilin, уже весьма подробно обсуждали все эти вопросы.
Дадите ссылки? Те дискуссии, связанные с MUMPS, которые я нашел. как правило,быстро переходят в неуправляемй поток взаимных наездов.

Чернышев Андрей ЛеонидовичВ РМД, ради чистой математики, пришлось (вынужденно) отказаться от таких важнейших свойств баз данных, как идентификация, навигация и семантика. Взамен - "декларативный язык запросов".
Вот про это почитал бы с большим удовольствием, посоветуйте что-нибудь?

Чернышев Андрей ЛеонидовичНесмотря на то, что так и не появилось ни одной реляционной СУБД, пагубное влияние РМД проявляется, конечно, в существующих псевдореляционных СУБД ("Р"СУБД).
Вот это заявление - про псевдореляционные СУБД - я уже встречал на sql.ru, но, опять же, никогда ен видел объяснений, что значит "псевдореляционные" и почему они хуже гипотетических реляционных - что еще кроме идентификации, навигации и семантики они потеряли?

Чернышев Андрей ЛеонидовичПользователи работают не с данными а с некими представлениями данных, и требуется постоянное программирование любых, даже самых простых, запросов.
Постоянное программирование требуется во всех случаях или только тогда, когда таблица не есть простейшее отображение сущности?
Здесь, на мой взгляд, очень хорошо бы пошел пример - что есть данные, что есть представление, в чем недостаток реляционной модели и ее псевдореляционной реализации SQL, в чем заключается работа MUMPS непосредственно с данными.

Чернышев Андрей ЛеонидовичОни сами создают запросы и отчеты, а оптимизаторы запросов как минимум не менее эффективны, чем в "Р"СУБД.
Тут я совсем запутался :-(. Я думал, что в MUMPS нет запросов, есть просто способ обращения к данным через глобали, выглядящие для программиста как переменные?

Чернышев Андрей ЛеонидовичЗначит Вы не понимаете что такое интегрированный язык баз данных ?
Пожалуй, не понимаю. Что посоветуте почитать?

Чернышев Андрей ЛеонидовичЕще более странно про "типичные задачи". В одной из тем никто не смог привести ни одной "типичной задачи", для которой использование "Р"СУБД было бы разумнее, чем СУБД на MUMPS.
Вот тут:
/topic/54920&pg=12#2406070
предложены задачи, похожие на те, что мне иногда приходится решать в своей профессиональной деятельности. Из преиведенных там решений на MUMPS я вижу, что
1) они менее наглядны, содержат какие-то циклы, переменные и т.д.
2) по-моему, они длиннее по числу лексем (побайтово сравнивать, имхо, глупо, а вот по числу идентификаторов, ключевых слов, знаков операций - т.е. числу лексем - имхо, логично)
3) казалось бы, логичное действие - база выросла - пора прикрутить индексы - требует переписывания кода
Получается, что для указанных задач SQL лучше. Что и логично. Не бывает технологий, абсолютно выигрывающих у других. Для каждого подхода должна найтись своя ниша...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055337
Вы задаете очень странные (для меня) вопросы, именно по той причине, о которой я сказал. И делаете ошибочные выводы.

"Псевдо", потому что не поддерживаются даже свойства отношения - базовой концепции РМД.

Работа непосредственно с данными заключается в работе непосредственно с данными. Это обеспечивают ОСУБД на MUMPS, а не сама MUMPS. Я же ясно сказал: непосредственно в рамках концептуальной схемы. Это обеспечивается простым и универсальным интерфейсом объектного навигатора - важнейшего компонента, который как раз и сводит программирование к минимуму. Если разработчик "сказал", что
Товар<-Хранится на/Хранит->Склад
то пользователи именно с соответствующими данными непосредственно и работают.

Вы не запутались, а просто игнорируете то, что я Вам говорю, и продолжаете рассуждать про "в MUMPS нет запросов, а есть просто способ...". Конечно же, в ОСУБД на MUMPS есть запросы и оптимизаторы (они есть и в ООСУБД на MUMPS от Intersystems, но эта СУБД построена на парадигме ООП, не имеющего никакого отношения к базам данных).

Сообщения 2406070 и другие сообщения "про самолеты" не могут дать никакого представления о технологии БД. Когда эта "задача" будет внедрена на предприятии, в БД будет, например, 100 отношений в нормализованной РБД (или, соответственно, около 70-ти объектов в ОБД) и множество различных функций. Вот тогда и будете сравнивать. И Вы увидите, что в ОСУБД на MUMPS (а Вы опять ссылаетесь на чистый MUMPS):
1) решения более наглядны;
2) намного короче;
3) не требуют постоянного программирования "запросов", как в случае SQL.

Думаю нужно почитать сначала Кодда, а потом Дейта (последнее издание "Введение в системы баз данных" и другие работы), так как Дейт наиболее последовательный сторонник РМД.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055373
kvasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Что же главное в Cache?

Видите ли, Sergey, мы стали свидетелями мировой экспансии Google на просторах интернета. Их сервис в сети на 1000 компьютерах (в общем-то никто не знает сколько у их компьютеров). Это новая глобализация стала реальностью, наступает на нас, и мы пока проигрываем.

Что же можно противопоставить Google?
Такого плана вопросы не задают только ленивые.

В техническом плане это похоже на Cache.
Во всяком случае он похож на работающий инструмент.

Немножко смущает другое, каким бы ни был хорошим Cache, на каком-то этапе он же должен разваливаться к примеру от юзеров.
Не может же быть так, что в Google дураки – там 1000 компьютеров, а мы взяли 1 поставили туда Cache и нет проблем.

Но в том то и дело, что это может быть именно так. А почему нет?
То есть по-идее только длительные практические испытания покажут, когда Cache развалится или нет.

А MSSQL видится слабее сразу, тут уж и испытания не особо требуются, хотя конечно задача должна определять инструмент.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055773
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чернышев Андрей Леонидович"Псевдо", потому что не поддерживаются даже свойства отношения - базовой концепции РМД.

Работа непосредственно с данными заключается в работе непосредственно с данными. Это обеспечивают ОСУБД на MUMPS, а не сама MUMPS. Я же ясно сказал: непосредственно в рамках концептуальной схемы. Это обеспечивается простым и универсальным интерфейсом объектного навигатора - важнейшего компонента, который как раз и сводит программирование к минимуму. Если разработчик "сказал", что
Товар<-Хранится на/Хранит->Склад
то пользователи именно с соответствующими данными непосредственно и работают.
К сожалению, оба ответа ничего не прояснили - Вы не пояснили, какие свойства отношения не поддерживаются в SQL, а также чем это плохо. Вы не пояснили, почему SQL плохо пригоден для описания того, что "Товар<-Хранится на/Хранит->Склад".

Чернышев Андрей ЛеонидовичВы не запутались, а просто игнорируете то, что я Вам говорю, и продолжаете рассуждать про "в MUMPS нет запросов, а есть просто способ...". Конечно же, в ОСУБД на MUMPS есть запросы и оптимизаторы (они есть и в ООСУБД на MUMPS от Intersystems, но эта СУБД построена на парадигме ООП, не имеющего никакого отношения к базам данных).
К сожалению, я действительно не знаю, ни что такое ОСУБД ни что такое ООСУБД, ни того, является ли Cache единственной в мире ОСУБД. Еще я не вижу никаких запросов а приведенных в сообщении 2406070 текстах на MUMPS, а потому начинаю подозревать, что Вы говорите о каких-то двух разных вещах, а я их между собой путаю. И, собственно, пишу в этот форум для того, чтобы мне рассказали либо посоветовали, что почитать.

Чернышев Андрей Леонидович
Сообщения 2406070 и другие сообщения "про самолеты" не могут дать никакого представления о технологии БД. Когда эта "задача" будет внедрена на предприятии, в БД будет, например, 100 отношений в нормализованной РБД (или, соответственно, около 70-ти объектов в ОБД) и множество различных функций. Вот тогда и будете сравнивать. И Вы увидите, что в ОСУБД на MUMPS (а Вы опять ссылаетесь на чистый MUMPS):
1) решения более наглядны;
2) намного короче;
3) не требуют постоянного программирования "запросов", как в случае SQL.

Во-первых, ссылка на сообщение 2406070 предназначалась для демонстрации Вам, что не бывает инструмента, одинакового хорошего для всех случаях - вот и Вы согласны, что для задач про самолеты SQL лучше, а для каких-то других задач (на которые Вы ссылаетесь, говоря о 100 нормализованных отношениях) лучше MUMPS.

Во-вторых, задача про самолеты имеет прямое отношение к БД - базы данных подобной сложности встречаются в тысячах или миллионах веб-проектов.

В-третьих, было бы очень интересно увидеть-таки пример системы, в которой SQL невыгоден, с объяснением, какие ограничения реляционной или псевдореляционной БД в этом конкретно проекте становятся критическими.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055774
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kvasovТо есть по-идее только длительные практические испытания покажут, когда Cache развалится или нет.

А MSSQL видится слабее сразу, тут уж и испытания не особо требуются, хотя конечно задача должна определять инструмент.
Во! Из двух Ваших последних предложений второе (а не первое) описывает мой вопрос - я хочу разобраться, для каких приложений мне стоит задуматься об использовании M-систем вместо более привычных мне SQL. Причем интересуют только те случаи, когда M-система даст ощутимый выигрыш. Хотелось бы увидеть конкретный пример (как можно более простой, разумеется), когда SQL затыкается в силу своей организации, а MUMPS дает результат (опять же в силу своей реализации как средства доступа к БД, а не в силу того, что в нем есть операции по чтению из COM-порта).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055833
Я Вас очень хорошо понял, Sergey Gladilin. Но на кого-то демонстрация "страстного желания" изучить эти "М-системы", возможно, может произвести впечатление.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055919
mumps-ист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей,

То что говорит ЧАЛ о Cache в целом верно. Представьте, что вам в MSSQL дадут не DDL с возможностью создавать таблицы, индексы и не DML с запросами, а библиотеку доступа на уровне "создать B+ дерево", пробежать по дереву, найти все узлы уровня N, блокировки узлов и т.д.
Т.е. вы вместо того, чтобы решать прикладную задачу, сначала должны на mumps написать то, что ЧАЛ называет "ОСУБД на MUMPS" (никто правда не видел этого чуда). Собственно, SQL в Cache и есть реализация РСУБД на языке mumps (CREATE TABLE создаст глобал, а SELECT будет транслирован в код на mumps, который бегает по деревьям и ищет что нужно).
Имплементация SQL и объекного доступа в Cache однозначно проигрывает любой коммерческой РСУБД - и работает медленнее и многие конструкции не поддерживаются - поэтому на это даже не стоит смотреть.
Не исключено, что возможно написать на mumps ОСУБД, на которой можно будет решать задачи более эффективно, чем на РСУБД - но, к сожалению, такой СУБД в публичном доступе нет.
Я бы сказал, что разработка системы на Cache оправдана, если ваше приложение имеет некую специфику, зная которую можно реализовать работу с данными гораздо эффективнее, чем в РСУБД. Например, в mumps нет понятия уровня изоляции транзакций. Если вам нужно получать только commited данные - нужно самому расставлять локи, следить за ними и т.п. Наверняка есть задачи, где частное решение будет работать более эффективно, чем реализация на все случаи жизни в РСУБД.
Естественно, нужно понимать, что реализация такого рода потребует значительных ресурсов и в конце может все равно получиться менее эффективной, чем РСУБД - потому что mumps язык интерпретируемый и вы не добьетесь той же производительности при работе с деревьями, как на С.

В общем, я бы ответил на ваш вопрос следующим образом: пытайтесь решить задачу на РСУБД. Если задача не решается и вы видите, что причиной этого является ограничения РСУБД ( решение плохо ложится на таблицы, скорости не хватает, потому что РСУБД написана универсально, а вы видите, что в вашем случае все можно сделать гораздо эффективнее, если пожертвовать универсальностью) - смотрите на Cache, но знайте, что путь этот будет тернист :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34055926
kvasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin

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



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

Одна формула – один запрос – один бизнес.
Это преамбула.

Далее просто детали.
Если Cache теоретически может сделать «один запрос» в 10 раз быстрее, чем к примеру на sql - то ничего более от него может и не потребоваться по большому счету.

Что будет с sql при 200 запросах/секунду ?
А ведь веб-технологии это не только sql, а еще html, javascript, веб-сервер и пр.
А в Cache это как-то компактно.

Set ^KuKu=”Счастливая находка ученых”
write “<span>#(^KuKu)#</span>”

т.е. не в COM-порт посылаешь байт, а дебитуешь юзера html ответом
во всяком случае в теории выглядит просто, понятно, производительно.

(раньше были датчики, а теперь к ним добавились веб-юзеры - логика системы потоковой обработки данных сохранилась)

да может все веб-юзеры Америки дают столько запросов, сколько дает какой-нибудь свитч сетевых пакетов в магазине на 20 компьютеров, а мумпс вроде умеет на лету трафик писать и расшифровывать, видимо он для этого и придумывался когда-то, но это домыслы
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34056213
MX  -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Gladilin kvasovТо есть по-идее только длительные практические испытания покажут, когда Cache развалится или нет.

А MSSQL видится слабее сразу, тут уж и испытания не особо требуются, хотя конечно задача должна определять инструмент.
Во! Из двух Ваших последних предложений второе (а не первое) описывает мой вопрос - я хочу разобраться, для каких приложений мне стоит задуматься об использовании M-систем вместо более привычных мне SQL. Причем интересуют только те случаи, когда M-система даст ощутимый выигрыш. Хотелось бы увидеть конкретный пример (как можно более простой, разумеется), когда SQL затыкается в силу своей организации, а MUMPS дает результат (опять же в силу своей реализации как средства доступа к БД, а не в силу того, что в нем есть операции по чтению из COM-порта).

Сергей
ни в коем случае не утверждаю что MUMPS - наилучшее средство,
но во многих случаях он показал себя превосходно -
например, как платформа для тиражируемой "1-С" -подобной системы

или - чисто для любопытства - пример работы M-кода -
вариант решения задачки Эйнштейна -
код занимает 5 строк, время = 1 секунда.
для сравнения - запрограммируйте решение на любом другом языке
и почуствуйте разницу как в обьеме, так и в скорости
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34059541
Традиционный совет еще от одного секретного специалиста по "Р"СУБД:
1) пытайтесь на "Р"СУБД;
2) если не получится, пишите на С, чтобы "не терять производительность".
Правильный, надо сказать, совет для недоучек. Все-таки, MUMPS предназначен для весьма узкого круга специалистов в области баз данных. Проще пользоваться ширпотребными "Р"СУБД. Ни одну реальную задачу, конечно, не решишь без программирования на других, "дополнительных" языках (пока из SQL не сделают MUMPS). А многие не решишь даже и программируя на других языках из-за узкого места - "РБД". Но ведь "как у всех". Всегда спокойнее быть в большинстве.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34060271
kvasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чернышев Андрей ЛеонидовичТрадиционный совет еще от одного секретного специалиста по "Р"СУБД:
1) пытайтесь на "Р"СУБД;
2) если не получится, пишите на С, чтобы "не терять производительность".
Правильный, надо сказать, совет для недоучек. Все-таки, MUMPS предназначен для весьма узкого круга специалистов в области баз данных. Проще пользоваться ширпотребными "Р"СУБД. Ни одну реальную задачу, конечно, не решишь без программирования на других, "дополнительных" языках (пока из SQL не сделают MUMPS). А многие не решишь даже и программируя на других языках из-за узкого места - "РБД". Но ведь "как у всех". Всегда спокойнее быть в большинстве.

для увлекающихся консалтингом - "как надо программировать",
рекомендую раскручивать MSAccess adp проекты + MSSQL.
это прекрасные инструменты

( http://www.orc.ru/~zgrad/am/avtomagik1.JPG )
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34061796
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чернышев Андрей Леонидович А многие задачи не решишь даже и программируя на других языках из-за узкого места - "РБД".
Ну вот опять, Андрей Леонидович, Вы пишете "многие задачи" и не приводите ни одного конкретного примера?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34063499
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin
Ну вот опять, ..., Вы пишете "многие задачи" и не приводите ни одного конкретного примера?

Представьте себе технологический цикл, состоящий из нескольких переделов.
Входные потоки сырья поступают в разные переделы, кроме того, выходной поток одного передела является входным для последующего.
На выходе некоторых переделов идут потоки отходов и побочной продукции.
На выходе технологического цикла идет выходной поток продукции и поток брака.

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

Только совмещая во времени на одном графике кривые различных потоков можно выполнять оперативный анализ исполнения технологического процесса.

Таким образом, часть информации вынимается из БД, а часть информации берется из входного потока. При этом эти данные подвергаются непрерывной аналитической обработке, для того чтобы вычислять фактическое время запаздывания входных потоков в переделах для коррекции запросов к БД.

Вот Вам один из немногих жизненных примеров.
Если ничего подобного Вам еще не встречалось, то это просто ВАМ не встречалось.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34063887
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBТаким образом, часть информации вынимается из БД, а часть информации берется из входного потока. При этом эти данные подвергаются непрерывной аналитической обработке, для того чтобы вычислять фактическое время запаздывания входных потоков в переделах для коррекции запросов к БД
Спасибо за ответ, но, к сожалению, я все равно не понял. Что из сформулированного мешает использовать реляционную СУБД? То, что одного SQL в данной задаче не хватит - понятно, ну будет написан кусок анализа на java, С++ или еще каком языке. Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34064380
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin AlexKBТаким образом, часть информации вынимается из БД, а часть информации берется из входного потока. При этом эти данные подвергаются непрерывной аналитической обработке, для того чтобы вычислять фактическое время запаздывания входных потоков в переделах для коррекции запросов к БД
Спасибо за ответ, но, к сожалению, я все равно не понял. Что из сформулированного мешает использовать реляционную СУБД? То, что одного SQL в данной задаче не хватит - понятно, ну будет написан кусок анализа на java, С++ или еще каком языке. Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах?

Я опускаю тот момент, что будут использованы не одна а ряд технологий для реализации такой задачи.
Но мне нужно точно знать что в аналитический блок попадут данные которые поступили сейчас (0 секунд назад) и те которые поступили ровно 346 (786) секунд назад.

a(0)=b(-0) + c(-346) * d(-786)

Это самое простое аналитическое выражение. Индексы означают запаздывание от момента текущего времени. Запаздывания не статичны. Выражений вычисляется одновременно от десятков до сотен. Все они разные и оперируют с некоторым количеством разных переменных (скажем 300). Результаты работы будут складываться в БД и будут извлечены либо сразу же, либо по истечении какого-то времени. Все обработки должны быть пакетированы, т.е. до приема следующей порции информации необходимо выполнить всю аналитическую обработку, передать результаты в БД, выдать обработанные пакеты в систему отображения, заполнить протокол реального времени (построчная печать) и выдать в процесс печати, на сновании обработанных данных выдать управляющие воздействия во внешние устройства. Все это должно происходить строго 5 раз в секунду (а в моем случае это было 20 раз в секунду) и в строгой последовательности.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34064593
Так решайте, Sergey Gladilin, на "Р"СУБД, если все у Вас решается! Я то отказался от "реляционной теории" давным-давно из-за плохой формализации РМД, отсутствия идентификации, навигации, семантики, бессмысленности "ключей" и "функциональных зависимостей" и т.д. А Вы, как я понимаю, чистый практик. Решается? Решайте! Не решается - не решайте. Хотите изучить теорию и технологию баз данных - изучите. Не хотите - не изучайте.
Установка (внедрение) любой "информационной системы" на предприятии (заказчика) не должна отличаться от установки телевизора в квартире. И те средства и технология, о которых я Вам сообщал, способствуют достижению этой цели. А "Р"СУБД - не способствуют, даже когда "решается".
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34064962
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите, совсем забыл

Sergey Gladilin Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах?

Да простят меня MUMPSисты за упрощение.

set Time=текущее время в секундах

set ^a(Time)=^b(Time-0) + ^c(Time-346) * ^d(Time-786)

где:
^b(Time-0) взял из БД текущее значения параметра <b>

^b(Time-0) + ^c(Time-346) к нему прибавил значение параметра <c>, но которое было сохранено в БД (получено от устройства измерительного) 346 секунд назад

^b(Time-0) + ^c(Time-346) * ^d(Time-786) сумму умножил на значение параметра <d>, но которое было сохранено в БД (получено от устройства измерительного) 786 секунд назад

set ^a(Time)=^b(Time-0) + ^c(Time-346) * ^d(Time-786) вычисленное выражение сохранил в БД по текущему времени


И никаких тебе критилок с таблицами в виде SELECT...... WHERE...

А то тут некоторые все возмущаются по поводу циклов и ничего не говорят о том что SELECT это уже неявный цикл.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34065193
CACHE_LAMER2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, всем добро дня и ночи!

Просьба тезисно пояснить где, в каких случаях и каких предметных областях я могу эффективно использовать CACHE (по сравнению с РСУБД)???

Просьба привести примеры

Есть ли в России реальные бизнес-приложения , использующие CACHE?
Я слышал в МИФИ повально его пользуюут, но о практической реализации не слышал...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34065367
mumps-ист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чернышев Андрей Леонидович И те средства и технология, о которых я Вам сообщал, способствуют достижению этой цели. А "Р"СУБД - не способствуют, даже когда "решается".

Ссылку в студию на средства или хотя бы их документацию можно? А то все как-то теоретически. Может у вас и достигаемые цели теоретические?

AlexKB
А то тут некоторые все возмущаются по поводу циклов и ничего не говорят о том что SELECT это уже неявный цикл.

Если по времени построен B+ Tree индекс, то выбор записи будет осуществлен проходом по дереву без всяких циклов - также как и в Cache.

1. А вообще для таких задач действительно есть другие языки и средства. Использование только mumps не есть преимущество, если рассмотреть количество опытных специалистов на рынке. Молодые специалисты тоже не бегут - приобретенный опыт может быть применен в десятке компаний на всю Москву.
2. Используя mumps вы отказываетесь от хороших средств разработки, отладчика, profiler-а, встроенного контроля версий, нормального ООП - либо вынуждены писать сам всяческие плагины для IS Studio.
3. При создании нормального Win32 GUI ( если вы уж хотите в реальном времени что-то отображать) mumps заканчивается и все равно начинается использование других технологий. А вот их интеграция с mumps при использовании глобалов - это еще та радость.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34065532
латыш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CACHE_LAMER2000Господа, всем добро дня и ночи!

Просьба тезисно пояснить где, в каких случаях и каких предметных областях я могу эффективно использовать CACHE (по сравнению с РСУБД)???

Просьба привести примеры

Есть ли в России реальные бизнес-приложения , использующие CACHE?
Я слышал в МИФИ повально его пользуюут, но о практической реализации не слышал...

примеры по Латвии

система - по функциям примерно как русская "1-с"
но под европейские правила :

-- транспортные предприятия
-- строительно-монтажные
-- швейные
-- судоверфь
-- порты
-- рыболовство и рыбопереработка
-- металлообработка
-- металлургический завод - 1 000 000 тонн проката в год
-- деревообработка
-- морской и медицинский колледж
-- полиция
-- пожарные службы
-- муниципальные учреждения
-- метрологические
-- торговля

более 100 внедрений за 2 года
при том что на латвийском рынке предлагается аж 50 аналогов
(на 2 миллиона населения)
начиная от "1-с-Латвия"
(кстати "1с" - наш главный конкурент)

выигрываем по :
- скорости работы приложений - на порядок
- удобству перенастройки и простому обслуживанию
- простоте обучения программированию на MUMPS
- легкой интеграции с другими системами
- низкой себестоимостью разработок
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34065548
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mumps-истЕсли по времени построен B+ Tree индекс, то выбор записи будет осуществлен проходом по дереву без всяких циклов - также как и в Cache.

В Вашем случае это проход по дереву, а в моем это переход на конкретную ветку. Хотя не берусь обсуждать именно этот вопрос, поскольку тут детали реализации. Пусть этот вопрос обсуждают специалисты производителей систем, а не прикладные программисты. Это будет правильней, а нам предоставят результаты сравнительного анализа и свои доводы в пользу своих технологий.

mumps-ист1. А вообще для таких задач действительно есть другие языки и средства. Использование только mumps не есть преимущество, если рассмотреть количество опытных специалистов на рынке. Молодые специалисты тоже не бегут - приобретенный опыт может быть применен в десятке компаний на всю Москву.

Да, действительно существует много языков и средств. Но этих средств будет как минимум три, на практике где-то пять. А тут одно средство, которое, кстати, интегрирует в себя языки и средства. В этом случае нет необходимости искать опытных программистов, достаточно рядовых. Да и не только Москва присутствует на земном шаре, есть и еще города с меньшим уровнем оплаты специалистов, причем по вине Мсквы (это мое личное убеждение и прошу его не обсуждать на этом форуме).


mumps-ист2. Используя mumps вы отказываетесь от хороших средств разработки, отладчика, profiler-а, встроенного контроля версий, нормального ООП - либо вынуждены писать сам всяческие плагины для IS Studio.

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

mumps-ист3. При создании нормального Win32 GUI ( если вы уж хотите в реальном времени что-то отображать) mumps заканчивается и все равно начинается использование других технологий. А вот их интеграция с mumps при использовании глобалов - это еще та радость.


Да, действительно очень сложно прикладному программисту написать
Set Form1.TextBox.Text=^Arhiv(data,smena,operator) // показать фамилию текущего оператора установки.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34066311
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBДа, действительно очень сложно прикладному программисту написать
Set Form1.TextBox.Text=^Arhiv(data,smena,operator) // показать фамилию текущего оператора установки.
А поясните пожалуйста, что имеется в виду? То, что MUMPS позволяет реализовывать Win32 GUI или то, что MUMPS легко интегрировать в другие технологии? Если второе, то как это реализуется? Из каких языков могут быть доступны глобали MUMPS?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34066822
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin
А поясните пожалуйста, что имеется в виду? То, что MUMPS позволяет реализовывать Win32 GUI или то, что MUMPS легко интегрировать в другие технологии? Если второе, то как это реализуется? Из каких языков могут быть доступны глобали MUMPS?

Я работал с реализациями MUMPS, которые имели встроенный Win32 GUI, также знаю что разработчики пользовательского уровня писали свои собственные инструментальные средства и легко их интегрировали с MUMPS.

Но в данном случае показана интеграция Cache с Win32 GUI на уровне ООП (SMWrap). Win32 GUI занимается отдельный графический проигрыватель (Браузер можно сказать), методы в данном случае исполняется на Cache. Способ довольно-таки нетрадиционный, у него много противников. Но именно этот способ позволил достичь тех результатов, о которых я вкратце упомянул.

Параллельно решались эти же задачи на других средствах (три-пять технологий), и до сих пор решаются, но к результатам достигнутым описанным выше способом они так пока и не подошли. Хотя все у них впереди и я не берусь сказать что это невозможно, правда уровень квалификации их группы выше, чем той у которой результаты уже есть налицо.

Доступ к глобалам Cache возможен, по моему, из всех традиционных языков программирования (VB, VBA, С++...), которые поддерживают стандартные интерфейсы. Более того, доступ возможен к программам, функциям, переменным.

Вот только пользоваться нужно этим разумно, не искать способ найти плохое, его всегда можно найти в любой системе, среде, языке программирования, а искать нужно способ расширить свой кругозор.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34067100
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
латышвыигрываем по :
- скорости работы приложений - на порядок
- удобству перенастройки и простому обслуживанию
- простоте обучения программированию на MUMPS
- легкой интеграции с другими системами
- низкой себестоимостью разработок
Так, давайте по порядку.
Скорость - имеется в виду на клиенте или на сервере? На порядок - это в 10 раз, я так понимаю?

Удобство перенастройки и обслуживания - о чем вообще речь? Перенастройка - это ведь не правка исходников? Она в конфигурационных файлах осуществляется? Какая разница, на чем система написана?

Легкая интеграция - это преимущество Cache или Вашей реализации? В чем конкретно и с какими системами обеспечивается легкость интеграции?

Низкая себестоимось разработок и простота программирования на MUMPS - вот этого я вообще понять не могу. Синтаксис у MUMPS весьма необычен - выпускнику ВУЗа со знанием Си или VisualBasic этот синтаксис будет казаться странным. Откуда данная простота и дешевизна? MUMPS с Вашей точки зрения действительно настолько приятный язык?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34067152
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin MUMPS с Вашей точки зрения действительно настолько приятный язык?
Чертовски приятный ;-) Кем-то было сказано "На нем можно запрограммировать даже ветер в голове". Правда, эта медаль имеет обратную сторону, слишком много возможностей полезно для дисциплинированного ума, и вредно для неокрепшего. А если еще вспомнить понятие "косвенность", команду XECUTE, то у программиста, привыкшего к традиционным языкам, крыша может поехать.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34067713
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCat Sergey Gladilin MUMPS с Вашей точки зрения действительно настолько приятный язык?
Чертовски приятный ;-) Кем-то было сказано "На нем можно запрограммировать даже ветер в голове". Правда, эта медаль имеет обратную сторону, слишком много возможностей полезно для дисциплинированного ума, и вредно для неокрепшего. А если еще вспомнить понятие "косвенность", команду XECUTE, то у программиста, привыкшего к традиционным языкам, крыша может поехать.
Что такого в косвенности? Есть в любом современном интерпретируемом языке, имхо. В PHP, например. Только толку с нее довольно ограниченно - часто ведет к непонятному коду. Оператор XECUTE, применяемый к данным полученным от пользователя, и вовсе небезопасен.

Вообще, беглый просмотр руководства по MUMPS не изменил меня в мысли, что необычное в MUMPS - это именно глобали. Есть еще сокращение опетатора до одной буквы, но оно уж больно сильно вредит читаемости кода, по-моему, а объем программ сейчас экономить вроде бессмысленно...

А кто-нибудь в цифрах сравнивал затраты на обучение программистов и/или себестоимость разработки на MUMPS по сравнению с другими языками?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34067732
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Gladilin
А кто-нибудь в цифрах сравнивал затраты на обучение программистов и/или себестоимость разработки на MUMPS по сравнению с другими языками?
Хороший вопрос, я бы сам с удовольствием на такие цифры посмотрел :-) Утверждается, что сильно быстрее и дешевле, но в виде аксиомы. Вот комплекс автоматизации предприятия, написанный на М и отработавший 10 лет (и продолжающий работать) видел своими глазами. Только технику меняли, да с MSM на Cache перешли, практически ничего не переписывая.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34067824
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно я отвечу на ряд вопросов.

Sergey GladilinТак, давайте по порядку.
Скорость - имеется в виду на клиенте или на сервере? На порядок - это в 10 раз, я так понимаю?

На этот вопрос ответа конкретного Вам никто не даст, все очень относительно.
Единственно что могу сказать, что обработку программист может распараллелить по разным процессам на сервере, а если и клиент написан на Cache, то выполнив специфическую подготовку данных на сервере клиент быстрее выполнит окончательную обработку. Можно выполнять окончательную обработку предварительно подготовленных данных по мере навигации по данным.

Sergey GladilinУдобство перенастройки и обслуживания - о чем вообще речь? Перенастройка - это ведь не правка исходников? Она в конфигурационных файлах осуществляется? Какая разница, на чем система написана?

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

Sergey GladilinЛегкая интеграция - это преимущество Cache или Вашей реализации? В чем конкретно и с какими системами обеспечивается легкость интеграции?

Легкая интеграция - это особенность Cache.
Мне доводилось интегрировать с различными SCADA-системами, средами программирования. Вот правда обобщенной выгоды по целуму ряду показателей, а не по одному, я не ощутил. Ну а в чем конкретно - предствьте себе, что Вы легко и просто общаетесь с объектами базы данных, заметьте хранимыми объектами, а не существующими в контексте С++ процесса. При этом к объектам обеспечен множественный доступ.

Sergey GladilinНизкая себестоимось разработок и простота программирования на MUMPS - вот этого я вообще понять не могу. Синтаксис у MUMPS весьма необычен - выпускнику ВУЗа со знанием Си или VisualBasic этот синтаксис будет казаться странным. Откуда данная простота и дешевизна? MUMPS с Вашей точки зрения действительно настолько приятный язык?

Совсем не нужно искать дорогостоящих программистов высокой квалификации для разработки и сопровождения. По поводу синтаксиса - если выпускник учил только Си или VisualBasic, то синтаксис HTML будет куда более чем странным по сравнению с MUMPS -> Cache.
Те программисты, которые позже начинают программировать на MUMPS, чем на других языках, переучиваются очень легко, потому что необычных всего где-то пяток команд и пяток функций. Самое главное требование к таким программистам элементарная порядочность. Чтобы не спекулировали на этом вопросе.
Те программисты которые начинают прграммировать с MUMPSа, переучиваются с других профессий, очень сильно удивляются почему дипломированные программисты так не любят этот язык. А еще больше они удивляются почему это у дипломированных всегда какие-то вопросы, проблемы, нестыковки с конечным ЗАКАЗЧИКОМ и тому подобное.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34067928
Странный Вы, Sergey Gladilin: "Есть в любом современном...". Те или иные элементы MUMPS появились, конечно, в других (современных) языках. Что-то есть "в PHP, например". Но аналога MUMPS никогда не было и нет.
Мне Рефал очень нравился, другие языки. Но на Рефале нельзя было создавать приложения баз данных. И на SQL, как правило, нельзя создавать приложения баз данных. MUMPS - единственный язык, на котором можно создавать приложения баз данных.

Что значит "все как-то теоретически", mumps-ист ? Я же не коммерсант. Если кто-то говорит, что он что-то создал на "Р"СУБД, я же не говорю "ссылку в студию". Я говорю: и хорошо, молодец ! Пытайся и дальше. Не получится - пиши на С.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34068557
латыш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Gladilin латышвыигрываем по :
- скорости работы приложений - на порядок
- удобству перенастройки и простому обслуживанию
- простоте обучения программированию на MUMPS
- легкой интеграции с другими системами
- низкой себестоимостью разработок
Так, давайте по порядку.
Скорость - имеется в виду на клиенте или на сервере? На порядок - это в 10 раз, я так понимаю?

Удобство перенастройки и обслуживания - о чем вообще речь? Перенастройка - это ведь не правка исходников? Она в конфигурационных файлах осуществляется? Какая разница, на чем система написана?

Легкая интеграция - это преимущество Cache или Вашей реализации? В чем конкретно и с какими системами обеспечивается легкость интеграции?

Низкая себестоимось разработок и простота программирования на MUMPS - вот этого я вообще понять не могу. Синтаксис у MUMPS весьма необычен - выпускнику ВУЗа со знанием Си или VisualBasic этот синтаксис будет казаться странным. Откуда данная простота и дешевизна? MUMPS с Вашей точки зрения действительно настолько приятный язык?

спасибо коллегам - ответили за меня
именно то что и я бы сказал - полностью присоединяюсь

по скорости могу добавить - на сервере
пример :
зарплата завод 2500 чел с перерасчетом-коррекцией назад на глубину
6 месяцев - все налоги - удержания - счет за 15 сек
думаю это даже быстрее чем на порядок

клиент - на ms office - но благодаря разным
спецметодам тоже работает достаточно быстро

кстати, все конфигурационно-настроечные файлы в нашей системе
это таблицы в ЕХСЕЛ с раскраской - validat - комментариями
и прочими удобными штучками - понятно даже бухгалтерам :)
естественно, они отображаются в M-глобали -
но "настройщику" это не обязательно знать
(благодаря особенностям MUMPS удалось создать на M-сервере
"виртуальный EXCEL" - синхронизированый с реальными
многооконными интерактивными EXCEL-клиентами)

по применению оператора косвенного выполнения Xecute :
атомная бомба -
но управляемая термоядерная реакция - очень даже полезна в энергетике
у нас "X" используется более чем активно - под жестким контролем
(не все разрешено) хотя теоретически уязвимость от злого умышленника
остается.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34068607
латыш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCat Sergey Gladilin MUMPS с Вашей точки зрения действительно настолько приятный язык?
Чертовски приятный ;-) Кем-то было сказано "На нем можно запрограммировать даже ветер в голове". Правда, эта медаль имеет обратную сторону, слишком много возможностей полезно для дисциплинированного ума, и вредно для неокрепшего. А если еще вспомнить понятие "косвенность", команду XECUTE, то у программиста, привыкшего к традиционным языкам, крыша может поехать.

если есть под рукой листок бумаги
можно распечатать основные команды MUMPS - это 99 % любого м-кода
обучение с нуля займет от силы день
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34073991
velmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу времени, необходимого для обучения М .
Насчет одного дня не соглашусь.
По опыту - средний программист начинает писать в нормальном рабочем темпе через две - четыре недели по существующей структуре данных.

Для того, чтобы мог проектировать структуру, нужно еще с полгода. До этого будет продолжать мыслить таблицами и т.д.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34074129
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey GladilinА кто-нибудь в цифрах сравнивал затраты на обучение программистов и/или себестоимость разработки на MUMPS по сравнению с другими языками?
Время обучения примерно около 2 недель. После чего пишут нормальный рабочий код. Считается, естественно, что программист прошел собеседование на вменяемость и наличие логического мышления.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34074158
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
velmarПо поводу времени, необходимого для обучения М .
Насчет одного дня не соглашусь.
По опыту - средний программист начинает писать в нормальном рабочем темпе через две - четыре недели по существующей структуре данных.

Для того, чтобы мог проектировать структуру, нужно еще с полгода. До этого будет продолжать мыслить таблицами и т.д.

уточняю:
один день - надо на изучение основных команд MUMPS
(те что на прилагаемом ранее листке формата A4 )

согласен - чтобы ездить - мало знать правила движения
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34078632
kvasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего там не слышно, нигде бизнес-инкубаторы с Cache не открываются?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34079190
zdi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
zdi
Гость
Судя по форуму cache_ru, обсуждается идея бизнес-колумбариев...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34079406
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zdiСудя по форуму cache_ru, обсуждается идея бизнес-колумбариев...
Ну да, агрессивная финансовая политика InterSystems вполне может до этого довести (агрессивная по отношению к потребителю).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34080333
kvasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В создании БИ неясны некоторые юридические аспекты.
Если Фирма А к примеру уже купила Cache (мульти-серверную версию). Приходят в А предположим предприниматели и говорят – вы даете ваш Cache, как вклад в уставной капитал в будущую фирму Б, которой по сути еще нет, и при этом у А будет доля, к примеру 10%, в уставном капитале фирмы Б.
А не несет ответственности за деятельность Б, как акционер не несет ответственности за деятельность ао.
А не имеет расходов и ждет дивидентов.
Этим А просто развивается, растет, выступая в роли БИ.

Из неясных вопросов – у InterSystem к А могут быть какие-то юридические претензии и возможно ли это технически?


( к слову, если InterSystem сам захочет стать БИ, это круче, тогда по идее IS может давать Cache вместе с типовыми учредительскими документами фирмы Б.
И стал бы InterSystem крутым ПИФ-ом, паевым инвестиционным фондом венчурных компаний, не имея никаких по-сути доп.расходов, сверх того бизнеса что уже есть сейчас и при желании с минимальными рисками, то есть версия Cache для БИ проекта должна быть самой лучшей, но видимо с ежегодной пролонгацией для подстраховки)

ну не знаю, как-то так, это взгляд со стороны
как говорится, все бедные дают советы как вести мильенные бизьнесы :-)))
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34084371
Sergey Gladilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
латышкстати, все конфигурационно-настроечные файлы в нашей системе
это таблицы в ЕХСЕЛ с раскраской - validat - комментариями
и прочими удобными штучками - понятно даже бухгалтерам :)
естественно, они отображаются в M-глобали -
но "настройщику" это не обязательно знать
(благодаря особенностям MUMPS удалось создать на M-сервере
"виртуальный EXCEL" - синхронизированый с реальными
многооконными интерактивными EXCEL-клиентами)

Будьте добры, подскажите, где почитать, как конкретно такие вещи (синхронизация MUMPS с Excel) организованы изнутри?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34084502
латыш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Gladilin латышкстати, все конфигурационно-настроечные файлы в нашей системе
это таблицы в ЕХСЕЛ с раскраской - validat - комментариями
и прочими удобными штучками - понятно даже бухгалтерам :)
естественно, они отображаются в M-глобали -
но "настройщику" это не обязательно знать
(благодаря особенностям MUMPS удалось создать на M-сервере
"виртуальный EXCEL" - синхронизированый с реальными
многооконными интерактивными EXCEL-клиентами)

Будьте добры, подскажите, где почитать, как конкретно такие вещи (синхронизация MUMPS с Excel) организованы изнутри?

это наша разработка
права зарегистрированы
описание системы пока только для внутреннего пользования

дальнейший разговор через
mx@enters.eu
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34096270
Maxim A. Epishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа специалисты по Cache', объясните пожалуйста почему в терминале (и во всех остальных приложениях) команда "Write 2+2/2" выдает ответ "2", и как это можно исправить? Проверялось на версиях 5.0.12 и 5.0.18.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34096323
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim A. EpishinГоспода специалисты по Cache', объясните пожалуйста почему в терминале (и во всех остальных приложениях) команда "Write 2+2/2" выдает ответ "2", и как это можно исправить? Проверялось на версиях 5.0.12 и 5.0.18.

представь что ты на калькуляторе
2+2=4
4/2=2

в языке MUMPS приоритет надо явно задавать скобками
2+(2/2)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34097578
Maxim A. Epishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MX -- ALEXпредставь что ты на калькуляторе

распечатал. приклеил к монитору. думаю.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34097613
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim A. Epishin MX -- ALEXпредставь что ты на калькуляторе

распечатал. приклеил к монитору. думаю.

не надо думать с нами тот кто все за нас решит
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34098005
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim A. EpishinГоспода специалисты по Cache', объясните пожалуйста почему в терминале (и во всех остальных приложениях) команда "Write 2+2/2" выдает ответ "2", и как это можно исправить? Проверялось на версиях 5.0.12 и 5.0.18.
1. Почему. Потому что в мампсе нет приоритета операций. Все выполняется слева направо если порядок не задан явно скобками.
2. Как исправить. Не надо исправлять. Все программисты рассчитывают на соблюдение стандарта.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #34167338
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Gladilin MX -- ALEXm-server считает все на
виртуальном встроенном многопользовательском EXCEL
используя все Ваши написанные м-проги в том числе
и выкладывает данные в виде EXCEL клиентам Вашей сети
- многооконые интерактивные документы

Честно говоря, странно слышать этот ответ (всегда примерно один и тот же) в половине тредов про М. Подобной технологией (прозрачное отражение EXCEL на некоторую структуру данных на сервере, только без М-команд в ячейках) я бы обзавелся, но
1) насколько я осознал, никакого отношения она к М не имеет. М подходит Вам по ряду причин (короткие имена операторов позволяют влезать в ограничение длины строки 255 символов в EXCEL при хранении М-команд в ячейках), но на его месте мог бы быть и другой язык

2) данная технология не является частью М-системы, а является Вашей собственной разработкой - поэтому презентовать ее как возможное решение для других программистов странно - дарить Вы ее не собираетесь, а написать самому что-то подобное трудно (Вы утверждали, что это потребовало существенных трудозатрат)

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


1)) мог бы быть и другой язык - но какой ? - подскажите !

2)) 100 EUR

3)) вариант - после отладки двоиник-эталон-EXCEL-листа на сервере закрывается на замок
далее все команды из ячеек сверяются с эталонными на точное совпадение
(но пользователь может менять оформление документа)
или даже просто пароль на изменения EXCEL-листа клиента
за 5 лет проблем с этим не было


без м-команд в ячейках EXCEL технология MX теряет весь узюм -
выразительность и ясность - в каком месте документа или формы что происходит -
и нельзя будет сшить новый документ нарезая кусками от других
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Что же главное в Cache?
    #35602725
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBПростите, совсем забыл

Sergey Gladilin Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах?

Да простят меня MUMPSисты за упрощение.

set Time=текущее время в секундах

set ^a(Time)=^b(Time-0) + ^c(Time-346) * ^d(Time-786)

где:
^b(Time-0) взял из БД текущее значения параметра <b>

^b(Time-0) + ^c(Time-346) к нему прибавил значение параметра <c>, но которое было сохранено в БД (получено от устройства измерительного) 346 секунд назад

^b(Time-0) + ^c(Time-346) * ^d(Time-786) сумму умножил на значение параметра <d>, но которое было сохранено в БД (получено от устройства измерительного) 786 секунд назад

set ^a(Time)=^b(Time-0) + ^c(Time-346) * ^d(Time-786) вычисленное выражение сохранил в БД по текущему времени


И никаких тебе критилок с таблицами в виде SELECT...... WHERE...

А то тут некоторые все возмущаются по поводу циклов и ничего не говорят о том что SELECT это уже неявный цикл.
Ещё хуже - рекурсия...
с возможностью переполнения стека,
с худшим быстродействием по определению (иначе было бы невозможно реализовывать вложенные SELECT-ы)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35602817
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievAlexKBПростите, совсем забыл

Sergey Gladilin Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах?

Да простят меня MUMPSисты за упрощение.

set Time=текущее время в секундах

set ^a(Time)=^b(Time-0) + ^c(Time-346) * ^d(Time-786)

где:
^b(Time-0) взял из БД текущее значения параметра <b>

^b(Time-0) + ^c(Time-346) к нему прибавил значение параметра <c>, но которое было сохранено в БД (получено от устройства измерительного) 346 секунд назад

^b(Time-0) + ^c(Time-346) * ^d(Time-786) сумму умножил на значение параметра <d>, но которое было сохранено в БД (получено от устройства измерительного) 786 секунд назад

set ^a(Time)=^b(Time-0) + ^c(Time-346) * ^d(Time-786) вычисленное выражение сохранил в БД по текущему времени


И никаких тебе критилок с таблицами в виде SELECT...... WHERE...

А то тут некоторые все возмущаются по поводу циклов и ничего не говорят о том что SELECT это уже неявный цикл.
Ещё хуже - рекурсия...
с возможностью переполнения стека,
с худшим быстродействием по определению (иначе было бы невозможно реализовывать вложенные SELECT-ы)
Ничего не понятно в этом посте.
Какая связь между 1) рекурсией, 2) быстродействием и 3) вложенными селектами? Рукотворный бермудский треугольник?
И какое это имеет отношение к вышеприведенному примеру чтению и записи значений?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35603185
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. ну я,

Вы написали, что Select - это неявный цикл.
Для трансляции запросов SQL лучше использовать рекурсивные алгоритмы, т.к. они проще в реализации и отладке, но хуже в исполнении.
В этом смысле.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35603250
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievУв. ну я,

Вы написали, что Select - это неявный цикл.
Для трансляции запросов SQL лучше использовать рекурсивные алгоритмы, т.к. они проще в реализации и отладке, но хуже в исполнении.
В этом смысле.
Ув. al veliev.
Вы приписываете первое что Вам приходит в голову каждому кто с Вами общается?
Вы действительно писали машинку исполнения select, чтобы судить что лучше а что нет?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35603252
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. al veliev,
Вы действительно считаете, что языки Mumps и sql как-то коррелируют на самом деле?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35604046
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mumps-ист... "ОСУБД на MUMPS" (никто правда не видел этого чуда)...
Видел... Притормаживает в некоторых местах... Правда, само собой, псевдо-объекты, но реализация оч. грамотная, может даже гениальная
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35607694
Dorsaj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем присутствующим.

Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет. Не смог найти ни одного мало мальски достойного подтверждения что это лучше чем к примеру Oracle.

Во всех сравнительных анализах стоит либо прямая ссылка на intersystems. либо эта ссылка в числе прочих в списке литературы. Но позвольте, это же то же самое что спрашивать что лучше, Cache' или Oracle на oracle.com.
99% людей работающих с Cache и MUMPS расхваливают его на все лады. (Как сейчас помню, как у моего знакомого появился линукс дома, один из первых в моем городе, и как он его потом расхваливал.. уши вяли).
В многомерности не увидел ни одного преимущества, наоборот - Двумерные таблицы приучают, на мой взгляд, к дисциплинированности чем всю базу представлять единым n - мерным массивом.
Возможность обращаться напрямую к портам... Но простите, разве нельзя написать хранимку в оракле на java.
В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся.

Я знаю компанию, монополиста в моем и близлежащих регионах, которая перешла на оракл с Cache'

Дело вот в чем. Мне не жалко потратить время на плотное изучение ее. Но не хотелось бы тратить время на ерунду.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35607758
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Перелопатил кучу инфы. Приобрел кучу бесполезных знаний
+100

Думаю, что выражу общее мнение, если скажу, что каше это не ерунда ;-)
Если предполагется возможность работы с каше, то однозначно стоит ее изучать.
"Просто так" без цели и без смысла вообще ничего не стоит изучать.

Чтобы выяснить что лучше, не надо читать пропагандисткие тексты IS, у меня работа их маркетологов вызывает отвращение. Да и вообще, подозреваю, что вопрос "что лучше" не имеет смысла, иначе можно было бы оставить одну "хорошую" СУБД, а остальные списать в утиль.
Каше просто немного иная, чем тот же оракл (который я не знаю совсем)

Чтобы понять преимущества каше, с ней нужно работать. Причем не пытаться перенести свои знания с оракла, а приобретать навыки заново, иначе, если писать на каше как на оракле - никаких преимуществ не получите.

>В многомерности не увидел ни одного преимущества
Я не вижу преимущества для описания простейшей ситуации лепить 20 реляционных таблиц и искусственно калечить мозг запихивая модель в реляционной схему. В каше проще - хотите таблицы - вот вам таблицы. Не хотите - используйте прямой доступ или объекты.
Согласен, расхолаживает и провоцирует плохой стиль программирования.

>всю базу представлять единым n - мерным массивом.
Какой ужас! Конечно нет. У нас хранение в таблицах - так проще и универсальней. Для более-менее сложной обработки данных они вкачиваются в глобалы и обрабатываются там.

>Возможность обращаться напрямую к портам...
Не используем. Это вообще наследие тех времен, когда каше сильно применялась для управления медицинским оборудованием.

>В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся.
Зря смеялись.
Я скорее сравнил бы язык чистый М с ассемблером. А в целом каше действительно можно сравнить с С++ - в нем тоже можно делать ассемблерные вставки.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35608641
Ahil79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажу так. М технолигии существуют с незапамятных времен. Еще и меня на свете небыло, а они уже развивались. И раз находятся люди, которые считают что с использованием хранимых многомерных массивов удобнее решать некоторые задачи, то этоже не спроста.
На личном опыте применяю прямой доступ тогда, когда нужно реализовать сложную логику данных (при помощи таблиц конечно тоже можно но угробишь кучу времени, да и еще, если условия поменяются, перепроектировать эту дисциплинированную структуру данных со всеми связими - мрак (однажды наступил на эти грабли)).
Таблички и SQL запросы к ним, хороши для создания отчетов. Создавать отчеты, используя прямой доступ, ну очень сложно для меня (тоже личный опыт).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35610149
DorsajПривет всем присутствующим.
Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет.
А вы сделайте проще - скачайте однопользовательскую версию, и попробуйте сделать какое-нибудь несложное упражнение, типа Object QuickStart, потом можно пару туториалов пройти,в том числе посвященных работе прямого доступа, если интересует не только объектное и реляционное представление. Займет это у вас один вечер, от силы, вместе с экспериментами.
Для того, чтобы понять, нравится оно вам, или нет - это самый быстрый способ, и уж точно быстрее, чем читать многостраничные изыскания в сети, или холивары на форумах.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35610292
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. ну я,
я действительно неудачно выразился, приписав Вам то, что Вы процитировали.
Сам это заметил, когда уже выставил пост. Так что если я Вас обидел - извините.
А реализация SQL-доступа на М действительно у меня есть в виде шаблона (это всего лишь 18 комманд на М). Концепция описана у меня на сайте http://www.cgi2m.net.ua в статье M in WEB (ориентирован под Gecko броузеры). Ведь никто не мешает мыслить декларативно на процедурном языке. Чем меня М и привлекает - из него можно изваять что угодно.
Если Вы решите использовать этот пример для построения Select ... (Where Select ...), то Вы увидите рекурсию воочию.
Создатели Пролога прямо заявляли, что реализации поиска в их языке - рекурсивные.
Дело в том, что реализация с использованием циклов затруднена из-за одновременного использования данных на разных уровнях программного стека (слизывание крема с разных слоёв пирожного :) ) и требует более сложных алгоритмов. Впрочем, всё это хорошо описано в специальной литературе.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35610316
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну яУв. al veliev,
Вы действительно считаете, что языки Mumps и sql как-то коррелируют на самом деле?
Ув. ну я,
"слияние" языков, по моему мнению - уже почти сегодня. Стандарт ISO M предполагает включение комманд посторонних процессоров в тело М программы. Подобное включение HTML кода в тело М программ уже реализовано в M-compiler.

Например (только на уровне концепции):
set A=2
SQL select * from clients into _m.B
zwrite

-------
A=2
B(1)="Ivan Ivanov"
B(2)="Petr Petrov"
.....

Аналогично можно поступить и со стороны SQL (пример только на уровне концепции, реализация наверняка будет удобнее):

Declare M as object
....

Select * from (M.database.A) into A where (A.Nam=M.piece(M.database.A," ") and A.Lnam=M.piece(M.database.A," ",2)

Уже сейчас согласно документации разработчика м21 под Windows реализован как объект
(выводы делайте сами!).
Впрочем, подобная вещь гораздо лучше описана в журнале "Компьютеры+Программы"(№7-8/2003)
в статье "Одна СУБД - много методов доступа". Так что не я автор идеи.
К сожалению, стандарт ANSI MUMPS этого включения не предусматривает.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35610545
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievУв. ну я,
я действительно неудачно выразился, приписав Вам то, что Вы процитировали.
Сам это заметил, когда уже выставил пост. Так что если я Вас обидел - извините.
На этом сайте Вы, похоже, один из немногих кто извиняется )))
Неожиданно. Принято.
al-velievА реализация SQL-доступа на М действительно у меня есть в виде шаблона (это всего лишь 18 комманд на М). Концепция описана у меня на сайте http://www.cgi2m.net.ua в статье M in WEB (ориентирован под Gecko броузеры). Ведь никто не мешает мыслить декларативно на процедурном языке. Чем меня М и привлекает - из него можно изваять что угодно.
Если Вы решите использовать этот пример для построения Select ... (Where Select ...), то Вы увидите рекурсию воочию.
Потому что Ваша концепция развертывания отношений на этом построена. В других реализациях sql движков планы выполнения могут быть иными. Посмотрите планы выполнения на других реализациях. В той же cache есть развертывание плана, например. Тот же MSSQL показывает планы выполнения.
al-velievСоздатели Пролога прямо заявляли, что реализации поиска в их языке - рекурсивные.
Так пролог и был исследовательским проектом, крутящимся вокруг резольвирования с конкретизацией. Их цель и состояла в идее применения резольвенты. У них и задача была исследовательская, построение машинки поиска решения и вывода, а не работы с данными.
al-velievДело в том, что реализация с использованием циклов затруднена из-за одновременного использования данных на разных уровнях программного стека (слизывание крема с разных слоёв пирожного :) ) и требует более сложных алгоритмов. Впрочем, всё это хорошо описано в специальной литературе.
Машинки развертывания отношений в sql строятся на алгебре отношений, это не просто другие алгоритмы, это другая идеология, если можно так сказать. То, что у Вас получилось построить машинку sql на рекурсии - состоявшийся факт и снимаю шляпу. К сожалению, это поверхностно. В нескольких проектах мы применяли практически такое же решение, как и у Вас. Работа со структурами данных в каше без хранимых объектов и sql, по примерно той же схеме. В какой то мере Ваше решение (d ^squl) мне понятно. Но это не sql, вынужден огорчить.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35610573
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. ну я,
безусловно, реализация разрешения запросов SQL разработчиком на физическом уровне будет протекать гораздо более развитыми средствами. Наверняка используется общий пул с хешированием данных и т.д. Но в конце концов оба пути, учитывая внутреннюю обработку на М, будут во многом похожи. С другой стороны ведь и не ставил задачу писать SQL - решатель. Моя задача была гораздо скромнее - облегчить переход с SQL на M при необходимости. Как Вы наверняка заметили, процесс этот при необходимости можно автоматизировать. Что и не удивительно - SQL ведь первоначально и создавался для системных аналитиков и постановщиков задач.
Относительно Вашего замечания по Прологу хочу заметить, что он оперирует с базой знаний
(база данных+правила вывода), т.е. объектом более сложным, чем просто база данных, и у него есть свои реализации и сторонники. У меня лично библия И.Братко по Прологу - настольная книга. Замечательная вещь. Как он мыслит!!!!
Кстати, У меня к Вам будет просьба, если Вы не будете против и у Вас есть такая возможность, протестируйте мой пример из сайта на простые числа (статья Why M из сайта. Программа example ) на Cashe,- к сожалению, я не имею такой возможности. Я буду Вам очень признателен - у этого примера просто шикарный выход на многопоточную обработку .
А относительно используемой алгебры отношений не могу не заметить, что "перелив" из одной алгебры в другую - больше дело знаний и умений того, кто это делает. Ведь получилось же у Вас.
И ставить забор, там где его нет - вредно. С одной стороны, реляционные отношения - вырожденная иерархия, а с другой, любая иерархия - это реляционное отношение на уровне (объект) <-> (его множество - его алгебра). Так что всё зависит от Вас...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35610842
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис ЕгоровА вы сделайте проще - скачайте однопользовательскую версию, и попробуйте сделать какое-нибудь несложное упражнение
Могу предложить еще один вариант т.с. "для проведения сравнения" СУБД...
- Придумать задачку
- Попросить ее реализовать разным СУБДшникам

Если задачка будет интересна - обязательно предложат несколько вариантов решения. Поскольку "новичек" не сможет на все 100% реализовать возможности любой СУБД...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35611089
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievКстати, У меня к Вам будет просьба, если Вы не будете против и у Вас есть такая возможность, протестируйте мой пример из сайта на простые числа (статья Why M из сайта. Программа example ) на Cashe,- к сожалению, я не имею такой возможности. Я буду Вам очень признателен - у этого примера просто шикарный выход на многопоточную обработку .
Миллион job?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35613201
Бред
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DorsajПривет всем присутствующим.

Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет. Не смог найти ни одного мало мальски достойного подтверждения что это лучше чем к примеру Oracle.

Во всех сравнительных анализах стоит либо прямая ссылка на intersystems. либо эта ссылка в числе прочих в списке литературы. Но позвольте, это же то же самое что спрашивать что лучше, Cache' или Oracle на oracle.com.
99% людей работающих с Cache и MUMPS расхваливают его на все лады. (Как сейчас помню, как у моего знакомого появился линукс дома, один из первых в моем городе, и как он его потом расхваливал.. уши вяли).
В многомерности не увидел ни одного преимущества, наоборот - Двумерные таблицы приучают, на мой взгляд, к дисциплинированности чем всю базу представлять единым n - мерным массивом.
Возможность обращаться напрямую к портам... Но простите, разве нельзя написать хранимку в оракле на java.
В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся.

Я знаю компанию, монополиста в моем и близлежащих регионах, которая перешла на оракл с Cache'

Дело вот в чем. Мне не жалко потратить время на плотное изучение ее. Но не хотелось бы тратить время на ерунду.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35613233
Бред
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DorsajПривет всем присутствующим.

Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет. Не смог найти ни одного мало мальски достойного подтверждения что это лучше чем к примеру Oracle.

Во всех сравнительных анализах стоит либо прямая ссылка на intersystems. либо эта ссылка в числе прочих в списке литературы. Но позвольте, это же то же самое что спрашивать что лучше, Cache' или Oracle на oracle.com.
99% людей работающих с Cache и MUMPS расхваливают его на все лады. (Как сейчас помню, как у моего знакомого появился линукс дома, один из первых в моем городе, и как он его потом расхваливал.. уши вяли).
В многомерности не увидел ни одного преимущества, наоборот - Двумерные таблицы приучают, на мой взгляд, к дисциплинированности чем всю базу представлять единым n - мерным массивом.
Возможность обращаться напрямую к портам... Но простите, разве нельзя написать хранимку в оракле на java.
В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся.
Я знаю компанию, монополиста в моем и близлежащих регионах, которая перешла на оракл с Cache'

Дело вот в чем. Мне не жалко потратить время на плотное изучение ее. Но не хотелось бы тратить время на ерунду.

1. Целый день - это много, конечно, но, видимо, не достаточно):
2. Видимо под ОСУБД Вы понимаете СУБД, основанные на парадигме ООП. Поскольку ООП не имеет никакого отношения к БД, то такие СУБД не могут продвинуть теорию и практику БД к новым вершинам, так сказать. Дейт, в частности, достаточно логично показазывает не достатки таких ОСУБД. Кроме того, "объектные технологии" (на основе ООП) внедрены во все существующие СУБД в той или иной степени.
3. Oracle, в частности, никогда не была "реляционной СУБД", хотя бы по той простой причине, что РМД принципиально не реализуема. И заимоствовала из mumps, все что могла, хотя это и было не понятно большигству разработчиков, так как выходило за рамки "реляционной теории" и, мягко говоря, не выглядело органично. ROWID, конечно, были объективно необходимы, причем не только для организации индексов (кстати говоря, они используются и в объектных ссылках). Появившиеся в 8i IOT типичный кусочек mumps, но как объяснить преимущества этого инородного для "реляционной технологии" кусочка - даже у Кайта не очень получается. И т.д.
4. Почитайте отчеты IBM 1968-1969гг. Кодд хотел бы обеспечить хоть какую-то семантику данных путем поддержки сущностей и связей между сущностями. Но не получилось. Победила "алгебра". И БД радикально утратили идентификацию, навигацию и семантику. А если называть вещи своими именами - БД перестали быть БД. Кодд мечтал приблизить данные к пользователю (благодаря практически естественному ЯМД), а получилось принципиально наоборот. Теперь данные находятся на "сервере БД" и доступны только для шаманов (архитекторов, программистов и прочих "разработчиков"). Чтобы просто получить фамилию сотрудника нужно идти к шаману):
5. Я, по этому поводу, 15 лет назад спросил Паскаля: а что думает об этом печальном результате сам Кодд (с которым Паскаль был знаком). Однако господин Паскаль был уже несколько раздражен, так как не смог ответить по-существу на несколько вопросов, и сказал: "Не надо преувеличивать". Ну коненчо, не надо. Ни преувеличивать, ни преуменьшать.
6. mumps единственная целостная технология баз данных, предназначенная, в первую очередь, для создания СУБД. Очень хорошо на mumps реализуется классическая объектная СУБД, так как, в частности, идентификаторы экземпляров принципиально отделены от свойств объекта (что невозможно в "Р"СУБД). Далее все органично вытекает одно из другого: связи естественным образом реализуются связями между идентификаторами, семантика данных поддерживается естественным образом именно благодаря тотальной идентификации метаданных.
7. В результате, можно (и это уже давно сделано на практике) создать систему, позволяющую радикально сократить программирование (в частности, вообще отказаться от программирования интерфейсов), прекратить шаманство и приблизить данные к пользователям.
8. О какой многомерности Вы говорите вообще непонятно. mumps не является "многомерной" системой в смысле MS AS, например. Но на mumps прекрасно работает OLTP+OLAP в рамках одной системы.
9. "Таблицы" в ОСУБД на mumps тоже есть, как внешнее представление объекта, причем, в отличие от Oracle или MS SQL на количество "колонок" в таблице нет ограничений (так же как и на "длину записи").
10. Наверное, Вам следует продолжать "долго смеяться". Здоровее будете):
11. Мой Вам совет: не тратьте время на изучение mumps. Сейчас не те времена. Продолжайте шаманить, так как это хороший, в коммерческом отношении, путь):
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35614559
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бред,

Я с огромным удовольствием читаю Ваши статьи.
В них всегда нахожу много интересного, полезного, наконец умного.

Ну их всех тех тащусиков, не тратьте свои силы на их перевоспитание - бесполезно.
Как говорится, горбатого могила выправит.

Лучше пишите поучительные статьи нам, тем кто умеет слушать.

Если есть где почитать Ваши мысли, обзорные статьи и т.п. дайте в ответе ссылку, пожалуйста.

Заранее благодарен.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35616969
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. ну я,
я тестировал эту задачу на GT.M на своём ноутбуке HP/Compaq-NC8000(1700MHZ/512ram/40GB hdd).
Процесс протекал "рывками", в общей сложности более 36 мин. Максимальное количество заданий - более 300, база данных выросла до 0.5 Гбайт (У Вас может быть и меньше). Задача эта лежала у меня под спудом более 2-х лет, так как я сомневался в способности М-трансляторов провести точно обработку данных с таким количеством заданий в таком потоке. Для того, чтобы запустить её, понадобилось общение с K.S.Bhaskar. Идея задачи родилась после повторного прочтения книги И. Братко по Прологу (Гл.16, пример по нахождению наибольшего общего делителя. Просто супер! Арифметическая задача без вычислений!). Я буду очень рад, если она сработает и на другом достаточно большом числе - важна проверка работоспособности алгоритма.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35618194
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр, я протестировал вашу программку (нахождения всех простых чисел от 2 до 1000000 методом "решета" Эратосфена) в Cache. Параметры моей тестовой установки:
>w $zv
Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2008.1 (Build 401_0_6608) Fri Apr 4 2008 08:43:42 EDT

$uname -a
Linux mzserver.sparm.com 2.6.24.3-50.fc8 #1 SMP Thu Mar 20 13:39:08 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

Два вот таких двухядерных проц-а:
Dual-Core AMD Opteron(tm) Processor 2218
cpu MHz : 2613.392

Немного изменил алгоритм:
запуск Job с временем ожидания 0 в мало-мальски загруженной системе в Cache бессмыслен: они просто не будут запускаться (первый же прогон это подтвердил). Изменил на 10.

сразу захотелось контролировать максимальное кол-во параллельно запускаемых JOBов (ибо и ресурсы компа, и лицензия не резиновые :), поэтому вставил ограничитель (NJOBMAX).
Результаты таковы:
Код: plaintext
1.
2.
3.
4.
5.
6.
NJOBMAX= 128 
h1="61292,50636" |  30  -  60  s 
h2="61292,50696"

NJOBMAX= 0 
h1="61292,62170" |  13  s
h2="61292,62183"
Суммарный размер глобалов в процессе работы достигал 50Мб. Как у Вас получилось 0.5Гб - не понимаю.
При NJOBMAX=0 вся работа проделывалась в главной программе, без запуска Job'ов.
Результат меня особо не удивил: для оптимальной производительности кол-во параллельных процессов должно быть близко к кол-ву процессоров/ядер, и это если повезет и задача хорошо распараллеливается. При этом не забываем о том, что в Cache всегда присутствует минимум еще один параллельный процесс - демон записи (WRTDMN), это при условии, что БД не расширяется и глобалы не журналируются. С таким алгоритмом, как у Вас, по кр. мере в Cache однопоточный вариант оказался явным лидером.
Тем не менее, результат меня не обрадовал, что привело к появлению несколько другого подхода к распараллеливанию работы в задаче. На том же компе удалось достичь 7 сек на 4 Job'ах, на 1 Job'e - 10 сек. Разница невелика, но все-таки она есть. Кто быстрее? :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35618683
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Parall	n  s h1=$zh k ^mtemp("s")
	s Count= 1000000 ,JobCount= 2 ,^mtemp("s")=Count,^mtemp("s","j")=JobCount
	f p= 2 , 3 : 2  s q= 1  x "f f=3:2 q:f*f>p!'q  s q=p#f" i q s ^mtemp("s","l",p)="" i $i(^mtemp("s","n")),$i(^mtemp("s","s"),p) i (p*p)/$zln(p*p)/2>Count s ^mtemp("s","c")=p q
	f i=1:1:JobCount-1 j Job
	d Job f  q:^mtemp("s","j")=0  h 0.1
	w ^mtemp("s","s"),!,$zh-h1,!
	q
Job	n  m l=^mtemp("s","l") s Count=^mtemp("s"),qq=0 f  d  q:qq
	.s p=$i(^mtemp("s","c"),2),q=1,f="" f  s f=$o(l(f)) q:f*f>p  s q=p#f q:'q
	.q:'q  i $i(^mtemp("s","s"),p) s n=$i(^mtemp("s","n")) q:n<Count  i n=Count l +^mtemp("s","last") s qq=1,^mtemp("s","last")=p l -^mtemp("s","last") q
	.s q=0,qq=1 f  l +^mtemp("s","last") q:^mtemp("s","last")  l -^mtemp("s","last") h 0.1
	.i p>^mtemp("s","last") i $i(^mtemp("s","s"),-p) l -^mtemp("s","last") q
	.i $i(^mtemp("s","s"),^mtemp("s","last")) s ^mtemp("s","last")=p,qq=1 l -^mtemp("s","last")
	i $i(^mtemp("s","j"),- 1 )
	q
Начальная инициализация ряда простых чисел (f p=2,3:2 s q=1 x "f f=3:2 q:f*f>p!'q s q=p#f" i q.....) позаимствована из подписи Keith Lynch'а (высмотрено в MUMPS FAQ).
Считается сумма первого миллиона простых чисел.
JobCount=2 - сколькими процессами считать
На Intel Core2Duo 2.33 МГц в 2 процесса 74 секунды
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35618718
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заполнение глобала ^mtemp("s","l") простыми числами <= 1000000 на том же железе (Intel Core2Duo 2.33 МГц) в 2 процесса <2.4 сек.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Parall1	n  s h1=$zh k ^mtemp("s")
	s Count= 1000000 ,JobCount= 2 ,^mtemp("s")=Count
	f p= 2 , 3 : 2  s q= 1  x "f f=3:2 q:f*f>p!'q  s q=p#f" i q s ^mtemp("s","l",p)="" i (p*p)/$zln(p*p)/2>Count s ^mtemp("s","c")=p q
	f i=1:1:JobCount-1 j Job1
	d Job1 f  q:^mtemp("s","c")'<Count  h 0.1
	w $zh-h1,!
	q
Job1	n  m l=^mtemp("s","l") s Count=^mtemp("s"),qq=0 f  d  q:qq
	.s p=$i(^mtemp("s","c"),2) i p>Count s qq=1 q
	.s q=1,f="" f  s f=$o(l(f)) q:f*f>p  s q=p#f q:'q
	.q:'q  s ^mtemp("s","l",p)=""
	q
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35618748
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу заметить, что в моем алгоритме выставлять значение JobCount больше чем число процессоров*ядер не имеет смысла, так как каждый процесс cache грузит "свой" процессор по максимуму.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35619235
MX-1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
al-velievУв. ну я,
я тестировал эту задачу на GT.M на своём ноутбуке HP/Compaq-NC8000(1700MHZ/512ram/40GB hdd).
Процесс протекал "рывками", в общей сложности более 36 мин. Максимальное количество заданий - более 300, база данных выросла до 0.5 Гбайт (У Вас может быть и меньше). Задача эта лежала у меня под спудом более 2-х лет, так как я сомневался в способности М-трансляторов провести точно обработку данных с таким количеством заданий в таком потоке. Для того, чтобы запустить её, понадобилось общение с K.S.Bhaskar. Идея задачи родилась после повторного прочтения книги И. Братко по Прологу (Гл.16, пример по нахождению наибольшего общего делителя. Просто супер! Арифметическая задача без вычислений!). Я буду очень рад, если она сработает и на другом достаточно большом числе - важна проверка работоспособности алгоритма.

al-veliev
С днем Рождения !

и успехов
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620408
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мои средние результаты (на той же установке, на большом числе прогонов):
Код: plaintext
1.
 1  Job(s): Calculation time of simple numbers list (from  2  to  1000000 ) =  3 . 83 
 2  Job(s): Calculation time of simple numbers list (from  2  to  1000000 ) =  3 . 95 
С другой стороны, программа MaWra выдала:
Код: plaintext
1.
 2  Job(s):  4 . 148126 
 1  Job(s):  6 . 465733 
Т.е. не получилось у меня хорошо разделить работу между JOBами, но (по кр. мере на моей системе) я быстрее :) MaWr, ради интереса, прогоните у себя мой вариант (с NJOBMAX=1 и 2). Вот он (написан по мотивам программы Ал. Велиева):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
 s NJOBMAX= 1   		; max number of concurrent jobs
 s Q= 2 			; jobs load balance coefficient (from  2  to  32 ) 
 s Lim= 1000000  		; max simple number
 s SuppressOutput= 1    ; if = 1 , don't output simple numbers list to $principal device
 /* Out:
 ^a - simple numbers list
 >$p - its copy (if not SuppressOutput) */
 n c,d1,h1,i,n,njob,j,jd,jstat,k,locallim,vm
 s NJOBMAX=$G(NJOBMAX,0) i NJOBMAX=0 w !,"NJOBMAX=0" q
 s Q=$g(Q,2) i Q'> 1  w !,"Wrong Q="_Q q
 k ^a,^pid,jj s Lim= 1000000 ,snum= 0 ,njob= 0 ,h1=$$startt()
 f i= 1 : 1 :Lim s ^a(i)=i
 If NJOBMAX= 1  {
   d al( 1 ,Lim,Lim)
 } else {	 
   s i= 1 ,locallim=$$b1(Q,NJOBMAX) s locallim=locallim/ 4 
   for j= 1 : 1  { 
   	q:i'<Lim  s vm=$s(Lim<(i+locallim-1)||(j=NJOBMAX):Lim,1:i+locallim-1)
   	w $zt($p($h,",",2),1)," ",$j(i,7)," ",$j(vm,7)," " j al(i,vm,Lim)
   	s i=vm+1 s locallim=locallim*Q s:j<3 locallim=locallim*2
   	s jj($zchild)="" w "job "_$zchild f k=1:1:5 if $d(^pid($zchild)) { w " started",! q } h 1
   }
   w !
   for  { 
   	s jstat=0,j="" f  s j=$o(jj(j)) q:j=""  s jd=$d(^pid(j)),jstat=jstat+jd i jd=0 w $zt($p($h,",",2),1)_" job "_j_" finished",! k jj(j)
   	q:jstat=0
   	h 0.5
   }	
 }
 s d1=$$deltat(h1)
 if '$g(SuppressOutput) {
 	s i= 1 ,snum= 0  f  s i=$o(^a(i)) q:i=""  i $i(snum) w "S ",i,!
 	s d2=$$deltat(h1)
 } 	
 w !,NJOBMAX_" Job(s): Calculation time of simple numbers list (from 2 to "_Lim_") = "_d1
 if '$g(SuppressOutput) w !,"Output time = "_(d2-d1)
 q
al(v0,vm,Lim)
 s ^pid($j)=""
 s i=v0 f  s i=$o(^a(i)) q:i=vm||(i="")  s c=i+i i c<Lim f n=c:i:Lim i $d(^a(n)) k ^a(n)
 k ^pid($j)
 q
b1(q,n) s Lim=$g(Lim, 1000000 ) q Lim*(q- 1 )\(q**n- 1 )
startt() q $zh
deltat(h) q $zh-h
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620461
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 Job(s): Calculation time of simple numbers list (from 2 to 1000000) = 3.955174
2 Job(s): Calculation time of simple numbers list (from 2 to 1000000) = 3.928759
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620539
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaWr, спасибо :) Скорость моей проги можно поднять ~ на 10%, если заполнять глобал так: f i=1:1:Lim s ^a(i)=""
но это, конечно, не принципиально. Пока что можно констатировать, что Ваша 2-поточная прога быстрее моей однопоточной на Core2 Duo, а на Dual-Core AMD - все наоборот. Разница еще и в том, что я строю глобал простых чисел (^a) в текущей области, поэтому существенно, чтобы журналирование глобалов в БД было отключено.
Было бы здорово, если для полноты картины Вы указали $zv и версию ОС.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620544
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал заменить в программе Алексея Маслова "простые" глобалы на ^mtemp(индекс) - результат ухудшился.
Переделал свою программу на "простые" глобалы. Получил результат 2.25с

Выходит процессоры от Intel деление производят быстрее, чем от AMD :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620557
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
USER>w $zv
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
ОС Windows XP Professional SP3
В конфигурации поставил режим WIJ - частичный
Первой строчкой al сделал d DISABLE^%NOJRN
Скорость не поменялась..
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620580
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov:
А Вас в системе 2 2-х ядерных процессора. Запуск моей программы 4-мя потоками какой результат покажет?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35620882
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov
Скорость Вашей проги еще можно поднять, если заполнять глобал так:
Код: plaintext
 f i= 2 , 3 : 2 :Lim s ^a(i)=""
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35621089
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот более удачная реализация распараллеливания решета Эратосфена:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Parall2	n  s h1=$zh k ^l,^c,^j s Count= 1000000 ,JobCount= 2 
	f p= 2 , 3 : 2 :Count s ^l(p)=""
	s ^c= 3 ,^j=JobCount f i= 1 : 1 :JobCount- 1  j Job2(Count)
	d Job2(Count) f  q:'^j  h  0 . 1 
	w $zh-h1,!
	q
Job2(Count) n (Count) s q= 0  f  d  q:q
	.l +^c s j=^c i j="" l -^c s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" l -^c s q= 1  q
	.s ^c=m l -^c f i=n+j:j:Count k ^l(i)
	i $i(^j,- 1 )
	q
1 поток: 1.883825 сек.
2 потока: 1.594853
все равно разница не велика..
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35621157
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaWrЗапуск моей программы 4-мя потоками какой результат покажет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CRAI52>d ^mawr( 1 )
 1  Job(s):  6 . 10044 

CRAI52>d ^mawr( 2 )
 2  Job(s):  4 . 155397 

CRAI52>d ^mawr( 3 )
 3  Job(s):  4 . 261928 

CRAI52>d ^mawr( 4 )
 4  Job(s):  5 . 763691 

CRAI52>d Parall2^mawr( 1 )
 2 . 086427 

CRAI52>d Parall2^mawr( 2 )
 2 . 310962 

CRAI52>d Parall2^mawr( 3 )
 2 . 348038 

CRAI52>d Parall2^mawr( 4 )
 2 . 265273 
Итак, снова победил однопоточный вариант (теперь уже Ваш), по крайней мере, на AMD. Интересно было бы проверить на Core2 Duo в актуальной версии Cache.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35621314
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Parall2(JobCount) n (JobCount) s h1=$zh k ^l,^c,^j s Count= 1000000 
	f p= 2 , 3 : 2 :Count s ^l(p)=""
	s ^c= 3 ,^j=JobCount
	if JobCount= 1  { 
		d Job21(Count)
	} else {		
		f i= 1 : 1 :JobCount- 1  j Job2(Count)
		d Job2(Count) f  q:'^j  h  0 . 1 
	}		
	w $zh-h1,!
	q
Job2(Count) n (Count) s q= 0  f  d  q:q
	.l +^c s j=^c i j="" l -^c s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" l -^c s q= 1  q
	.s ^c=m l -^c f i=n+j:j:Count k ^l(i)
	i $i(^j,- 1 )
	q
Job21(Count) n (Count) s q= 0  f  d  q:q
	.s j=^c i j="" s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" s q= 1  q
	.s ^c=m f i=n+j:j:Count k ^l(i)
	i $i(^j,- 1 )
	q
Код: plaintext
1.
2.
3.
4.
5.
CRAI52>d Parall2^mawr( 1 )
 1 . 531951 

CRAI52>d Parall2^mawr( 2 )
 2 . 208054 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35621521
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые друзья!
Вчера у меня был день рождения.
Зайдя сегодня на форум, я и представить не мог такого отклика на представленную задачу.
Это для меня огромный и неожиданный подарок от МУМПС-сообщества.
Спасибо огромное Вам всем, здоровья и удачи на жизненном пути!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35621977
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov
Код: plaintext
1.
2.
3.
4.
5.
CRAI52>d Parall2^mawr( 1 )
 1 . 531951 

CRAI52>d Parall2^mawr( 2 )
 2 . 208054 


С другой стороны, возможно, выборка простых чисел <1 000 000 слишком мала...
Код: plaintext
1.
2.
Parall2(Count,JobCount) n (Count,JobCount) s h1=$zh k ^l,^c,^j
................

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USER>d Parall2^Simple( 1000000 , 1 )
 1 . 4571 
 
USER>d Parall2^Simple( 1000000 , 2 )
 1 . 606018 

USER>d Parall2^Simple( 10000000 , 1 )
 16 . 341748  

USER>d Parall2^Simple( 10000000 , 2 )
 15 . 2468 

USER>d Parall2^Simple( 20000000 , 1 )
 34 . 233212 
 
USER>d Parall2^Simple( 20000000 , 2 )
 30 . 628557 
То есть на большем количестве параллельный алгоритм уже выигрывает.

Вечером с http://iron.intersys.com/wrc/Distribution.csp скачаю cache-2008.2.0.526-win.exe
и тогда завтра попробую на ней погонять примеры.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35622159
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaWr,
можно вопрос: что нужно сделать, чтоб получить сюда http://iron.intersys.com/wrc/Distribution.csp доступ?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35622196
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ceshkaMaWr,
можно вопрос: что нужно сделать, чтоб получить сюда http://iron.intersys.com/wrc/Distribution.csp доступ?
Это лучше узнать у представителей InterSystems :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35622399
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот решето Аткина на конфигурации тоже хорошо распараллеливается:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Atkin(Count,JobCount)	;
	n (Count,JobCount) s h1=$zh k ^l,^j,^c s sc=$p(Count** 0 . 5 ,".")
	if JobCount= 1  {
		d ja1(Count,sc),ja2(Count,sc)
	} else {
		s ^j=JobCount f i= 1 : 1 :JobCount- 1  j ja1p(Count,sc)
		d ja1p(Count,sc) f  q:'^j  h 0.1
		s ^j=JobCount,^c=4 f i=1:1:JobCount-1 j ja2p(Count,sc)
		d ja2p(Count,sc) f  q:'^j  h  0 . 1 
	}		
	s ^l( 2 )= 1 ,^l( 3 )= 1 
	s i="" f  s i=$o(^l(i)) q:i=""  i '^l(i) k ^l(i)
	w $zh-h1,!
ja1p(Count,sc) n (Count,sc) s x2=0,q=0
	f  s i=$i(^c) q:i>sc  s x2=x2+(2*i-1),y2=0 f j=1:1:sc s y2=y2+(2*j-1) d
	.s n=4*x2+y2 i (n'>Count),(n# 12 = 1 )!(n# 12 = 5 ) s ^l(n)='$g(^l(n))
	.s n=n-x2 i (n'>Count),(n# 12 = 7 ) s ^l(n)='$g(^l(n))
	.s n=n-(2*y2) i (i>j),(n'>Count),(n# 12 = 11 ) s ^l(n)='$g(^l(n))
	i $i(^j,-1) q
ja2p(Count,sc) n (Count,sc) f  s i=$i(^c) q:i>sc  i $g(^l(i)) s n=i*i f j=n:n:Count k ^l(j)
	i $i(^j,-1) q
ja1(Count,sc) n (Count,sc) s x2=0 f i=1:1:sc s x2=x2+(2*i-1),y2=0 f j=1:1:sc s y2=y2+(2*j-1) d
	.s n=4*x2+y2 i (n'>Count),(n# 12 = 1 )!(n# 12 = 5 ) s ^l(n)='$g(^l(n))
	.s n=n-x2 i (n'>Count),(n# 12 = 7 ) s ^l(n)='$g(^l(n))
	.s n=n-(2*y2) i (i>j),(n'>Count),(n# 12 = 11 ) s ^l(n)='$g(^l(n))
	q
ja2(Count,sc) n (Count,sc) f i= 5 : 1 :sc i $g(^l(i)) s n=i*i f j=n:n:Count k ^l(j)
	q

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USER>d Atkin^Simple( 1000000 , 1 )
 1 . 296719 
 
USER>d Atkin^Simple( 1000000 , 2 )
 1 . 232715 
 
USER>d Atkin^Simple( 10000000 , 1 )
 16 . 915967 
 
USER>d Atkin^Simple( 10000000 , 2 )
 12 . 299662 
 
USER>d Atkin^Simple( 20000000 , 1 )
 35 . 726587 
 
USER>d Atkin^Simple( 20000000 , 2 )
 25 . 550804 

А если убрать
Код: plaintext
s i="" f  s i=$o(^l(i)) q:i=""  i '^l(i) k ^l(i)
будет еще быстрее, но в глобале будут наряду с простыми числами (^l(n)=1) будут присутствовать составные (^l(n)=0)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35622416
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
упс... Читать так:

Код: plaintext
1.
2.
3.
..........
	w $zh-h1,! q
ja1p(Count,sc) n (Count,sc) s x2= 0 
..........
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35623864
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Намудрил я с Аткином - параллельный режим работал неверно. Вот правильный вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Atkin(Count,JobCount)	;
	n (Count,JobCount,n) s h1=$zh k ^l,^j,^c s sc=$p(Count** 0 . 5 ,".")
	if JobCount= 1  {
		d ja1(Count,sc),ja2(Count,sc)
	} else {
		s ^j=JobCount f i= 1 : 1 :JobCount- 1  j ja1p(Count,sc)
		d ja1p(Count,sc) f  q:'^j  h 0.1
		s ^j=JobCount,^c=4 f i=1:1:JobCount-1 j ja2p(Count,sc)
		d ja2p(Count,sc) f  q:'^j  h  0 . 1 
	}
	s ^l( 2 )= 1 ,^l( 3 )= 1 
	s i="" f  s i=$o(^l(i)) q:i=""  i '^l(i) k ^l(i)
	w $zh-h1,! q
ja1p(Count,sc) n (Count,sc) f  s i=$i(^c) q:i>sc  s x2=i*i f j=1:1:sc s y2=j*j d
	.s n=4*x2+y2 i (n'>Count),(n# 12 = 1 )!(n# 12 = 5 ) l +^l(n) s ^l(n)='$g(^l(n)) l -^l(n)
	.s n=n-x2 i (n'>Count),(n# 12 = 7 ) l +^l(n) s ^l(n)='$g(^l(n)) l -^l(n)
	.s n=n-(2*y2) i (i>j),(n'>Count),(n# 12 = 11 ) l +^l(n) s ^l(n)='$g(^l(n)) l -^l(n)
	i $i(^j,-1) q
ja2p(Count,sc) n (Count,sc) f  s i=$i(^c) q:i>sc  i $g(^l(i)) s n=i*i f j=n:n:Count k ^l(j)
	i $i(^j,-1) q
ja1(Count,sc) n (Count,sc) f i=1:1:sc s x2=i*i f j=1:1:sc s y2=j*j d
	.s n=4*x2+y2 i (n'>Count),(n# 12 = 1 )!(n# 12 = 5 ) s ^l(n)='$g(^l(n))
	.s n=n-x2 i (n'>Count),(n# 12 = 7 ) s ^l(n)='$g(^l(n))
	.s n=n-(2*y2) i (i>j),(n'>Count),(n# 12 = 11 ) s ^l(n)='$g(^l(n))
	q
ja2(Count,sc) n (Count,sc) f i= 5 : 1 :sc i $g(^l(i)) s n=i*i f j=n:n:Count k ^l(j)
	q

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USER>d Atkin^Simple( 1000000 , 1 )
 1 . 291022 
 
USER>d Atkin^Simple( 1000000 , 2 )
 1 . 302707 
 
USER>d Atkin^Simple( 10000000 , 1 )
 16 . 788452 
 
USER>d Atkin^Simple( 10000000 , 2 )
 13 . 908347 
 
USER>d Atkin^Simple( 20000000 , 1 )
 34 . 886791 
 
USER>d Atkin^Simple( 20000000 , 2 )
 28 . 661598 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35624261
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. коллеги!
Вот и мне есть что сказать...:)
Ведь у нас в М такие замечательные циклы! Силу этого цикла
Код: plaintext
1.
f i= 2 , 3 : 2 :Lim s ^a(i)=""
можно увеличить следующим образом
Код: plaintext
1.
2.
3.
 f i= 1 , 2 , 3 , 5 , 7 , 9  s ^a(i)=""
 s Lim=Lim- 10 
 f j= 10 : 10 :Lim f i= 1 , 3 , 7 , 9  s ^a(i+j)="" 
Выигрыш по времени должен быть заметным - убираются ненужные множители пятёрки.

Увлеченный вашим примером, я также протестировал однозадачный вариант первоначальной задачи. Поскольку в GT.M Job запускает системные процессы, а не задания М, в выигрыше оказался многозадачный вариант (сегодня он протекал на 5% быстрее, чем многозадачный). Также хочу сообщить, что в этой связи время исполнения несколько "пляшет", но тенденция остаётся.

Персонально to Alexey Maslov хочу сообщить размер базы данных : 93949К - вдвое больше Caсhe. Так получилось, что первоначально я запускал другую подобную задачу, которая просто заполняла базу данных рядами(проверял многопоточность), а потом ту, которую просил попробовать в Caсhe. Чувствуя, что её размер должен быть меньше, я написал это в скобках, а на момент написания поста не имел возможности повторно перезапустить задачу с новой базой данных (не было 36 мин:). Надеюсь, что не причинил этим особых неудобств...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35624325
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. коллеги!
Вот и мне есть что сказать...:)
Ведь у нас в М такие замечательные циклы! Силу этого цикла
Код: plaintext
1.
f i= 2 , 3 : 2 :Lim s ^a(i)=""
можно увеличить следующим образом
Код: plaintext
1.
2.
3.
 f i= 1 , 2 , 3 , 5 , 7  s ^a(i)=""
 s Lim=Lim- 10 
 f j= 10 : 10 :Lim f i= 1 , 3 , 7 , 9  s ^a(i+j)="" 
Никто не гарантирован от ошибок....
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35624646
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
al-veliev
Код: plaintext
1.
2.
3.
 f i= 1 , 2 , 3 , 5 , 7  s ^a(i)=""
 s Lim=Lim- 10 
 f j= 10 : 10 :Lim f i= 1 , 3 , 7 , 9  s ^a(i+j)="" 


Все-таки, наверное, вот так:
Код: plaintext
1.
2.
 f i= 2 , 3 , 5 , 7  s ^a(i)=""
 f j= 10 : 10 :Lim- 10  f i= 1 , 3 , 7 , 9  s ^a(i+j)=""
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35624809
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Протестировал все приведенные выше алгоритмы на
Код: plaintext
1.
USER>w $zv
Cache for Windows (x86- 32 )  2008 . 2  (Build  526 ) Fri Oct  17   2008   02 : 28 : 33  EDT
Система: Windows XP Professional SP3
CPU: Intel Core2Duo 2,33 ГГц
2 ГБ ОЗУ кэш бд выставлен вручную 1536 МБ
Журналирование базы USER отключено, база предварительно расширена до 3 ГБ
В агоритмах цикл
Код: plaintext
f i= 2 , 3 : 2 :Lim s ^a(i)=""
заменен на вариант ув. al-veliev
Код: plaintext
1.
2.
 f i= 2 , 3 , 5 , 7  s ^a(i)=""
 f j= 10 : 10 :Lim- 10  f i= 1 , 3 , 7 , 9  s ^a(i+j)=""

Результаты:
1. Алгоритм с делением на простые числа:
Limit=1000000, JobCount=1, Time=3.461106
Limit=1000000, JobCount=2, Time=2.207736
Limit=10000000, JobCount=1, Time=67.622076
Limit=10000000, JobCount=2, Time=36.391247
Limit=20000000, JobCount=1, Time=169.475283
Limit=20000000, JobCount=2, Time=89.043663

2. Моя реализация решета Эратосфена с изменениями Алексея Маслова:
Limit=1000000, JobCount=1, Time=1.080419
Limit=1000000, JobCount=2, Time=1.267313
Limit=10000000, JobCount=1, Time=12.459379
Limit=10000000, JobCount=2, Time=12.814223
Limit=20000000, JobCount=1, Time=26.047151
Limit=20000000, JobCount=2, Time=25.736279

3. Алгоритм от al-veliev без каких-либо переделок (но без вывода на экран)
Limit=1000000, Time=697.431159

4. Алгоритм от al-veliev с изменениями Алексея Маслова:
Limit=1000000, JobCount=1, Time=1.853483
Limit=1000000, JobCount=2, Time=1.97762
Limit=10000000, JobCount=1, Time=24.433566
Limit=10000000, JobCount=2, Time=25.123423
Limit=20000000, JobCount=1, Time=52.238333
Limit=20000000, JobCount=2, Time=52.51064

5. Решето Аткина:
Limit=1000000, JobCount=1, Time=1.111294
Limit=1000000, JobCount=2, Time=1.222627
Limit=10000000, JobCount=1, Time=14.68235
Limit=10000000, JobCount=2, Time=12.085616
Limit=20000000, JobCount=1, Time=30.78442
Limit=20000000, JobCount=2, Time=24.814908
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35625087
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievПоскольку в GT.M Job запускает системные процессы, а не задания М, в выигрыше оказался многозадачный вариант (сегодня он протекал на 5% быстрее, чем многозадачный).В Cache аналогично: Job запускает системные процессы. "Задания М" остались в далеком прошлом (MSM, DTM). Выигрыш 5% может быть в пределах погрешности. У меня получался даже больший выигрыш (см. начало дискуссии), который впоследствии не подтвердился. Думаю, это в природе Linux: скорость записи на диск не вполне предсказуема, т.к. на нее влияет много факторов, поэтому полностью согласен с MaWr'ом: чтобы уменьшить случайные флуктуации, имеет смысл тестировать на бОльших интервалах. Предложение (к MaWr'у): если не трудно, выложите здесь последний вариант исходников, чтобы была уверенность, что все мы запускаем одно и то же.
Мне кажется, интересно было бы протестировать их и в GT.M, но пока у меня нет такой возможности. Столь значительный проигрыш в скорости в GT.M (пусть и на относительно слабом ноуте) по сравнению с Cache, который получил Ал. Велиев, продолжает казаться мне странным.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35625114
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovСтоль значительный проигрыш в скорости в GT.M (пусть и на относительно слабом ноуте) по сравнению с Cache, который получил Ал. Велиев, продолжает казаться мне странным.Имелся в виду проигрыш однозадачного варианта.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35625302
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovПредложение (к MaWr'у): если не трудно, выложите здесь последний вариант исходников, чтобы была уверенность, что все мы запускаем одно и то же.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
	; Параллельный через деление на простые числа
Parall1(Count,JobCount)	n (Count,JobCount) s h1=$zh k ^s,^l,^c s ^s=Count
	f p= 2 , 3 : 2  s q= 1  x "f f=3:2 q:f*f>p!'q  s q=p#f" i q s ^l(p)="" i (p*p)/$zln(p*p)/2>Count s ^c=p q
	f i=1:1:JobCount-1 j Job1
	d Job1 f  q:^c'<Count  h 0.1
	w $zh-h1,! q
Job1	n  m l=^l s Count=^s,qq=0 f  d  q:qq
	.s p=$i(^c,2) i p>Count s qq=1 q
	.s q=1,f="" f  s f=$o(l(f)) q:f*f>p  s q=p#f q:'q
	.q:'q  s ^l(p)=""
	q
	
	; Решето Эратосфена
Parall2(Count,JobCount) n (Count,JobCount) s h1=$zh k ^l,^c,^j
	f i=2,3,5,7 s ^l(i)=""
	f j=10:10:Count-10 f i=1,3,7,9 s ^l(i+j)=""
	s ^c=3,^j=JobCount
	if JobCount=1 { 
		d Job21(Count)
	} else {		
		f i=1:1:JobCount-1 j Job2(Count)
		d Job2(Count) f  q:'^j  h 0.1
	}		
	w $zh-h1,!
	q
Job2(Count) n (Count) s q=0 f  d  q:q
	.l +^c s j=^c i j="" l -^c s q=1 q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" l -^c s q=1 q
	.s ^c=m l -^c f i=n+j:j:Count k ^l(i)
	i $i(^j,-1)
	q
Job21(Count) n (Count) s q=0 f  d  q:q
	.s j=^c i j="" s q=1 q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" s q=1 q
	.s ^c=m f i=n+j:j:Count k ^l(i)
	i $i(^j,-1)
	q
	
	; Решето Аткина
Atkin(Count,JobCount)	;
	n (Count,JobCount,n) s h1=$zh k ^l,^j,^c s sc=$p(Count**0.5,".")
	if JobCount=1 {
		d ja1(Count,sc),ja2(Count,sc)
	} else {
		s ^j=JobCount f i=1:1:JobCount-1 j ja1p(Count,sc)
		d ja1p(Count,sc) f  q:'^j  h 0.1
		s ^j=JobCount,^c=4 f i=1:1:JobCount-1 j ja2p(Count,sc)
		d ja2p(Count,sc) f  q:'^j  h 0.1
	}
	s ^l(2)=1,^l(3)=1
	s i="" f  s i=$o(^l(i)) q:i=""  i '^l(i) k ^l(i)
	w $zh-h1,! q
ja1p(Count,sc) n (Count,sc) f  s i=$i(^c) q:i>sc  s x2=i*i f j=1:1:sc s y2=j*j d
	.s n=4*x2+y2 i (n'>Count),(n#12=1)!(n#12=5) l +^l(n) s ^l(n)='$g(^l(n)) l -^l(n)
	.s n=n-x2 i (n'>Count),(n#12=7) l +^l(n) s ^l(n)='$g(^l(n)) l -^l(n)
	.s n=n-(2*y2) i (i>j),(n'>Count),(n#12=11) l +^l(n) s ^l(n)='$g(^l(n)) l -^l(n)
	i $i(^j,-1) q
ja2p(Count,sc) n (Count,sc) f  s i=$i(^c) q:i>sc  i $g(^l(i)) s n=i*i f j=n:n:Count k ^l(j)
	i $i(^j,-1) q
ja1(Count,sc) n (Count,sc) f i=1:1:sc s x2=i*i f j=1:1:sc s y2=j*j d
	.s n=4*x2+y2 i (n'>Count),(n#12=1)!(n#12=5) s ^l(n)='$g(^l(n))
	.s n=n-x2 i (n'>Count),(n#12=7) s ^l(n)='$g(^l(n))
	.s n=n-(2*y2) i (i>j),(n'>Count),(n#12=11) s ^l(n)='$g(^l(n))
	q
ja2(Count,sc) n (Count,sc) f i=5:1:sc i $g(^l(i)) s n=i*i f j=n:n:Count k ^l(j)
	q
	
	; Alexey Maslov
AM(Lim,NJOBMAX)
	n (Lim,NJOBMAX)
	;s NJOBMAX=2		; max number of concurrent jobs
	s Q=2				; jobs load balance coefficient (from 2 to 32) 
	;s Lim=20000000		; max simple number
	s SuppressOutput=1	; if =1, don't output simple numbers list to $principal device
	/* Out:
	^a - simple numbers list
	>$p - its copy (if not SuppressOutput) */
	n c,d1,h1,i,n,njob,j,jd,jstat,k,locallim,vm
	s NJOBMAX=$G(NJOBMAX,0) i NJOBMAX=0 w !,"NJOBMAX=0" q
	s Q=$g(Q,2) i Q'>1 w !,"Wrong Q="_Q q
	k ^a,^pid,jj s snum=0,njob=0,h1=$$startt()
	f i=2,3,5,7 s ^a(i)=""
	f j=10:10:Lim-10 f i=1,3,7,9 s ^a(i+j)=""
	If NJOBMAX=1 {
		d al(1,Lim,Lim)
	} else {	 
		s i=1,locallim=$$b1(Q,NJOBMAX) s locallim=locallim/4
		for j=1:1 { 
			q:i'<Lim  s vm=$s(Lim<(i+locallim-1)||(j=NJOBMAX):Lim,1:i+locallim-1)
			w $zt($p($h,",",2),1)," ",$j(i,7)," ",$j(vm,7)," " j al(i,vm,Lim)
			s i=vm+1 s locallim=locallim*Q s:j<3 locallim=locallim*2
			s jj($zchild)="" w "job "_$zchild f k=1:1:50 if $d(^pid($zchild)) { w " started",! q } h 0.1
		}
		w !
		for  { 
			s jstat=0,j="" f  s j=$o(jj(j)) q:j=""  s jd=$d(^pid(j)),jstat=jstat+jd i jd=0 w $zt($p($h,",",2),1)_" job "_j_" finished",! k jj(j)
			q:jstat=0
			h 0.1
		}	
	}
	s d1=$$deltat(h1)
	if '$g(SuppressOutput) {
		s i=1,snum=0 f  s i=$o(^a(i)) q:i=""  i $i(snum) w "S ",i,!
		s d2=$$deltat(h1)
	} 	
	w !,NJOBMAX_" Job(s): Calculation time of simple numbers list (from  2  to "_Lim_") = "_d1
	if '$g(SuppressOutput) w !,"Output time = "_(d2-d1)
	q
al(v0,vm,Lim)
	s ^pid($j)=""
	s i=v0 f  s i=$o(^a(i)) q:i=vm||(i="")  s c=i+i i c<Lim f n=c:i:Lim i $d(^a(n)) k ^a(n)
	k ^pid($j)
	q
b1(q,n) s Lim=$g(Lim,10000000) q Lim*(q-1)\(q**n-1)
startt() q $zh
deltat(h) q $zh-h

	; al-veliev
ParallA	;
	k ^a,^b,^c,^pid s Lim=1000000,p=0,h1=$Zh
	f i=1:1:Lim s ^a(i)=i
	s i=1
	f  s i=$o(^a(i)) q:i=""  d
	.j a(i,Lim)::0 i  d c
	.e  d a(i,Lim) ;w "L ",i,!
	s h2=$Zh w h2-h1,!  q
a(v1,v2) s ^pid($j)="",(^b(v1,v1),^c(v1))=v1,c=v1+v1
	i c<v2 f n=c:v1:v2 k ^a(n) s (^b(v1,n),^c(n))=n
	k ^pid($j) q
c	k p m p=^pid s c=""
	f s=0:1 s c=$o(p(c)) q:c=""
	s c=$g(p) s:c<s ^pid=s ;w "P ",i," ",s," ",c,!
	q
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35625453
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaWr, спасибо, запланирую запуск на вечер (чтоб поменьше побочных эффектов :). Результатами поделюсь завтра.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35625935
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А к чему все-таки пришли, скорость удовлетворительная или нет?
Или это были "шахматные этюды"?

"Быстрее, выше, сильнее"-лозунг на стадионе.
"МАМПС-это сила, а сила есть-ума не надо"-высказывание одного МАМПСиста.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35626538
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за информацию о способе запуска в Cache.
Вы совершенно правы, говоря о значительном влиянии ОС на скорость протекания задачи. У меня также сложилось устойчивое впечатление, что у меня слишком тихий HDD . В процессе наблюдал "зависания" из-за процессов чтения-записи на диск в разные моменты времени.
Также могу сказать с уверенностью, что чем б о льший максимум запущенных процессов, тем
хуже результат.
Для полноты сравнения с GT.M - можно его запустить без инсталляции . В Linux необходимы только 3 файла: mumps, libgtmshr.so и shell-скрипт для его запуска (около 2 Мбайт).
Я Вам смогу этот набор выслать по e-mail в архиве - сейчас под рукой нет.
Также я несколько улучшил алгоритм и завтра выложу усредненные результаты и свой код.
Алгоритм с решетом Аткина пока перевариваю... Новая для меня функция $i - в GT.M её нет.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627068
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наметился явный лидер среди алгоритмов для нахождения ряда простых чисел для cache
Оптимизировав еще решето Эратосфена таким образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Parall2(Count,JobCount) n (Count,JobCount) s h1=$zh k ^l,^c,^j
	f i= 2 , 3 , 5 , 7  s ^l(i)=""
	f j= 10 : 10 :Count- 10  f i= 1 , 3 , 7 , 9  s ^l(i+j)=""
	s ^c= 3 ,^j=JobCount
	if JobCount= 1  { 
		d Job21(Count, 3 )
	} else {		
		f i= 1 : 1 :JobCount- 1  j Job2(Count)
		d Job2(Count) f  q:'^j  h  0 . 1 
	}		
	w $zh-h1,!
	q
Job2(Count) n (Count) s q= 0 ,cp=$p(Count/ 2 ,".")+ 1  f  d  q:q
	.l +^c s j=^c i (j="")!(j>cp) l -^c s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" l -^c s q= 1  q
	.s ^c=m l -^c q:j= 5   f i=n+(j*(j# 2 + 1 )):j* 2 :Count k ^l(i)
	i $i(^j,- 1 )
	q
Job21(Count,j) n (Count,j) s q= 0 ,cp=$p(Count/ 2 ,".")+ 1  f  d  q:q
	.i (j="")!(j>cp) s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" s q= 1  q
	.s jj=j,j=m q:jj= 5   f i=n+(jj*(jj# 2 + 1 )):jj* 2 :Count k ^l(i)
	i $i(^j,- 1 )
	q

Получил следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USER>d Parall2^Simple( 1000000 , 1 )
. 828327 
 
USER>d Parall2^Simple( 1000000 , 2 )
 1 . 066355 
 
USER>d Parall2^Simple( 10000000 , 1 )
 9 . 775708 
 
USER>d Parall2^Simple( 10000000 , 2 )
 9 . 509487 
 
USER>d Parall2^Simple( 20000000 , 1 )
 20 . 651358 
 
USER>d Parall2^Simple( 20000000 , 2 )
 18 . 883166 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627088
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Результаты из предыдущего поста были получены на 5.0.20
На 2008.2 результаты следующие:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USER>d Parall2^Simple( 1000000 , 1 )
. 695657 
 
USER>d Parall2^Simple( 1000000 , 2 )
. 960779 
 
USER>d Parall2^Simple( 10000000 , 1 )
 8 . 385334 
 
USER>d Parall2^Simple( 10000000 , 2 )
 8 . 406567 
 
USER>d Parall2^Simple( 20000000 , 1 )
 17 . 695525 
 
USER>d Parall2^Simple( 20000000 , 2 )
 16 . 851799 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627092
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-veliev, да, там и $LB() нету, очень, очень жаль, но, может появится...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627333
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот результаты вечернего прогона. Гонял только самые быстрые варианты (Аткина и Эратосфена от Мавра), по десять раз с каждым набором параметров. Сегодня ночью погоняю новый вариант "решета Мавра" (от Зратосфена там уже почти ничего, кроме идеи решета, не осталось :).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
*** Atkin ***  Count =  20000000    JobCount =  1  *  10 
 47 . 38458 
 47 . 577035 
 47 . 905709 
 49 . 043595 
 51 . 213214 
 50 . 943759 
 50 . 941086 
 50 . 806581 
 50 . 646581 
 50 . 709047 

*** Atkin ***  Count =  20000000    JobCount =  2  *  10 
 40 . 046957 
 39 . 824207 
 39 . 878648 
 39 . 885135 
 39 . 868178 
 38 . 361714 
 39 . 778633 
 39 . 870828 
 39 . 743118 
 39 . 746763 

*** Atkin ***  Count =  20000000    JobCount =  4  *  10 
 24 . 775915 
 24 . 715404 
 24 . 560634 
 24 . 719361 
 24 . 696522 
 24 . 731198 
 24 . 67062 
 24 . 740125 
 24 . 775475 
 24 . 872131 
AlexKBА к чему все-таки пришли, скорость удовлетворительная или нет?
Меня давно интересуют параллельные вычисления. Были случаи удачного применения их в работе. Но об общих закономерностях говорить пока рано (даже применительно к Cache - как к наиболее знакомому мне серверу БД/приложений). Все решает, в конечном счете, эксперимент. Предварительные соображения есть, но пока на уровне предположений. Например, в решете Эратосфена частые Kill 'ы в активно читаемый глобал приводят к его "перетряске", устареванию блоков в кэше, и кол-во ядер уже не спасает: процессы банально ждут, пока закончится цикл работы WRTDMN - а он (демон записи) в Cache один. Но почему-то (почему?) не менее частые команды set ^l(n)='$g(^l(n)) в решете Аткина оказываются меньшим злом.al-velievЯ Вам смогу этот набор выслать по e-mail в архиве - сейчас под рукой нетСпасибо, скачать GT.M для меня не проблема - проблема, чтобы руки дошли :). К тому же Вы немного не в курсе: $increment() в GT.M появился достаточно давно - посмотрите на SourceForge.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627344
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эратосфена забыл вставить. Вот:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
*** Eratosthenes ***  Count =  20000000    JobCount =  1  *  10 
 35 . 980755 
 36 . 006985 
 35 . 937574 
 35 . 852477 
 35 . 930427 
 35 . 952219 
 36 . 49792 
 35 . 99789 
 35 . 938981 
 35 . 937491 

*** Eratosthenes ***  Count =  20000000    JobCount =  2  *  10 
 41 . 674648 
 42 . 443895 
 42 . 079839 
 41 . 949844 
 41 . 945829 
 42 . 120846 
 42 . 099874 
 41 . 842123 
 41 . 887185 
 41 . 696166 

*** Eratosthenes ***  Count =  20000000    JobCount =  4  *  10 
 36 . 693771 
 35 . 448851 
 36 . 610853 
 35 . 248828 
 35 . 737866 
 35 . 969849 
 35 . 459895 
 36 . 146816 
 35 . 939816 
 35 . 776049 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627904
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,
Ой не последний вариант случайно выложил... Вот последний:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Parall2(Count,JobCount) n (Count,JobCount) s h1=$zh k ^l,^c,^j
	f i= 2 , 3 , 5 , 7  s ^l(i)=""
	f j= 10 : 10 :Count- 10  f i= 1 , 3 , 7 , 9  s ^l(i+j)=""
	s ^c= 3 ,^j=JobCount
	if JobCount= 1  { 
		d Job21(Count, 3 )
	} else {		
		f i= 1 : 1 :JobCount- 1  j Job2(Count)
		d Job2(Count) f  q:'^j  h  0 . 1 
	}		
	w $zh-h1,!
	q
Job2(Count) n (Count) s q= 0 ,cp=$p(Count** 0 . 5 ,".")+ 1  f  d  q:q
	.l +^c s j=^c i (j="")!(j>cp) l -^c s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" l -^c s q= 1  q
	.s ^c=m l -^c q:j= 5   f i=n+(j*(j# 2 + 1 )):j* 2 :Count k ^l(i)
	i $i(^j,- 1 )
	q
Job21(Count,j) n (Count,j) s q= 0 ,cp=$p(Count** 0 . 5 ,".")+ 1  f  d  q:q
	.i (j="")!(j>cp) s q= 1  q
	.s n=j*j k ^l(n) s m=$o(^l(j)) i m="" s q= 1  q
	.s jj=j,j=m q:jj= 5   f i=n+(jj*(jj# 2 + 1 )):jj* 2 :Count k ^l(i)
	i $i(^j,- 1 )
	q
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35627923
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принял к сведению :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35629277
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBИли это были "шахматные этюды"?
У меня чисто практический интерес. Хочу в связи с этим рассказать историю. Захожу как-то к товарищу, а он чёрный как туча около своего компьютера. Оказывается, что в базе данных сайта, который он разрабатывал, хранились протоколы сессий - того требовал характер обработки данных. Очистка мусора была "зацеплена" на админку. Так вышло, что на неё долго никто не заходил, и накопилось очень много таких "хвостов". В результате они начали "топить" обработку.
Мой товарищ оказался в сложной ситуации - броузер выделяет на ответ 300 миллисекунд, сервер загружается одним запросом по полной, защита сервера срабатывает по подозрению в fork bomb (метод взлома, основанный на бесконечном вызове процессом самого себя или съедания памяти подобным образом. После перезагрузки системы неопытным администратором остаётся ловить пользовательские пароли) и обрезает ему квоту до минимума. Броузер, не дождавшись ответа, разрывает соединение, и ответ получить не удаётся. Ему пришлось потратить весь вечер и всю ночь, чтобы очищать по малюсенькому кусочку базу данных. Если бы у него в руках на тот момент был подобный механизм, он потратил бы час-два, и сайт не бездействовал бы весь вечер и всю ночь.
Во избежание необоснованных обвинений в некомпетентности, расхлябанности и т. д. сайт, имена и фамилии не называю.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35629309
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу продолжить тему с fork bomb применительно к нашей с Вами теме.
Пришел вчера домой. Подумал. Отключил антивирус и сетевую поддержку. Скорость и стабильность прохода задач резко выросли. В среднем прогон задачи шел около 3-х минут (Рост более чем в 2 раза). Если не считать одного случая с явным вмешательством ОС в процессы вычислений, то отклонения не превышали 10 сек., количество процессов колебалось в пределах 40-60. Но, говоря о нестабильности результатов в Linux, Вы абсолютно правы - сегодня днём цифры были немного больше. К концу следующей недели-середине месяца я запущу GT.M под Windows в режиме эмуляции, чтобы исключить этот фактор.

Спасибо за информацию об $i , а то начал уже огород городить с пользовательской функцией.
Говоря об её отсутствии, я ориентировался на документацию. Похоже, она слегка устарела.
Кстати, увидев H 0.1 я порадовался за то, что в Cache сделали более точный механизм задержек. Преисполненный радужных надежд, я направился в онлайн-документацию по Cache, надеясь увидеть такой же прогресс в командах Read, Open и Use, но был разочарован. Как Вы выходите из ситуации, когда нужно более точно реагировать при использовании этих комманд(скажем, с точностью до миллисекунд)?

Алгоритм Аткина меня порадовал более аккуратной работой с диском - таково первое впечатление.

Хорошо Вам провести выходные!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35629954
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привожу усредненные результаты (в секундах). Делалось по 10 прогонов с каждым набором параметров.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
*** Eratosthenes & MaWr ( 10  runs) *  d Parall2^mawr( 20000000 , 1 ) *  21 . 2336489 
*** Eratosthenes & MaWr ( 10  runs) *  d Parall2^mawr( 20000000 , 2 ) *  18 . 0522585  
*** Eratosthenes & MaWr ( 10  runs) *  d Parall2^mawr( 20000000 , 4 ) *  12 . 4980047 

*** Eratosthenes & MaWr ( 10  runs) *  d Parall2^mawr( 40000000 , 1 ) *  48 . 2657347 
*** Eratosthenes & MaWr ( 10  runs) *  d Parall2^mawr( 40000000 , 2 ) *  39 . 7629862  
*** Eratosthenes & MaWr ( 10  runs) *  d Parall2^mawr( 40000000 , 4 ) *  26 . 7075103 

*** Atkin ( 10  runs) *  d Atkin^mawr( 40000000 , 1 ) *  101 . 7443732  
*** Atkin ( 10  runs) *  d Atkin^mawr( 40000000 , 2 ) *  82 . 035849 
*** Atkin ( 10  runs) *  d Atkin^mawr( 40000000 , 4 ) *  51 . 5340414 
Предварительный вывод: обе программы неплохо масштабируются в Cache (по кр. мере, на платформе Linux/AMD64), просто это проявляется лишь при больших значениях Count. Какой характер носит масштабируемость, говорить пока сложно (для этого надо на 16-32 ядерных компах погонять :), но есть подозрение, что Аткин масштабируется лучше.al-velievКак Вы выходите из ситуации, когда нужно более точно реагировать при использовании этих комманд(скажем, с точностью до миллисекунд)?Никак не выходим :) Наверное, мы просто не решаем таких задач. Кстати, и в случае Hang точность примерно 0.5 сек:док-яThe HANG time is calculated using the system clock. If the clock is midway between seconds when a HANG with 1 second or less is executed, the actual elapsed HANG time is only the remaining portion of the current clock time second.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35630312
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslovно есть подозрение, что Аткин масштабируется лучше.
В алгоритме Аткина больше вычислений и меньше обращения к глобалам. Это особенно сильно скажется на рядах таких размеров, когда глобал перестанет помещаться в кэш глобалов целиком
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35634676
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил напоследок погонять в тяжелых условиях, когда глобал в кэш не влезает. Гонялись те же два лидера, что и прошлый раз. Собиралась статистика (GLOSTAT) по итогам каждого прогона. Вот что получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
*** Eratosthenes & MaWr ( 1  run) *  d Parall2^mawr( 100000000 , 4 )
 5709 . 28204 

CRAI52>

Should detailed statistics be displayed for each block type? No =>

Statistics                                     Total
-------------------------------   ------------------
Global references (all):                  126 , 302 , 208 
Global update references:                 126 , 251 , 602 
Routine calls:                                 18 , 955 
Routine buffer loads and saves:                    16 
Routine lines:                             68 , 363 , 405 
Routine not cached:                                57 
Logical block requests:                    46 , 874 , 192 
Block reads:                                2 , 380 , 234 
Block writes:                               2 , 676 , 525 
WIJ writes:                                    87 , 608 
Cache Efficiency:                                  25 
Journal Entries:                                   17 
Journal Block Writes:                               0 

CRAI52>
*** Atkin ( 1  run) *  d Atkin^mawr( 100000000 , 4 )
 32826 . 535351 

CRAI52>

Should detailed statistics be displayed for each block type? No =>

Statistics                                     Total
-------------------------------   ------------------
Global references (all):                  106 , 926 , 146 
Global update references:                  48 , 324 , 578 
Routine calls:                                 16 , 820 
Routine buffer loads and saves:                    53 
Routine lines:                            110 , 626 , 370 
Routine not cached:                               180 
Logical block requests:                    92 , 330 , 123 
Block reads:                               10 , 110 , 176 
Block writes:                              18 , 283 , 199 
WIJ writes:                                   596 , 983 
Cache Efficiency:                                   4 
Journal Entries:                                  134 
Journal Block Writes:                               1 
Что мы видим? У Аткина при меньшем кол-ве глобальных ссылок оказалось вдвое больше логических обращений к блокам БД и на порядок больше - физических. В итоге эффективность кэша оказалась в 8 раз ниже, и это вполне коррелирует с почти 6-кратным прогрышем по скорости.
Для меня это лишнее подтверждение необходимости "нагрузочного" тестирования. По поведению программы в ситуации, когда все глобалы помещаются в кэш, выводы о качестве алгоритма/кода делать рано.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35635666
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл упомянуть, что размер кэша специально был уменьшен до 64Мб. Размер глобала простых чисел составил около 170Мб, до какой степени глобалы "пухли" во время работы, я не знаю, знаю только, что расширения 8Гб базы не было :).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35636235
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смог минимизировать воздействие ОС - запустил решето Эратосфена в режиме
single user . Сразу почувствовал результат - задача стала стабильнее и быстрее работать, HDD сразу стал себя нормально вести. Результат таков: время выполнения ~= 160+-1 сек, количество процессов~=10(мин=8, макс=15).
Пробовал прогонять Ваши задачи. К сожалению, длительность периода послезаписи (задача заканчивает свою работу, а обращения к диску ещё продолжаются) при числах, больших 1000000 сводит на нет ценность результата. HDD придется поменять...
Alexey MaslovНикак не выходим :) Наверное, мы просто не решаем таких задач. Кстати, и в случае Hang точность примерно 0.5 сек:
Решил проверить, как все-таки работает HANG 0.1 при помощи такой программки:
Код: plaintext
1.
2.
3.
 s ^L= 1  j a
 f c= 1 : 1  q:'^L h  0 . 1 
 zwr  q 
a h  2  s ^L= 0  q
Оказалось, что запустилось 18 циклов. Изменял время ожидания - получалось 9 циклов/сек. HANG также более-менее адекватно реагировал на изменение величины тайм-аута, так как на таких величинах приходится учитывать время выполнения комманд . Результат в общем-то порадовал - возможность более точного реагирования, чем 1сек есть :
Код: plaintext
1.
2.
3.
4.
5.
 f  r *q: 0  j a h  0 . 1 
 zwr  q 
a ;Здесь помещается обработка.
 ;Длительность процесса не должна превышать тайм-аут
 ;для данного случая  0 . 1  сек+время выполнения комманд FOR , READ и JOB
 q
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35636537
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov
Для меня это лишнее подтверждение необходимости "нагрузочного" тестирования. По поведению программы в ситуации, когда все глобалы помещаются в кэш, выводы о качестве алгоритма/кода делать рано.
Согласен.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35638682
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть, есть смысл уменьшить тайм-аут до 0.01 сек на малом количестве (1000000) и посмотреть результат? Дело в том, что разница у Вас на Аткин в большинстве прогонов не превышает 0.22 сек (по одному ожиданию в каждом цикле синхронизации), а number имеет два значения - число и номер (целое). Так что вполне может быть, что HANG реагирует на ближайшее действительное число.
Код: plaintext
1.
 f  q:'^j  h  0 . 01 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35675733
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-veliev, Алексей Маслов и другие

А Вы могли бы обобщить результаты Ваших исследований и в качестве рекомандаций выложить на форум, лучше на форум ИнтерСистемс. Ведь Вы проделали большую работу, и сделали для себя ряд выводов, поделитесь, пожалуйста, теперь уже общими соображениями.

"Не пропадет Ваш скорбный труд ..."
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35680197
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. AlexKB,
спасибо Вам за Ваше предложение. Я это обязательно сделаю, но пока ещё не полностью готов.
Кстати, у меня к Вам просьба - если не затруднит и есть такая возможность, проверить HANG 0.1
в Cache(программка в одном из предыдущих постов). Для меня это достаточо важно, так как затрагивает достаточно большой пласт задач, ранее не решавшихся, а Вы сможете также внести свою лепту в общее дело.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35680967
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H 0.1 проверял на Cahe' 5.2 под Win XP, результат зависит от нагрузки на систему (запущенные другие задачи Windows). Получалось в среднем где-то около 0,23 сек
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35681527
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-veliev,

Я когда-то проводил такие работы и пришел к такому выводу:
Если у меня есть один доминирующий процесс в котором нужны некоторые таймауты, а все остальные процессы оптимизированы под максимальное быстродействие и под минимальную нагрузку на сервер, и еще ОС ничем не занята кроме моих задач, то удавалось пользоваться более менее контролируемыми таймаутами по 20 мсек (H 0.02) и даже доверять им. При этом доминирующему процессу поднимался приоритет.

Дальше я пришел к такому выводу, что лучше использовать механизм обмена сообщениями между процессами Cache. В этом случае многократные опыты показали, что если один процесс отправил сообщение другому, который в данный момент спит и ждет такое сообщение, то второй просыпается практически мгновенно и тут же вступает в работу.

При этом общее тактирование по времени находилось вне сервера.
Промышленный контроллер, с жестким временем цикла в 50 мсек, регулярно выбрасывал пакеты данных по Com порту, на DLL-ку, которая принятый пакет преобразовывала в формат данных понятный COS и выбрасывала в сервер ТСР, реализованный на Cache, который в свою очередь принятый пакет выкладывал в буферный глобал и отправлял сообщение спящему процессу обработки. Проснувшийся процесс обработки вынимал пакет из буферного глобала, выполнял массу преобразований и вычислений (порой очень сложных с трехэтажными формулами и итерационными методами, табличной интерполяцией и прочей требухой). Далее сформированная порция новых данных подвергалась обработке в технологических алгоритмах и формировались данные для подсистемы отображения и подсистемы печати. Подсистема печати тоже поднималась со спячки вышеописанным способом, и выполняла построчную печать на матричный принтер практически мгновенно. Подсистема отображения каждые 100 мсек (тут был Н 0.1) выгребала данные из буфера отображения и выполняла отрисовку без заметных задержек рывков и т.п.
Реализация Cache + Makova SMWrap.

Все это потребовалось для стендов испытания авиационных двигателей.
Именно такой механизм взаимодействия позволил принимать, обрабатывать, архивировать, отображать каждый входной пакет данных без потерь и пропусков. Другие способы с применением других технологий на давали подобных результатов. Причем нужно было обеспечить главное требование - не пропустить ни один пакет, что и удалось. Вся работа вмещалась примерно в 13-17 мсек и оставался достаточный запас для нового пакета данных. Загрузка процессора колебалась в пределах 15-30 %. Оптимизировать код приходилось отлавливая микросекунды, использовать макросы и много чего другого.

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

Весь этот бред я написал для того, что не всегда таймаут который есть в Win стабилен, и там где есть критические участки следует искать разные пути. Причем без разницы где организовывать такую задержку (Бейсик, Билдер, Дельфи, Cache ведут себя примерно одинаково, хуже в SCADA прдуктах).
И еще, некоторые материнские платы, при минимальной загрузке, довольно стабильно держат 10 мсек, другие только 15 мсек и выше, а некоторые только начиная с 20 мсек. Почему не знаю, разбираться не стал.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35684092
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Вам за Ваши ответы. Со своей стороны могу сообщить пока только то, что Linux с GT.M
ведут себя более-менее прилично до Hang 0.1 , т.е. тайм-аутам от 1 сек до 0.1 сек можно вполне доверять.
А относительно повышения точности у меня большие сомнения, т.к. K.S. Bhaskar в документации по команде View прямо указал на предел реагирования ОС в 0.001 сек.
И к чему эти Гигагерцы ??)))
Вообще меня, честно говоря, очень удивляет тот факт, что в других командах ( Open , Read и Use ) тайм-аут настолько грубый и нет возможности его подправить. Особенно для систем, которые позиционируются как медицинские. Как-то не верится, что с 1969 года никто из медиков не попросил давление померять, пульс посчитать, объём легких вычислить, показания приборов проконтролировать и т. п.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35684510
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-veliev
А относительно повышения точности у меня большие сомнения, т.к. K.S. Bhaskar в документации по команде View прямо указал на предел реагирования ОС в 0.001 сек.


Хотелось бы почитать насчет этого.
Мои исследования показали, что все задержки ниже определенного порога превращаются в Hang 0, т.е. Н 0.01 может быть 10-11 мсек, а Н 0.009 уже будет с нулевой задержкой (тут опасность может быть)

al-veliev
Вообще меня, честно говоря, очень удивляет тот факт, что в других командах ( Open , Read и Use ) тайм-аут настолько грубый и нет возможности его подправить. Особенно для систем, которые позиционируются как медицинские. Как-то не верится, что с 1969 года никто из медиков не попросил давление померять, пульс посчитать, объём легких вычислить, показания приборов проконтролировать и т. п.

Сам с этим постоянно мучаюсь и ищу обходные пути. Также интересен тот факт, что при передаче по Com-порту 75 байт(цифра может быть неточной), команда W исполняется мгновенно, если хотя бы на 1 байт больше, то команда W исполняется уже более 30 мсек.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35686513
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKBХотелось бы почитать насчет этого.
Мои исследования показали, что все задержки ниже определенного порога превращаются в Hang 0, т.е. Н 0.01 может быть 10-11 мсек, а Н 0.009 уже будет с нулевой задержкой (тут опасность может быть)
Привожу Вам выдержку из документации по GT.M
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
View

The VIEW command adjusts an environmental factor selected by a keyword argument. For example, VIEW controls journal buffer flushing, determines whether GT.M reports undefined variables as errors or treats them as null, and determines which BREAK commands should display messages.

.....

"TRACE":value:<expr>

Traces GT.M program execution and generates profiling information about the lines and functions executed; with low impact on the run-time performance.

The feature turns on (value= 1 ) or turns off (value= 0 ) tracing. <expr> must evaluate to a string containing the name of a GT.M global variable. The global may also have subscripts; however the subscripts must be literals or the special variable $JOB. Refer to the "Intrinsic Special Variable" chapter in this manual for process identifier description. 
Thus, if the GT.M program lv1.m is:
 
lv1	f i= 1 : 1 : 10  d 
	.s l(i)=i 
	.d bar 
	for i= 1 : 1 : 5  for j= 1 : 1 : 4  s lij(i,j)=i+j 
	q 
bar	s l(-i)=-i 
	q 
 
And the program lv2.m is:

lv2	VIEW "TRACE": 1 :"^lvtr" 
	d ^lv1 
	VIEW "TRACE": 0 :"^lvtr" 
	zwr ^lvtr 
	q 

On executing lv2, the output looks like this (times in the example were chose for clarity of illustration and are not typical):

^lvtr("lv1","bar")="10:8:1:9" 
^lvtr("lv1","bar", 0 )="10:5:1:6" 
^lvtr("lv1","bar", 1 )="10:3:0:3" 
^lvtr("lv1","lv1")="1:37:2:39" 
^lvtr("lv1","lv1", 0 )="1:8:0:8" 
^lvtr("lv1","lv1", 0 ,"FOR_LOOP", 1 )= 10  
^lvtr("lv1","lv1", 1 )="10:3:1:4" 
^lvtr("lv1","lv1", 2 )="10:19:2:21" 
^lvtr("lv1","lv1", 3 )="1:15:0:15" 
^lvtr("lv1","lv1", 3 ,"FOR_LOOP", 1 )= 5  
^lvtr("lv1","lv1", 3 ,"FOR_LOOP", 2 )= 20  
^lvtr("lv1","lv1", 4 )="1:0:0:0" 
^lvtr("lv2","lv2", 1 )="1:47:3:50" 

In this case, ^lvtr("lv1","bar", 0 )="10:5:1:6" means that the statement bar s l(-i)=-i was executed  10  times, with a total of  5  microseconds of user time and  1  microsecond of system time. ^lvtr("lv1","lv1")="1:37:2:39" means that  37  microseconds of user time was spent within that GT.M frame (lv1^lv1), and does not include time spent in routines called from it (such as bar^lv1), whereas ^lvtr("lv1","lv1", 3 )= "1:15:0:15" includes the time spent at bar^lv1.

Note that there is no data in ^lvtr("lv2","lv2", 0 ) or for ^lvtr("lv2","lv2", 2 ) because the execution of the lines containing the VIEW commands that turn profiling on and off are not profiled.

Because of the underlying timers provided by the operating systems, times of less than a microsecond are measured as zero. Therefore, even if a statement executes one million times, it may report zero time if it took less than a microsecond each time.
Извините насчет 0.001 - оказалось 0.000001. Память подводит.
Hang GT.M при значениях тайм-аута менее 0.1 сек начинает врать, но в бОльшую сторону.
Но исходя из написанного в документации можно предположить, что такой порог тоже должен быть.
Возможно в версии 5.3 по другому, надо посмотреть.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35686994
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-veliev,

Ой нет, по GT.M я не в теме.
Поднимаю руки.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35689001
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув AlexKB,
я привел Вам всю цитату только для одной строки - где K.S. Bhaskar обрисовал проблему с точки зрения таймера ОС, где теряется точность за счёт округления сверхмалой величины и описал её (тайм-аут менее 1 мкс округляется системой до нуля, о потом даже миллион итераций длительностью 1 с равен нулю). Я далек от мысли агитировать Вас за тот или иной транслятор. Единственное, что мог бы сказать в этом плане - это предложить Вам попробовать Cache в Linux single user (это что-то наподобие DOS с поддержкой многозадачности), может быть там результат окажется чуть-чуть лучше.
Сообщение с вопросом насчет "точности" Open Use, Read я выставил сегодня на comp.lang.mumps. Посмотрим, что янки скажут на этот счёт.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35697984
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. AlexKB,
Уже есть первая ласточка по теме. Оказывается , стандартом тайм-аут не фиксируется до целых секунд, т.е. у нас есть шансы получить в будущем адекватное решение вопроса.
Код: plaintext
1.
2.
3.
4.
5.
6.
The ANSI/MDC X11. 1 - 1995  Standard explicitly defines
    _hangargument_ ::= _numexpr_
and
    _timeout_ ::= : _numexpr_

Your implementation might round or truncate the _numexpr_ to an
_intexpr_ but the language itself has no such constraints. 
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35699597
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievу нас есть шансы получить в будущем адекватное решение вопросаУв. Ал. Велиев, представители разработчиков мне в свое время заясняли, что для появления какой-либо новой "фичи" фирма должна чувствовать некий финансовый стимул (прямой или косвенный). Вот сумели бы Вы заинтересовать, к примеру, фирму Fidelity реализовать в полной мере (фактически, перевыполнить) данное требование Стандарта? (например: вы такую супер-пупер систему на GT.M разработаете, что и у Вас, и у них продажи резко возрастут, одного вам для этого не хватает: дробного времени ожидания).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35699710
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov, лучше подбить их добавить $LB(), самим небось понравится)))
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35700210
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaлучше подбить их добавить $LB()Подбить их добавить что-либо, как показал наш опыт, весьма сложно, даже при условии, что разработку берете на себя. А сами они добавляют новые фичи лишь при наличии коммерческого интереса. Впрочем, не только они, альтруистов на рынке нет :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35700268
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov, интересно пролучается: у ИС интерес в $LB() есть, а у них нет...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35700400
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$LB() в позднем OpenM/раннем Cache появились, когда фирма взялась за переписывание своего SQL-движка с добавлением объектной функциональности, т.е. во второй половине 90-x. Очевидно, кто-то решил, что так будет лучше (понятнее, удобнее, производительнее...) реализовать новую стратегию хранения Cache Storage. Каковы были коммерческие мотивы такого решения, думаю, каждый может домыслить сам :)
Ну а Fidelity/Sanchez в своем SQL-движке (который лишь недавно обрел статус отдельного продукта) как-то обошлась без столь радикальных мер.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35701176
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslovдля появления какой-либо новой "фичи" фирма должна чувствовать некий финансовый стимул (прямой или косвенный)
Позиционирование продукта на новом сегменте рынка - разве не достаточный стимул для саморазвития? Тем более, что технических усилий для этого нужно не так много. Остальное, конечно, сложнее.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35702253
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievПозиционирование продукта на новом сегменте рынка - разве не достаточный стимул для саморазвитияУв. Al.Veliev, я-то не против, Вы их (разработчиков) попробуйте убедить :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35706794
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. Alexey Maslov,
вот ответ от FNFIS:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Check out the GT.M provided functions provided by calliing out to C
(Programmers Guide at http://www.fidelityinfoservices.com/user_documentation/GTM-PG-UNIX44/...
and look at the functions hiber_start, hiber_start_wait_any,
start_timer and cancel_timer).  But also remember that unless you are
running a real time Linux kernel, you may not get the timing accuracy
you want (there is an important difference between resolution and
accuracy).

Regards
-- Bhaskar
ks dot bhaskar at fnis dot com <-- send e-mail here
Т.е. на момент в GT.M есть решение данного вопроса с привлечением API. Что будет дальше - время покажет. А ув. Е.Каратаев не будет против внедрить такую "фичу" в свой miniM в будущем? На M_RU я встечал Вашу фамилию и потому осмеливаюсь предположить, что если Вы не против, то может быть, предложите там такое нововведение, хотя бы до 0.1 сек? Мне это сделать несколько неудобно, т.к. я не уверен, что смогу этот miniМ запустить в Linux и получится, что предложение делает "вдруг откуда ни возьмись" и неизвестно зачем да ещё не видевший продукта в глаза.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #35707395
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр (не ошибаюсь? :), нововведение обычно предлагает тот, кто считает его актуальным по тем или иным причинам - так уж повелось :) Пишите в m_ru - лист рассылки открыт для всех.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36037599
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievА ув. Е.Каратаев не будет против внедрить такую "фичу" в свой miniM в будущем? На M_RU я встечал Вашу фамилию и потому осмеливаюсь предположить, что если Вы не против, то может быть, предложите там такое нововведение, хотя бы до 0.1 сек? Мне это сделать несколько неудобно, т.к. я не уверен, что смогу этот miniМ запустить в Linux и получится, что предложение делает "вдруг откуда ни возьмись" и неизвестно зачем да ещё не видевший продукта в глаза.
В MiniM все таймауты принимаются интерпретатором до миллисекунд. Другое дело что при отработке самого таймаута будет погрешность исполнения. В погрешность входят по меньшей мере: аппаратное разрешение, переключение контекста операционкой, накладные расходы на отработку интерпретатором. Было бы интересно узнать, заработал ли MiniM в линухе под Wine.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36094500
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MiniM все таймауты принимаются интерпретатором до миллисекунд. Другое дело что при отработке самого таймаута будет погрешность исполнения. В погрешность входят по меньшей мере: аппаратное разрешение, переключение контекста операционкой, накладные расходы на отработку интерпретатором.
Не могу это определить иначе как победой здравого смысла.
Было бы интересно узнать, заработал ли MiniM в линухе под Wine.
Если Вас устроит, в августе смогу этим заняться. О результатах сообщу на форуме.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36125738
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое неприятное, что есть в Cache, это невозможность найти работу, зная его :(
Самое приятное, это WRC, который работает и решает любые проблемы в считанные часы. :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36125848
Фотография ceshka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevСамое неприятное, что есть в Cache, это невозможность найти работу, зная его :(

это типа удар ниже пояса?))
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36125970
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevСамое приятное, это WRC, который работает и решает любые проблемы в считанные часы. :)
Также приятно, что Московские консультанты всегда стараются помочь, лично мне они очень помогают, спасибо им за это.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36125998
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найти работу в глубинке действительно сложно, собственно из-за этого и переехал в Москву, тут кое-где вроде как еще требуются программисты каше

да WRC, это хорошо
бывает, что при отсутствии московских из поддержки, спецы с европы сами переводят с русского и пытаются помочь

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36126018
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor
да WRC, это хорошо
бывает, что при отсутствии московских из поддержки, спецы с европы сами переводят с русского и пытаются помочь

Точно, мне как-то один коллега из Испании помогал, А еще из Германии писали.
Жаль что очередной админ их из почты поудалял - не помню имен.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36129931
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorНайти работу в глубинке действительно сложно, собственно из-за этого и переехал в Москву, тут кое-где вроде как еще требуются программисты кашеНу, если для Cache город Санкт-Петербург - это глубинка... Я в Питере не мог работу найти, несмотря на 7 лет опыта программистом и архитектором только в Cache. Вот тема: "А в Питере программист Каше никому не нужен?" . Вот резюме: "Резюме Project Manager/Team Leader/Architect/Analyst (Питер)" . Если хотите развить это тему, могу еще рассказать, как шарахались от меня в компаниях, где я был на собеседованиях. Так что упоминание о Cache из резюме пришлось просто вычеркнуть, а на вопрос: "Чем занимались последние 7 лет?", - лучше было отвечать "ничем", вместо "Проектировал архитектуру корпоративных систем на Cache". Ибо у работодателей крайне негативное впечатление о Cache. Почему так происходит? Не знаю. Вероятно, какие-то недочеты в маркетинге InterSystems.

Центр разработки в SolidWorks-Russia прекратил свое существование в связи с моим увольнением. Это, кстати, жирный минус в использовании Cache и для компании: увольнение единственного сотрудника ставит крест на успешном и процветающем бизнесе, в который вложены миллионы $$$.

А фраза "кое-где вроде как" точно характеризует ситуацию в Москве: требуется Ведущий разработчик Cache (Москва) .

Проблема не в том, что технология неудачная, а в неудачной политике продвигающих ее компаний.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36129975
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня опыта работы значительно меньше, всего 2 года, жил и получал первый опыт по Cache' в городе спутнике Волгограда
а устроился по этой вакансии
проходил собеседование по Skype, но тут особый случай тут вообще я единственный программист на Cache, не считая еще программиста-администратора 1с
и профиль компании никак не связанный с разработками, чисто торговая контора

ну а так если пройтись по сайтам партнерам Intersystems? можно заметить что у некоторых висят вакансии программистов Cache, например у Летографа и Эскейп-М, хотя конечно в плане зарплат я там не в курсе
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36130886
Холин М.Г.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Справка:
Центр разработки SolidWorks Russia работает по сей день.
Используя технологию от Intersystems выпустил еще несколько версий основного продукта.
http://www.solidworks.ru/products/swr-pdm/product_history/

При этом Cache стоит признать устойчивой технологией и к смене персонала, и к "просадкам" по сервису (действующие установки системы оказались очень устойчивыми, в чём, несомненно крупная заслуга основного архитектора-проектировщика Лисеева Д.В. Другим работодателям дал бы рекомендцию - можно поручать ответсвенные проекты, где нужно делать тщательную проработку архитектуры.)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36131194
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Холин М.Г.Центр разработки SolidWorks Russia работает по сей день.
Используя технологию от Intersystems выпустил еще несколько версий основного продукта.Миша, формально работает-то он по сей день и дальше будет работать, вот только мне за несколько лет так и не удалось найти дополнительных людей даже на саппорт существующих решений, не говоря уж об активном развитии архитектуры продуктов. Даже за шоколадные условия работы и высокие зарплаты IT специалистов, которые всегда были в SolidWorks Russia (в чём, несомненно, крупная заслуга основателя и руководителя центра разработок Холина М.Г.) никто не соглашался класть все яйца в одну корзину и ввязываться в мало востребованную на рынке технологию.

В итоге 3 года назад на сайте появилась вакансия (до сих пор висит):
- Хорошее знание С++ (Visual Studio.NET 2003), Visual Basic
- Опыт разработки ПО с применением СУБД SQL Server 2000 (или другой СУБД)
- Первоначальные знания с Visual Studio 2005 C#. Опыт приветствуется

Интерсистемс действительно оказывает огромную помощь компаниям, которые работают с Cache. Я сейчас работаю плотно с Microsoft, так что есть, с чем сравнивать. И скидки для кашеваров (Cache Value-added Resellers) очень хорошие. Но вот родить квалифицированных разработчиков она никак не может. И Terrasoft на эту проблему налетел, когда в 2003 перевел свой CRM на Cache, а потом вынужден был опять на MS SQL вернуться.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36131295
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я Было бы интересно узнать, заработал ли MiniM в линухе под Wine.
Под Вине в линуксе MiniM не заработал. Очевидно, нужен WMWare.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36131299
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry V. LiseevХолин М.Г.Центр разработки SolidWorks Russia работает по сей день.
Используя технологию от Intersystems выпустил еще несколько версий основного продукта.Миша, формально работает-то он по сей день и дальше будет работать, вот только мне за несколько лет так и не удалось найти дополнительных людей даже на саппорт существующих решений, не говоря уж об активном развитии архитектуры продуктов. Даже за шоколадные условия работы и высокие зарплаты IT специалистов, которые всегда были в SolidWorks Russia (в чём, несомненно, крупная заслуга основателя и руководителя центра разработок Холина М.Г.) никто не соглашался класть все яйца в одну корзину и ввязываться в мало востребованную на рынке технологию.

В итоге 3 года назад на сайте появилась вакансия (до сих пор висит):
- Хорошее знание С++ (Visual Studio.NET 2003), Visual Basic
- Опыт разработки ПО с применением СУБД SQL Server 2000 (или другой СУБД)
- Первоначальные знания с Visual Studio 2005 C#. Опыт приветствуется

Интерсистемс действительно оказывает огромную помощь компаниям, которые работают с Cache. Я сейчас работаю плотно с Microsoft, так что есть, с чем сравнивать. И скидки для кашеваров (Cache Value-added Resellers) очень хорошие. Но вот родить квалифицированных разработчиков она никак не может. И Terrasoft на эту проблему налетел, когда в 2003 перевел свой CRM на Cache, а потом вынужден был опять на MS SQL вернуться.
А может нет там искали, ребята?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36131388
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievА может нет там искали, ребята?В частности, вот тут искали: Много в Питере разработчиков на Cache?

И вакансии вывешивали. В первую очередь необходим был саппорт, т.е. умение поставить и отконфигурить сервер, посмотреть и проконтролировать логи сервера и проконсультировать сисадмина заказчика. Это легко можно сделать по электронной почте, даже, если сисадмин заказчика ничего не понимает в Cache. Учитывая, что серверная часть продукта поставлялась в исходниках, понимание архитектуры Cache и знание основ ObjectScript позволяет сопровождать предыдущую версию решения, пока разработчики занимаются следующей.

А в ситуации, когда есть сотни заказчиков и кроме разработчика никто в системе ничего не понимает, сразу после выпуска версии разработчик начинает заниматься ее сопровождением, решением технических проблем инсталляции, консультированием и т.д. На разработку следующей версии времени уже не остается. Тем не менее, календарных план-графиков и сроков производства никто не отменял. В итоге, в рабочее время надо заниматься саппортом, а по ночам гнать план, поскольку разработчику платят за реализацию новых фич, а не за то, что уже реализованные фичи у заказчиков работают без сбоев.

Все это очень грустно, учитывая, что можно легко найти сколько угодно студентов в любом регионе страны, которые смогут поставить и отконфигурить Oracle, MS SQL, MySQL и написать пару запросов. В итоге, при резком развитии бизнеса и расширении клиентской базы единственный разработчик не становится узким местом. И у него не болит голова, какое аппаратное обеспечение у каждого из сотни заказчиков, какая версия СУБД, правильная ли лицензия установлена, осталось ли сободное местное место на дисках, правильно ли бэкап делается и т.д.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36131391
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому-то интересно, я могу рассказать, какие задачи эффективнее всего решаются на Cache, поскольку в SolidWorks Russia проводились очень серъезные исследования и сравнения разных технологий. И если с точки зрения рынка труда все печально, то с точки зрения технологий именно Cache позволил еще в 2001 году сразу прорваться на занятый конкурентами рынок. Возможность реализации сложной серверной логики в короткие сроки, беспрецендентная производительность и масштабируемость позволила выгодно отличаться от конкурирующих решений на реляционных СУБД.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36131393
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну в общем я полагаю, что самым правильным способом, будет обучать своих специалистов самим, т.е. искать просто способных студентов, и обучать их азам, т.е. вы сделаете и себе и тем самым студентам лучше, хотя все это в зависимости от студентов, но просто думаю нужно уметь правильно подобрать
тем более для организаций занимающихся разработками я думаю это нормальный подход, да к тому же это привлечение в наши ряды все больше людей

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36132402
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя сказать, что очень просто найти готового разработчика или администратора по СУБД Cache' или интеграционной платформе Ensemble. Но специалистов можно достаточно просто подготовить.

История одного проекта.
Один наш крупный заказчик решил разработать на InterSystems Ensemble ряд новых систем.
Так как знакомых с технологиями InterSystems разработчиков в организации не было, перед стартом пилотного проекта проектная команда (менеджер проекта и 3 разработчика) прошла обучение по курсам разработки на СУБД Cache' (4 дня) и InterSystems Ensemble (3 дня).
После этого начался пилотный проект, в рамках которого консультант InterSystems помогал разработчикам правильно использовать технологии InterSystems. Проводились рабочие встречи несколько раз в неделю, шла интенсивная переписка, предоставлялись примеры и т.д.
Через 3 месяца запустили в промышленную эксплуатацию первую систему на Ensemble.
Система - специализированный документооборот. Для его разработки нужно было создать небольшую объектную модель, разработать ряд бизнес-процессов Ensemble, доработать workflow-портал, разработать подсистему мониторинга бизнес-активности.
Еще через месяц в рамках той же идеологии били запущены еще 2 системы.
Потом еще 2 группы разработчиков прошли обучение по Cache' и Ensemble.
Также была обучена группа администраторов.

Менеджеры разработчиков решили, что для реализации новых проектов нужно искать не "готовых" специалистов по Ensemble (кстати, по конкурирующим интеграционным платформам тоже не так просто найти хорошего специалиста), а разработчиков .Net (или Java), которых можно пропустить через 2-х недельное обучение, познакомить с техническим консультантом InterSystems, отправить на школу разработчиков, и которым в первое время стоит назначить кураторов (опытных разработчиков).
При грамотном подходе технологии InterSystems осваиваются достаточно быстро.
Главное, чтобы разработчик был хороший, и у него был бы нормальный менеджмент.

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

Если речь идет об администрировании системы, то тоже не видно особенных проблем. Есть курсы по администрированию СУБД Cache', после окончания которых сотрудник может администрировать систему на СУБД Cache', параллельно занимаясь чем-то еще (разработкой или администрированием других систем).
Недавно ездил к одному заказчику, который с 2002 года регулярно делает резервное копирование, хранить резервные копии за последние 5 дней. При этом не разу не пришлось восстанавливать систему на боевом сервере. В системе работает 500 человек. Так что регламентные работы настроить обязательно нужно, но много времени на администрирование, как правило, не уходит.

Вот такие комментарии.

Вадим
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36134109
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorну в общем я полагаю, что самым правильным способом, будет обучать своих специалистов самим

При наличии у Вас неограниченного количества денег и времени.

DAiMorт.е. искать просто способных студентов, и обучать их азам

И только через пару лет тренировки на заказчиках они станут специалистами.

DAiMorт.е. вы сделаете и себе и тем самым студентам лучше

Если Вы будете платить этим студентам существенно больше, чем платят за такую-же работу с другими технологиями.

DAiMorтем более для организаций занимающихся разработками я думаю это нормальный подход

Мне кажется, для таких организаций профильный бизнес - разработка. Обучение - бизнес совсем других организаций. Обучение сотрудников под себя - очень дорого. Такие вещи могут позволить себе монстры вроде люксофт, рексофт, епам и т.д. Но как раз там Cache и не используют, к сожалению.

DAiMorда к тому же это привлечение в наши ряды все больше людей

Для этого нужно, чтобы InterSystems поддерживал опен-сорс комьюнити.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36134159
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я лично стал программистом Cache\', просто придя работать программистом при том учете что опыта работы программистом у меня не было, да и весь опыт это 6 лет работы на заводе рабочим, и учеба заочно в институте по специальности прикладной информатики, за год до окончания института я устроился программистом, там научился и получил опыт, причем научился я этому довольно быстро, и быстро стал работать наравне с остальными программистами в отделе, отдел на 7 программистов включая начальника ("krvsa"), плюс постановщики и документатор

а как еще можно стать программистом Cache\'
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36134184
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorа как еще можно стать программистом Cache'А зачем это нужно?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36138283
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry V. LiseevDAiMorа как еще можно стать программистом Cache'А зачем это нужно?
А зачем нужно дышать, Дмитрий? Ведь и Вы вряд-ли в будущем будете без исключительных обстоятельств заниматься чем-то другим, не правда ли?

Впрочем, я рад и признателен Вам всем, что сорвавшуюся в сердцах в моём предыдущем посте фразу не сделали почвой для "а МЫ на ВАС" и т.д., а сделали темой для обсуждения серьезной проблемы. А написав эту фразу, я хотел выразить ту мысль, что почему-то между соискателем и работодателем - огромная пропасть. И пропасть эта практически везде и во всех отраслях деятельности. Именно поэтому я сейчас даже и не пытаюсь что-либо искать, а пишу исключительно для души. И вроде иногда неплохие вещи получаются.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36138318
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я не для саморекламы писал. И ещё хочу сказать Вам, Дмитрий, что со временем Вы поймете, какая это радость, что сделанное Вашими руками работает и нужно людям после того, как Вы уже занимаетесь чем-то другим. И да минует Вас горькая чаша топить свои работающие проекты.
Удачи Вам.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36138397
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр здравствуйте !!!

Как насчет установки MV1 (aka MUMPS) V 1.50 под Linux ?
Вам удалось запустить его ?
И еще, у них работа сокетов не очень отличается от стандартных (остальных MUMPS реализаций) ?
Мне бы очень хотелось попробовать этот продукт - легкий и простой в использовании.

Спасибо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36139219
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-velievЭто я не для саморекламы писал. И ещё хочу сказать Вам, Дмитрий, что со временем Вы поймете, какая это радость, что сделанное Вашими руками работает и нужно людям после того, как Вы уже занимаетесь чем-то другим. И да минует Вас горькая чаша топить свои работающие проекты.
Удачи Вам.

Надо сказать, что система SWR-PDM/Workflow, в разработке которой самое активное участие в свое время принимал Дмитрий, отлично работает, развивается и все в ней замечательно.

Об этом на этой странице написал руководитель разработки Михаил Холин.

Система успешно внедрена у крупных заказчиков. Я лично общался с несколькими заказчиками и они очень довольны этой системой.

Так что Дмитрию есть чем гордиться.

Вадим
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36140243
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ValeriuАлександр здравствуйте !!!

Как насчет установки MV1 (aka MUMPS) V 1.50 под Linux ?
Вам удалось запустить его ?
И еще, у них работа сокетов не очень отличается от стандартных (остальных MUMPS реализаций) ?
Мне бы очень хотелось попробовать этот продукт - легкий и простой в использовании.

Спасибо.
Valeriu, здравствуйте!

Я его успешно запустил, работал он меня так же, как и 1.47.
В сравнении с 1.47 отсутствует расширенная командная оболочка.
Как работают сокеты, Вы можете посмотреть в программах %WWW и %WWW1.
Небольшая howto -статейка у меня на сайте HOWTO -> M1.50 .
Прямая ссылка (удобно для распечатки - CSS отключается): здесь
Попробуйте установить его в C-shell. Только под Explorer и Google Chrome не ходите (под Safari можно:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36140269
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36283417
al-veliev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все!

К моему очередному дню рождения хостер подготовил подарок - мой сайт перевели на линукс. Теперь я имею счастливую возможность показать, как М в связке с высокодинамичным HTML Triton работает в Сети на более-менее реальных объемах (я взял для примера 400Кбайт). Это мой Gedit - утилита наподобие PHP MyAdmin.

Также есть новый интересный материал на моём сайте cgi2m.net.ua , часть статей уже переведена на русский язык, и процесс перевода в активной фазе. Сайт пока в черновом виде, извините за мелкие недоделки, просто уже про новое содержание напечатали в других местах.

Добро пожаловать!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36283615
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы бы на сайте хотя бы кодировку указали, а то меню не читаемо
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36284681
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
al-veliev , такое выставлять, нужно быть ооочень самоувереным...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36868619
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мои соображения по поводу языка MUMPS.
Язык М процедурный язык этим он похож на остальные языки типа С, явы, паскаля. Но М отличается от них
несколькими принципиальными моментами:
1. Управление задачами. Язык М единственный имеет встроенное средство порождения задачи.
Это команда JOB. Можете сравнить это с созданием класса потока в других языках.
2.Управление данными. Переменная возникает в момент ее использования.
Локальная переменная так же может быть создана командой NEW.
Я считаю что это минимальный и гибкий механизм управления данными хотя он с моей точки зрения
недостаточно изолирует локальные переменные.
3.Описание данных. Оно в М отсутствует это принципиальное отличие языка . Благодаря этому
в М отсутствуют ссылочные данные и связанные с ними ошибки. Из моего опыта 80% ошибок в программе
на других языках это обращение к несуществующим данным. В результате сколько нибудь большые
проекты на этих языках практически не отлажены. В М таких ошибок вообще не бывает. Основной
ошибкой в М программах неопределенная переменная. Эта ошибка легко локализуется и исправляется.
Программы на М поэтому легко и быстро отлаживаются.
Описание переменных в других языках создает для них же колосальные трудности которые они затем
героически преодолевают. В Паскале огромная библиотека программ многие из которых отличаются
только типом передаваемых параметров либо возвращаемых значений. В М по сравнению с Паскалем
библиотечных функций совсем мало но они функционально полнее библиотеки Паскаля. После встроенных
функций языка М библиотеки на других языках оставляют впечатление сумбурной кучи бессвязных
программ.
4. Переменные в М являются деревьями. Это значит что это готовые структуры данных. Дерево
является частью языка М. Другие языки встроенных структур данных неимеют вообще. А примитивные
структуры реализованы в виде библиотеки классов. Такими классами в яве являются списки, карты,очереди.
Нет необходимости говорить что возможности дерева значительно шире и работать с ним намного проще.
Большая часть кода в проектах занимается работой со структурами данных и во многих случаях
мне вообще не важно знать тип данных. Тип данных становится важным в основном при вводе и проверке
данных а это незначительная часть кода приложения да и тип данных мне в этом случае мало помогает.
Получается что я выполняю описание переменных не для себя а для транслятора.
Благодаря этим особенностям язык MUMPS является компактным, мощным и надежным языком
программирования и ему нет равных среди других языков.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36868790
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharМои соображения по поводу языка MUMPS.
...
Благодаря этим особенностям язык MUMPS является компактным, мощным и надежным языком
программирования и ему нет равных ....

Те, кто хорошо знает mumps все это понимают, а те, кто с ним не знаком, никогда не поймут.. С этим придется смириться, mumps не преподают в вузах:) А IS из коммерческих соображений делает ставку скорее на SQL, чем на mumps.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36873078
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина
Те, кто хорошо знает mumps все это понимают, а те, кто с ним не знаком, никогда не поймут.. С этим придется смириться, mumps не преподают в вузах:) А IS из коммерческих соображений делает ставку скорее на SQL, чем на mumps.

Посмотрите на новую технологию Java eXTreme в Cache' 2010.2.
Вот маркетинговое описание на русском языке .
Из программы на Java можно работать непосредственно с глобалами и очень быстро...

Это нужно для специализированных задач и там где они есть, мы рассказываем про "прямой" доступ к данным.


Вадим
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36875214
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да слова Вадима подтверждают высказывание предыдущего оратора, что IS ориентируется не на МИМПС а на другие технологии. С точки зрения коммерции может быть это и оправдано, но с точки зрения технологии МИМПС безусловно нет. Они свели МИМПС к языку базы данных.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36875540
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Caché используется Caché ObjectScript , а не MUMPS, хотя между ними и есть связь: Relationship with ANSI Standard M

misha_sharДа слова Вадима подтверждают высказывание предыдущего оратора, что IS ориентируется не на МИМПС а на другие технологии. С точки зрения коммерции может быть это и оправдано, но с точки зрения технологии МИМПС безусловно нет. Они свели МИМПС к языку базы данных.
Мне кажется, что InterSystems ориентируется прежде всего на своих клиентов, а не на MUMPS или технологии.
В WRC для этого есть специальный тип запроса на новую функциональность или её улучшение.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36875588
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас меня, наверно, заплюют, но мне кажется, что чистый М далеко не шоколад.
Это довольно древний язык, со своими тараканами

- глобальная видимость локальных переменных. Забыл сделать new - и в твоем цикле переменные будет менять подпрограмма неизвестно какого уровня.
В каше сделали procedureblock (правда свои "фичи" приколы в реализации)

- модульность на уровне процедур. Ну в наше время это просто капец.
В каше есть классы.

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

В каше большая библиотека классов, SQL, встроенный CSP и многое другое.

Фишка М - в том что это "ассемблер", язык низкого уровня для СУБД. Те же B-деревья используются в других СУБД, но там они обрамлены кучей дополнительных действий, ограничений и т.д., что считает нужным сделать разработчик СУБД., и только М из (известных мне) работает со структурами данных настолько на низком уровне

Я считаю, М в чистом виде для создания больших систем малопригоден, но он может быть основной для других СУБД.
Intersystems сделала Cache, причем оставив преимущества М.

Правда, я считаю, на М (или каше) можно создать что-то совершенно новое, прорывное.
Интерсистемс во многом делает то, что уже в каком-то виде реализовано в других СУБД.
Где-то подсознательно это разочаровывает, хочется большего, но я не знаю, чего ...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36875600
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, с другими системами, где есть М, кроме каше не работал.
Так что это из области "не читал, но осуждаю"
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36876023
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharИз моего опыта 80% ошибок в программе на других языках это обращение к несуществующим данным.

Тут на самом деле ситуация не настолько хороша - ибо помимо UNDEFINED есть еще и SUBSCRIPT - а это ошибка куда неприятнее будет.

misha_shar4. Переменные в М являются деревьями. Это значит что это готовые структуры данных. Дерево является частью языка М.

Это несомненный плюс... с точки зрения языка и алгоритмов обработки, но с точки зрения хранения глобалов это, как не странно, еще и ахиллесова пята - ибо ряд задач - например последовательная выборка большого объема - на деревьях работает медленнее.

В итоге в чисто реляционных СУБД - запрос вида SELECT TOP 20000 * FROM SomeTable работает быстрее чем в Каше - но они, слава богу, в реальных задачах встречаются достаточно редко.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36876152
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отсутствие необходимости определять переменные, кстати, не такой уж несомненный плюс.
Были случаи, когда программист из-за опечатки присваивал значение другой переменной.

А вот отсутствие типов переменных меня после С++ шокировало, но сейчас нравится.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36877896
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Отсутствие необходимости определять переменные, кстати, не такой уж несомненный плюс.
Были случаи, когда программист из-за опечатки присваивал значение другой переменной.
А вот отсутствие типов переменных меня после С++ шокировало, но сейчас нравится.
Как раз в C изначально не было типов. Но потом появились:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36879571
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну начнем по порядку.
На форум мнения выносятся для обсуждения. А не для оплевывания.
Оговорюсь речь идет о чистом Мампсе. Никаких объектов и SQL там
в помине нет.
Язык конечно древний но основных своих свойств он не утратил. При его
создании люди хорошо думали. В отличии от остальных. С и Паскали это
аля Алголи с этой точки зрения это более древние языки. Ничего
принципиально нового в этих языках по сравнению с Алголом нет.
Больше всего отличий в библиотеках, а они дело наживное. Поэтому
по сравнению с С и Паскалем это новый язык.
Насчет тяжелой модифицируемости принципиально не согласен.
Методы проектирования никто не запрещал для этого языка. Не загнал же ты
все приложение в одну программу? Проектируешь основную структуру хранения.
Описываешь методы доступа к ней изолируя доступ к ней. И модифицируешь
на здоровье. Я написал полный бух.учет большой это или нет программный
комплекс? Вообще сильно помогает осмысленное наименование программ
и локализация отдельной обработки внутри одной программцы. У меня несколько
базовых структур и их обработка локализована внутри ограниченного количества
программ. Мампс конечно не Асемблер это типичный язык высокого уровня.
Для написания больших информационных систем он с моей точки зрения
подходит лучше всего. А вот SQL доступ никуда не годен. При обходе основной
структуры на нем мне не удалось выразить выборку. Пришлось специальным
образом обходить дерево и фильтровать его. Я это пртложение писал на
Паскале и Интербейсе как пришлось кувыркаться с SELECT а потом полученную
таблицу дополнительно фильтровать на стороне клиента не передать словами.
Меня от этого программирования до сих пор бросает в дрожь. На МАМПСЕ
написал одну программу выборки и фильтрации под мою структуру и нет проблемм.
Мне вызвать программу и передать ей параметры проще чем кувыркаться с
созданием объекта и выполнением SQL операторов. Отладка процедур
на стороне сервера отдельная песня. Корректировеа данных SQL операторами
вообще мрак. На время обработки SQL вызова приложение теряет управление
и поэтому для работы с большими массивами непригодно.

{
Тут на самом деле ситуация не настолько хороша - ибо помимо UNDEFINED есть
еще и SUBSCRIPT - а это ошибка куда неприятнее будет.
}
Ошибка неприятная но не смертельная. И возникант она только при прямом
обращении к глобали. При обходе дерева она возникнуть не может. И если
не использовать ассоциированые массивы то мест ее возникновения
не так уж много. Ну в конце концов не одна а две ошибки.
{Деревья.
Это несомненный плюс... с точки зрения языка и алгоритмов обработки, но
с точки зрения хранения глобалов это, как не странно, еще и ахиллесова пята -
ибо ряд задач - например последовательная выборка большого объема -
на деревьях работает медленнее.
}
Самых быстрых структур для всех организаций данных пока не открыто.
Если у тебя преобладает последовательная организация данных. То
их хранить надо в обыкновенных файлах. И будешь иметь самый быстрый
доступ к данным.
{
Мне кажется, что InterSystems ориентируется прежде всего на своих клиентов, а не на MUMPS или технологии.
В WRC для этого есть специальный тип запроса на новую функциональность или её улучшение.
}

Все что я написал не для того чтобы расхвалить МИМПС. С современной точки зрения
это довольно архаичный язык. Но это самый перспективный из языков. Минимальных
изменений достаточно чтобы довести его. Я хочу предложить форумчанам свои
предложения по совершенствованию МАМПСА. Я их написал и отправил в комитет
по развитию языка, в ИнтерСистем, в GTM, MIniM. Далее привожу текст письма.

Предложения по развитию языка MUMPS.
Развитие языков программирования в последнее время идет бурными темпами.
Появилось множестро различных языков. Существующие языки тоже постоянно меняются.
Все это указывает на потребности сообщества программистов получить лучший язык.
MUMPS в этом бурном развитии не принимает участие.Роль его как языка
программировыания постоянно снижается. И к данному моменту его роль
фактически сведена к языку манипулирования базами данных. Все это указывает
на необходимость развития самого языка. Потенциальные возможности этого языка
значительно больше таковых в других языках. Но необходимо развитие MUMPSa.
В разных языках по крупицам разбросаны идеи удачных конструкций и их надо использовать.
Я хотел бы представить свои предложения по развитию языка MUMPS.
При этом мои предложения я считаю не должны нарушить внутреннюю идеалогию MUMPSa.
Перечисляю свои предложения:

1.Локальные переменные за исключением начинающихся с % должны быль
локализованы внутри вызова подпрограммы (команда DO) или вызова функции.
А вот внутри вызова команды XECUTE (X) локализовать переменные нельзя.
2.Ввести команду конец блока для блочных команд.
DO (D)
ENDDO (END)

IF (I)
ENDIF (END)

ELSE (E)
ENDELSE(END)

FOR (F)
ENDFOR(F)
3.Ввести команду CASE
CASE выражение
M1 END
M2 END
ENDCASE (END)
Значение выражения должно соответствовать именам меток
4. Расширить синтаксис команды FOR для обхода деревьев.
FORO имя_узла:DAN:IND
ENDFOR
DAN – переменная куда помещается значение
IND - значение выбранного индекса

FORQ имя_узла:DAN:REF
ENDFOR
REF- ссылка на выбранный узел.

5, Модифицировать команду NEW добавив префиксное описание переменных.
Например NEW pref*

6.Ввести системную функцию которая бы производила разбор выражения глобальной ссылки.
Давала либо имя переменной либо любые из индексов.

7.Синтаксис вызова программ с передачей параметров по имени неудачен.
Можно вообще отказаться от этой конструкции никаких новых возможностей это не дает. А параметр по имени можно передавать с помощью передачи параметра по значению а использовать в виде косвенного обращения. Например
Вызов по имени:
D A(.B)
A(X) X=1 Q
Вызов по значению:
D A(“B”)
A(X) @X=1 Q
Результат будет аналогичным. И применение точки неудачно.

7.Время в командах ожидания должно задаваться в милисекундах а не в секундах.
Команды HANG, READ,OPEN,JOB.
8.Надо ввести систему обработки событий Для этого использовать индексированную
системную переменную $EVENT В узлах которой должны быть ссылки на программы обработки.
первый уровень индекса должен определять тип события которое надо обрабатывать.
$EVENT(“ER”) ошибки в программе
второй индекс здесь сама ошибка.
$EVENT(“IO”) события ввода вывода — открытие закрытие чтение, запись.
2-индекс вид события открытие закрытие чтение, запись
3-й индекс имя устройства

$EVENT(“TIME”) события таймера.

$EVENT(“VL”) обращение к переменной
2-индекс вид события чтение, запись
3-й индекс имя переменной

$EVENT(“WN”) события возникающие в интерфейсе пользователя.
И тал далее.
9. Надо создать систему работы с оконным интерфейсом пользователя и для этого использовать индексированую системную переменную $WINDOWS в узды этой переменной разместить компоненты пользовательского интерфейса. Обработку событий пользовательского интерфейса организовать на основе системной переменной $EVENT -рассмотрена ранее.

10. Ввести объекты. Этот пункт требует дополнительных пояснений.
Как известно программные системы это структуры + данные. Структуры могут быть
представлены либо реляционными таблицами либо деревьями либо массой других структур (в JAVA это LIST, MAP)
Ясно что в области структур у MUMPSa нет достойных конкурентов. А вот описание данных на основе
классов развивалось очень бурно. Ясно что любой современный язык должен предлагать
какую то модель классов. Но идеология MUMPSa не содержит описаний переменных и поэтому
классический подход по введению CLASS в MUMPSe не подходит. Значит необходим другой путь.
И он есть с помощью программ. Ввести понятие программного модуля. Каждый такой модуль
должен соответствовать CLASS. Каждому свойству поставить в соответствие точку входа в
этом модуле. Все свойства определить через методы. Ввести стандартные методы get,set,new
Точку входа определить как имя свойства_'.'_имя метода.
Внутри модуля определить перечень локальных переменных модуля. Которые могут быть видны
только внутри методов данного модуля.Это будет аналог privat varibles.
Аналог public valibles это свойства определяемые методами get, set. В метод new передавать ссылку
на узел которой будет соответствовать объект. Сами свойства определяются методами set , get и
могут хранится как в глобальных так и в локальных переменных на усмотрение программиста.
В методе new записывать имя модуля в специальную переменную модуля например CLASS.
И при последующих обращениях к переменной поиск методов осуществлять на основе этого значения.

CLASS должен поддерживать:
- Инкапсуляцию — это реализуется свойствами(public) и переменными модуля(private) этого достаточно.
-Наследование в заголовок модуля добавить утверждение extends за которым поместить перечень
наследуемых модулей. Реализацию наследования организовать вызовом либо метода модуля,
а если его нет то продолжить поиск в родительских модулях.
-Полиморфизм это требование в этой модели выполняется автоматически так как отсутствует
явное описание CLASS.
В результате мы получим полное соответствие модели CLASS.
Мне бы хотелось чтобы MUMPS занял среди языков программирования достойное место благодаря
его уникальным возможностям. Я считаю что язык программирования будущего может быть создан
только на основе MUMPSa.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36880101
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharЯ их написал и отправил в комитет по развитию языка, в ИнтерСистем, в GTM, MIniMИнтересно будет почитать ответы вендоров, если Вы продублируете их здесь.
ИМХО, остановка в развитии MUMPS еще не является признаком его скорой смерти: многие языки не развиваются, начиная с 90-х, тем не менее на них пишут и еще долго будут писать.
Прежде чем реализовать какое-либо новшество, вендор задает себе вопрос: сколько я на этом заработаю? (это уже из личного опыта общения).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36881016
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_shar, много написали, не смогу ответить, не зарывшись в деталях и не потеряв нить.
- С и М
Непонятно, почему сравниваете М с С, ведь на С уже практически никто не пишет, а стандартом программирования стал С++, который имеет принципиально другую идеологию? (Просьба фанатам других объектноориентированных языков воздержаться, это непринципиально )

- По поводу модифицируемости, инкапсуляции и т.д.
На самом деле в итоге в том же С++ инкапсуляция, наследование, полиморфизм и прочее в итоге преобразуются в ассемблерный код. Т.е. эти понятия существуют только в сознании программиста и чисто технически то же самое можно получить тот же результат с помощью С или даже ассемблера.
Попробую провести аналогию. Вот у вас есть квартира, и вы хотите в ней закрыться и общаться с помощью телефона, аськи, скайпа и пр. Но у вас не только нет двери, но и сквозь стены можно пройти. Тогда вы начинаете всячески внушать окружающим, что стены у вас железобетонные в метр толщиной, двери железные и заварены и т.д. Возможно, вы этого добьетесь.
Т.е. это тот случай, что вы добились инкапсуляции в М. Теоретически это возможно при наличии очень серьезной внутренней дисциплины, на практике маловероятно.
Задача не в том, что инкапсуляция и др. дают какие-то новые возможности, их цель как раз ограничить(дисциплинировать) сознание программиста.

- по поводу проблем с SQL
Возможно, вы просто не умеете его готовить. В том же Каше SQL просто чудесно дополняет объектную модель. Сборка данных из нескольких классов буквально в одно движение.

- по поводу ошибок и отладки
Ошибки вообще можно поделить на разные типы, каждый следующий тип на порядок сложнее в исправлении:
1. ошибки компиляции
2. ошибки выполнения (undefined и subscript т.д.)
3. ошибки логики выполнения (когда программа отрабатывает, но работает неправильно, причем это не всегда заметно)
4. ошибки постановки задачи
Так вот, ошибки 2го типа вообще говоря это не то, о чем есть смысл спорить, они исправляются буквально через несколько тестовых запусков. Ошибки логики выполнения уже сложнее, и они зависят от того, насколько прозрачен язык. И пока я не уверен, что М самый простой в восприятии.

- по поводу доработок М
большинство производителей М побоятся отойти от стандарта. Те доработки, которые вы предлагаете, на мой взгляд, слишком слабые, чтобы ради них кардинально ломать формат языка.
Да и вообще, формат языка вряд ли будут менять, так как язык не находится в стадии развития.
Интерсистемс в этом смысле исключение, т.к. она сама себе стандарт.
Про локальные переменные: в каше есть ProcedureBlock
Кстати, DO (D) ENDDO (END), IF (I) ENDIF (END) зачем нужны? чем не нравится синтаксис в фигурных скобках?
Разбор выражения глобальной ссылки: в каше есть $QSUBSCRIPT
Время в командах ожидания должно задаваться в милисекундах а не в секундах. - Абсолютно согласен. Непозволительно в наше время считать время в секундах.
Чем не нравится объектно-классовая модель каше? Она значительно мощнее того, что вы предлагаете
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36881309
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimFБредятина
Те, кто хорошо знает mumps все это понимают, а те, кто с ним не знаком, никогда не поймут.. С этим придется смириться, mumps не преподают в вузах:) А IS из коммерческих соображений делает ставку скорее на SQL, чем на mumps.

Посмотрите на новую технологию Java eXTreme в Cache' 2010.2.
Вот маркетинговое описание на русском языке .
Из программы на Java можно работать непосредственно с глобалами и очень быстро...

Это нужно для специализированных задач и там где они есть, мы рассказываем про "прямой" доступ к данным.


Вадим
Это хорошо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36881316
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Я считаю, М в чистом виде для создания больших систем малопригоден, но он может быть основной для других СУБД.

mumps - это инструмент для создания СУБД. Это вроде общеизвестно:)
Блок А.Н.
Intersystems сделала Cache, причем оставив преимущества М.
Правда, я считаю, на М (или каше) можно создать что-то совершенно новое, прорывное.
Интерсистемс во многом делает то, что уже в каком-то виде реализовано в других СУБД.
Где-то подсознательно это разочаровывает, хочется большего, но я не знаю, чего ...
Нужна другая модель данных:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36881811
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу моих предложений мне пришло 2 ответа.
ИнтерСистем меня не удостоил даже ответом.
Первый от комитета по МАМПСУ привожу его в оригенале:

От: "Ed Demoel" <demoel@radix.net>;
Кому: "kreit" <kreit@kaznet.kz>;
Копия: <edemoel@forerunsystems.com>;; <art@artsmithphotography.com>;
Тема: Re: Suggestion to MUMPS language development.
Дата: 3 февраля 2010 г. 15:31

Dear Mr. Sharymov,

I received your e-mail of 2 February 2010 in good order.

Before I go into much detail, I think I'll need to explain first
that the most recent meeting of the MUMPS Development Committee
was in September 1998, and that currently no new meetings are
scheduled.

I will forward your message to the current Chair of the MUMPS
Development Committee, and he should provide a formal response.
(I will also include my draft response below.)

While some of the ideas in your proposals may be worth pursuing,
it is important to be aware that changes to languages nowadays tend to be
directed by the people who foot the bills for the work, and no longer by
committees whose interest is typically more of an academic nature.

Sincerely,

Ed de Moel
MUMPS Development Committee Secretary


Draft response:

While I cannot predict if and when the MDC will ever reconvene,
and even if they do, I could not predict how they would vote
on any specific issue, there are some patterns from the past
that are worth being aware of:

a. The Committee has typically voted against any change to
the language that would break software that is currently
in compliance with the language standard.
(This affects proposals 1, 5 and the first one numbered 7)

b. The Committee rarely approved changes that would introduce
a new way of doing something without introducing new
functionality.
(This affects proposals 2, 3, 4, 6, 8, 9)
2: the first line with a lesser number of dots already
accomplishes this
3: indirection already accomplishes this, and in a much
more powerful manner
6: the functions $NAME and $QSUBSCRIPT already accomplish
this
8: The "Structured System Variable" ^$EVENT already
provides this functionality.
9: The "Structured System Variable" ^$WINDOW already
provides this functionality.

c. Some language constructs are often misunderstood, leading
to proposals for changes that would remove essential features.
(This affects the both proposals numbered 7.)

First 7: the dot syntax for "passing by name" has more
usages than just a name-indirection
Second 7: the parameters in these contexts are "numbers".
These numbers may be integers, but also fractional
numbers. The level of resolution is left to the
implementor, the language definition does not
specify any restrictions.

d. Object extensions have been proposed in the past.
Many object-related proposals have been put before the
Committee. Some were approved, some were rejected.
While there currently is a set of proposals that have
"been approved for inclusion in a future standard", it
is not clear if or when a future standard would be published.
It should also be noted that each implementor has chosen
their own fashion of implementing objects.
I believe that at least one of the implentors has brought
a system on the market that implements all of the features
mentioned in your proposal.

Второй от разработчика МиниМ Каратаева.

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

Может, предложите обсуждение где-то на публичном ресурсе?

С уважением,
Евгений Каратаев.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36881898
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
{
- По поводу модифицируемости, инкапсуляции и т.д.
На самом деле в итоге в том же С++ инкапсуляция, наследование, полиморфизм и прочее в итоге преобразуются в ассемблерный код.
Т.е. эти понятия существуют только в сознании программиста и чисто технически то же самое можно получить тот же результат
с помощью С или даже ассемблера.
}
Полностью согласен но все же я пишу на МИМПСЕ а не на Асемблере. Я речь веду о свойствах языка. Есть ли в нем
определенные конструкции и насколько они удобны для пользователя.
В стандартном МИМПСЕ нет объектов их нет и в МиниМ хочу предложить вспомогательные программы, которые позволят
писать в объектном стиле в МиниМ. Аналогичные программы могут быть использованы и в Каше хотя не поворачивается
язык предлогать им это.
Вот эта программа

%Type ;Объектная модель
;создание объекта ref-ссылка где будет создан объект type-класс объекта
new(ref,type) N (ref,type)
ZT:ref="" "noREF"
ZT:type="" "noType"
S L=$QL(ref) S:L>0 ref=$NA(@ref,L-1) S ^type(ref)=type
Q
;получить свойство объекта
get(ref,prop) N (ref,prop)
ZT:ref="" "noREF"
ZT:prop="" "noProp"
S PR="S R=$$"_$$FindProp(ref,"get"_prop)_"("""_ref_""")",$ZT="ERRget"
X PR
Q R
ERRget ZT "syntObjget"
;изменить свойство объекта
set(ref,prop,val) ZT:ref="" "noRef" ZT:prop="" "noProp"
S PR=$$FindProp(ref,"set"_prop)_"("""_ref_""","""_val_""")",$ZT="ERRset"
D @PR
Q
ERRset ZT "syntObjset"
;Вспомогательные программы не для внешнего использования
FindExt(type) N (type)
S A="S R=$$^"_type_"()",$ZT="ERRFindExt"
X A
Q R
ERRFindExt
ZT "noObjType"
FindType(ref) N (ref)
S L=$QL(ref) S:L>0 ref=$NA(@ref,L-1)
S type=^type(ref)
ZT:type=""||(type'?1A.AN) "noObj"
S A=$$FindExt(type)
Q type
FindProp(ref,pr) N (ref,pr)
S type=$$FindType(ref),A=pr_"^"_type
Q:$T(@A)'="" A
S EXT=$$FindExt(type)
ZT:EXT="" "noObjProp"
S F=1
F J=1:1:$L(EXT,",") S A=pr_"^"_$P(EXT,",",J) I $T(@A)'="" S F=0 Q
ZT:F "noObjProp"
Q A
-------------------------------------------------------
Далее привожу пример использования
Реализация объекта XPerson
XPerson() Q "" ;Должен вернуть список родителей возможно множественное наследие
;свойство FIO
;получить значение свойства
getFIO(ref) Q @ref@("FIO")
;записать значение свойства
setFIO(ref,val) S @ref@("FIO")=val
;свойство Age
getAge(ref) Q @ref@("Age")
setAge(ref,val) S @ref@("Age")=val

Реализация объекта XWorker с родителем XPerson
XWorker() Q "XPerson" ;Тип Работник
getPOSITION(ref) Q @ref@("POS")
setPOSITION(ref,val) S @ref@("POS")=val
getMONEY(ref) Q @ref@("MON")
setMONEY(ref,val) S @ref@("MON")=val
--------------------------------------------------------
Пример программы использования этих классов

X ;Персоны
D new^Type("^A(1,2)","XPerson"),new^%Type("^A(1,3)","XPerson"),new^%Type("^A(1,4)","XPerson")
D set^%Type("^A(1,2)","FIO","Иванов Иван Иванович")
D set^%Type("^A(1,3)","FIO","Петров Петр Петрович")
D set^%Type("^A(1,4)","FIO","Сидоров Сидор Сидорович")
D set^%Type("^A(1,2)","Age","50")
D set^%Type("^A(1,3)","Age","60")
D set^%Type("^A(1,4)","Age","70")
W #
W $$get^%Type("^A(1,2)","FIO")," возраст ",$$get^%Type("^A(1,2)","Age"),!
W $$get^%Type("^A(1,3)","FIO")," возраст ",$$get^%Type("^A(1,3)","Age"),!
W $$get^%Type("^A(1,4)","FIO")," возраст ",$$get^%Type("^A(1,4)","Age"),!
;Работники
D new^%Type("^A(2,2)","XWorker"),new^%Type("^A(2,3)","XWorker"),new^%Type("^A(2,4)","XWorker")
D set^%Type("^A(2,2)","FIO","Иванов Иван Иванович")
D set^%Type("^A(2,3)","FIO","Петров Петр Петрович")
D set^%Type("^A(2,4)","FIO","Сидоров Сидор Сидорович")
D set^%Type("^A(2,2)","Age","50")
D set^%Type("^A(2,3)","Age","60")
D set^%Type("^A(2,4)","Age","70")
D set^%Type("^A(2,2)","POSITION","Администратор")
D set^%Type("^A(2,3)","POSITION","Директор")
D set^%Type("^A(2,4)","POSITION","Рабочий")
D set^%Type("^A(2,2)","MONEY","50000")
D set^%Type("^A(2,3)","MONEY","60000")
D set^%Type("^A(2,4)","MONEY","20000")
W #
W $$get^%Type("^A(2,2)","FIO")," возраст ",$$get^%Type("^A(2,2)","Age")," ",$$get^%Type("^A(2,2)","POSITION")," ",$$get^%Type("^A(2,2)","MONEY"),!
W $$get^%Type("^A(2,3)","FIO")," возраст ",$$get^%Type("^A(2,3)","Age")," ",$$get^%Type("^A(2,3)","POSITION")," ",$$get^%Type("^A(2,3)","MONEY"),!
W $$get^%Type("^A(2,4)","FIO")," возраст ",$$get^%Type("^A(2,4)","Age")," ",$$get^%Type("^A(2,4)","POSITION")," ",$$get^%Type("^A(2,4)","MONEY"),!
Q
-----------------------------------------------------------------
Не скажу что все отлажено но идея должна быть ясна.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36882071
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
{
- по поводу проблем с SQL
Возможно, вы просто не умеете его готовить. В том же Каше SQL просто чудесно дополняет объектную модель.
Сборка данных из нескольких классов буквально в одно движение.
}
Возможно не умею. Но у меня все приложение в основном построено на выборке фильтрации и
изменении структуры одной глобали. Я конечно могу все это выполнить SQL запросами но очень
напряжно. Тем более заранее не известно что надо фильтровать и какая структура должна быть
получена на выходе.
{
Ошибки вообще можно поделить на разные типы, каждый следующий тип на порядок сложнее в исправлении:
1. ошибки компиляции
2. ошибки выполнения (undefined и subscript т.д.)
3. ошибки логики выполнения
(когда программа отрабатывает, но работает неправильно, причем это не всегда заметно)
4. ошибки постановки задачи
Так вот, ошибки 2го типа вообще говоря это не то, о чем есть смысл спорить, они исправляются буквально
через несколько тестовых запусков. Ошибки логики выполнения уже сложнее, и они зависят от того, насколько
прозрачен язык. И пока я не уверен, что М самый простой в восприятии.
}
Ошибки логики выполнения конечно сложнее. Их количество и качество существенно зависят от
стиля программирования и возможностей языка. Язык М самый простой логичный и компактный.
Объем программы на нем в разы меньше чем на других языках поэтому я считаю его
самым надежным языком. А насчет восприятия это зависит только от стиля программирования.
{
большинство производителей М побоятся отойти от стандарта.
Те доработки, которые вы предлагаете, на мой взгляд, слишком слабые, чтобы ради них
кардинально ломать формат языка
}
Слабыми можно назвать что угодно это вообще не аргумен. Предложение по
расширению языка введением объектов я считаю очень Актуальным и важным.
И самое главное кардинально ломать формат языка мои предложения не должны.
Кардинально ломают формат языка расширения Интер Система.
{
Интерсистемс в этом смысле исключение, т.к. она сама себе стандарт.
}
Интерсистемс достаточно точно осознало проблеммы языка М но их
реализация говорит о их полном не понимании логики этого языка.
{
Про локальные переменные: в каше есть ProcedureBlock
}
Да есть но он сломал весь синтаксис языка М.Поведение
переменных и меток кардинально изменилось не в лучшую сторону.
И часто противоречит концепциям М. Выполнение команды X
вообще маразм. Выполняется команда как внешняя процедура.
Не получить не передать значения кроме как через % переменные
нельзя.
{
Кстати, DO (D) ENDDO (END), IF (I) ENDIF (END) зачем нужны? чем не нравится синтаксис в фигурных скобках?
}
По моему введение фигурных скобок аля С вообще не нужно. В синтаксисе
языка М есть блоки с точкой. Не надо было порождать новую конструкцию
а уж тогда в IF просто использовать такой блок
IF выражение операторы
.операторы
.операторы
ELSE операторы
.операторы
.операторы
Хотя я считаю что введение команды конца блока более предпочтительно и наглядно.
Конечно это мое мнение

Операторы while и do while тоже вообще не нужны. Команда FOR без аргументов
прекрасно справляется с этими функциями.

{
Чем не нравится объектно-классовая модель каше? Она значительно мощнее того, что вы предлагаете
}
Представте себе что не нравится и очень сильно. Никакой мощности в ней нет.
А вот лишней мороки сколько угодно. Язык М мягко намекает не надо описаний
переменных. А класс это обыкновенная переменная созданная пользователем.
В традиционных языках Класс состоит из описания и блока реализации.
Так вот описания вообще не нужно достаточно блока реализации. А описание
полько порождает лишнюю работу и больше ничего не дает.
Не считая не нужного описания класса Интерсистем еще и зафиксировало
структуру классов. И структура данных в результате была потеряна.
А это очень принципиальный момент.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36882336
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
S L=$QL(ref) S:L>0 ref=$NA(@ref,L-1)
S type=^type(ref)
ZT:type=""||(type'?1A.AN) "noObj"
S A=$$FindExt(type)
Q type
FindProp(ref,pr) N (ref,pr)
S type=$$FindType(ref),A=pr_"^"_type
Q:$T(@A)'="" A
S EXT=$$FindExt(type)
ZT:EXT="" "noObjProp"
S F=1
F J=1:1:$L(EXT,",") S A=pr_"^"_$P(EXT,",",J) I $T(@A)'="" S F=0 Q
ZT:F "noObjProp"
Есть в Русском Языке очень правильное слово: галиматья . Для апологетов ассемблера и мумпса мож это и круто, а с точки зрения реальной разработки, когда у тебя большинство программеров выпуска 20** года - бред сивой кобылы, извините. Косвяночка смотрится той самой каплей "шанеля" в щщах ;)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36882988
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovКосвяночка смотрится той самой каплей "шанеля" в щщах ;)
Ну что ты прям так сразу...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36883015
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_star,
во-первых, почему вы используете такой странный способ цитирования? Мне он кажется гораздо менее удобным, чем принятый здесь.

Во-вторых, ответ Ed Demoel хоть и слегка циничный "комитет не собирался 12 лет и в будущем собраний не ожидается", но по сути очень правильный. Чем он вас не устраивает?

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

Вы говорите, "описания вообще не нужно достаточно блока реализации".
Вы работали в команде? Сколько человек работало с вами? Какого объема проекты были реализованы?

Что вообще значит "Структура данных была потеряна, после того, как была зафиксирована"?!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36883044
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov,
косвяночку по-первой лучше подавать полностью, обильно приправленной комментариями, благо в Студии есть hotkey Ctrl+E и подсветка ;)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	set L=$QLength(ref) set:L> 0  ref=$Name(@ref,L- 1 )
	set type=^type(ref)
	ZTRAP:type=""||(type'?1A.AN) "noObj"
	set A=$$FindExt(type)
	Quit type

FindProp(ref,pr) NEW (ref,pr)
	set type=$$FindType(ref),A=pr_"^"_type
	Quit:$Text(@A)'="" A
	set EXT=$$FindExt(type)
	ZTRAP:EXT="" "noObjProp"
	set F= 1 
	for J= 1 : 1 :$Length(EXT,",") set A=pr_"^"_$Piece(EXT,",",J) if $Text(@A)'="" set F= 0  Quit
	ZTRAP:F "noObjProp"
Для особо нежных желудком после 20** года, можно переварить и на Basic
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36883874
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
{
во-первых, почему вы используете такой странный способ цитирования? Мне он кажется гораздо менее удобным, чем принятый здесь.
}
Не знаю как вставить цитату. Текст готовлю отдельно в блокноте а потом перенашу через буфер обмена.
Чтобы сохранить переписку для себя.
{
Во-вторых, ответ Ed Demoel хоть и слегка циничный "комитет не собирался 12 лет и в будущем собраний не ожидается",
но по сути очень правильный. Чем он вас не устраивает?
}
Меня все ответы устроили. Меня не устроили без ответа. Это демонстрирует положение с развитием языка М.
Значит спасение утопающих дело рук самих утопающих. В Англицком я не силен но он по моему написал
что мои предложения еще куда то в 2 адреса направил куда я не понял.
{
В-третьих, мы с вами находимся в разных вселенных, и никогда не сможем прийти к одному мнению,
если вы называете М простым и понятным языком и приводите те образцы кода, которые приводите,
}
Насчет вселенных вы может быть и правы. У меня такое впечатление что я нахожусь
в другой вселенной чем остальные.
Образец кода я привел для не демонстации образца программирования а совсем по другому поводу.
Эти программы должны были продемонстрировать как можно работать с объектами на М.
Косвенность и команда Х создают проблему понимания особенно если не понятно что
программа делает. Но это очень мощный механизм и без него язык много потеряет. Надо
придумать языковые конструкции которые позволят избавится от косвенности. Я думал над
этой проблеммой.
Если изменить синтаксис языка в части имен переменных то можно обойтись без косвенности.
Например:
имя VAL[1,2,3,"ac"] заменить на [VAL,1,2,ac] то это позволит в большинстве случаев отказаться
от коссвенности.
Это предложение я не включил в свои Предложения из за опасения что меня сочтут совсем
графоманом.
Если интересно то я могу подробно прокоментировать программы.
{
Вы говорите, "описания вообще не нужно достаточно блока реализации".
}
Да я это говорю и привел в доказательство этого программы. Это утверждение
реализовано.
{
Вы работали в команде? Сколько человек работало с вами? Какого объема проекты были реализованы?
}
Как я понял сомневаетесь в моей квалификации.
Я с 85года работаю либо сам либо еще содним человеком который помогает мне продумывать
модель приложения. А прграммирую толькоя сам.
Проектов несколько но основной это бух.учет. В 80годах я на ДИАМСЕ написал зарплату
которую ставили в Москве, Ухте , Донецке и Свердловске. Сейчас мы работаем
в основном в Казахстане.
Как вы хотите что бы я оценил объем?
{
Что вообще значит "Структура данных была потеряна, после того, как была зафиксирована"?!
}
Объект с КАШЕ я не могу привязать к любой вершине и теряю в результате индекс переменной.
КАШЕ сам строит структуру хранения объекта.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36883910
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Не знаю как вставить цитату. Текст готовлю отдельно в блокноте а потом перенашу через буфер обмена.
А ты:
- нажми на ссылку "Цитировать" под нужным сообщением
- скопипасть себе текст целиком
- потом разбей на куски, что собираешся цитировать
- напиши свои коментанрии под цитатами
- это все выкладывай тут

Примеры текста с цитированием можно посмотреть у любого сообщения с цитированием если нажать описаную выше ссылку...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36883941
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_star

Для тестирования возможностей форума даже есть отдельный подфорум .
Как мне оформить свое сообщение?

PS: на чём пишете клиент (Pascal,C,Java,.NET,Web,etc.)?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36883966
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit Misha_star

PS: на чём пишете клиент (Pascal,C,Java,.NET,Web,etc.)?
То приложение которое сейчас в эксплуатации клиент написан на Delphi
Новую версию пишу на Java.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884042
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar

А какие технологии доступа используете для Java (Java Binding, JDBC, Hibernate, другое)?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884128
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit misha_shar

А какие технологии доступа используете для Java (Java Binding, JDBC, Hibernate, другое)?
TCP/IP канал. Асинхронный и синхронный способ обмена.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884147
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Misha_star,
В-третьих, мы с вами находимся в разных вселенных, и никогда не сможем прийти к одному мнению, если вы называете М простым и понятным языком и приводите те образцы кода, которые приводите,

Часть предложени как раз направлена на улучшение читабельности языка.
Это предложение по вводу команд конца блоа END и отказаться от использования
пробела в качестве разделителя команд. А ввести другой символ конца команды
например точку с запятой.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884167
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar

Спасибо за ответ.
Как я понимаю, Вы не используете стандартную объектную модель в Caché и SQL, наверное, тоже.

Каким образом разработчики клиентских приложений у Вас получают описание интерфейсов методов/программ, структур данных, примеры использования на своём языке/технологии (особенно, если не знают Caché)? Ведь использование Caché Documatic в данном случае неприемлемо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884257
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit misha_shar

Спасибо за ответ.
Как я понимаю, Вы не используете стандартную объектную модель в Caché и SQL, наверное, тоже.

Каким образом разработчики клиентских приложений у Вас получают описание интерфейсов методов/программ, структур данных, примеры использования на своём языке/технологии (особенно, если не знают Caché)? Ведь использование Caché Documatic в данном случае неприемлемо.
Разработчиком клиетского приложения являюсь я сам.
Сначала разрабатываю протокол обмена. Какие запросы посылает клиент серверу. И какие команды
отправляет сервер клиенту. Это обыкновенные текстовые сообщения.
Например:
Заходит новый клиент он посылает запрос серверу в котором его идентификация.
Далее запрашивает меню для своего клиента.
Сервер находит этого клиента и отправляет ему содержание этого меню.
Все компоненты приложения уникальным образом идентифицированы.
Когда клиент запрашивает он сообщает какой компонент делает запрос.
Сервер в ответе указывает компонент и что с ним надо делать.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884275
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit misha_shar

Спасибо за ответ.
Как я понимаю, Вы не используете стандартную объектную модель в Caché и SQL, наверное, тоже.

Объектную модель и SQL я не использую пишу только на МИМПСЕ. Я не понимаю как через
SQL наладить Асинхронный обмен.
Отчет может формироваться до нескольких минут и висеть клиенту на запросе не корректно.
У меня клиент посылает запрос на формирование отчета и не ждет ответа. Сервер готовит
отчет и посылает его клиенту в его ответе указывается какие компоненты чем должны быть
заполнены.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884312
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar TCP/IP канал. Асинхронный и синхронный способ обмена.

Какой API сервер используется на стороне MUMPS ?
Ваша разработка или что-то стандартно ?


Спасибо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884450
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar

Ещё раз спасибо за Ваши ответы.

Если Вам интересны другие способы работы с Caché из Delphi (в том числе и асинхронный обмен), есть соответствующая статья . Для комфортного чтения советую её интегрировать в стандартную документацию Caché (инструкции в конце статьи).
При работе с Java Binding в генерируемые СУБД Caché java-файлы попадают, наряду с прототипами классов, запросов и методов, также и комментарии к ним, что существенно облегчает процесс разработки. Вышеперечисленное относится и к .NET Binding .

PS: обмен информацией у Вас между клиентским приложением и Caché поддерживает шифрацию и/или целостность передаваемых данных по Kerberos, SSL или что-то другое используете?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36884889
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_star,
я сомневаюсь не в вашей квалификации, а в том, что ваш подход переносим на реальность других программистов. Мне показалось, что ваши условия несколько специфичны и, в общем, я угадал.

По вопросам документации, могу утверждать, что вы в корне не правы.
Ситуация, когда разработкой занимается один человек - не является типичной. Иногда одним проектом занимаются разные команды (полностью сменяющие друг друга) или над системой одновременно работают несколько человек, некоторые из них новички.
В этом случае очень плохо не иметь зафиксированной документации. И система документирования классов каше очень хорошо позволяет преодолевать проблему, ненавязчиво побуждая в ходе разработки программисту документировать свой проект.

По поводу косвенности, это мощный инструмент, позволяющий сделать вещи, которые другим способом сделать нельзя, но не хотел попасться врачу, которые все мои болезни будет решать несомненно мощным инструментом - скальпелем
Так получилось, что соседствовало с тезисом о простоте и понятности языка М.

По поводу классов Каше - вы поверхностно к ним подходите.
Во-первых, вы можете вообще не делать хранимые классы, а просто-классы - оболочки для своих структур данных со своим интерфейсом. Правда sql и объекты работать не будут.
Во-вторых, вы можете не использовать стандартную схему хранения. В принципе я "натягивал" класс на уже существующие глобалы. Слишком сложный глобал можно покрыть системой классов.
В-третьих, вы можете использовать стандартную схему хранения, но использовать индексы. При некотором навыке бегать по индексам вполне удобно (в тех случаях, когда использование объектов или sql не оправданно)
Преимущество классов каше в том, что вы можете избавиться от большого количестве рутинной работы, и там где нужно - использовать все тот же М.

По поводу синтаксиса - это все-таки во многом дело вкуса и привычки. Я соглашусь на изменение синтаксиса, если это мне даст какие-то преимущества. Но пока я не вижу значительных преимуществ от ваших предложений по синтаксису.
Помогли бы примеры задач, где вы приводите постановку, и решение в старом и новом синтаксисе.
Если в новом синтаксисе оно будет короче, читабельней, или давать новые возможности - да, это будет интересно. Но пока не очевидно.

По поводу асинхронности и SQL - как связано холодное с кислым?
С помощью SQL вы решаете те же задачи, что с помощью обхода глобалов, разница в том, что собираемые данные, условия выборок, агрегирование вы декларируете в SQL-запросе, а большую часть рутинной работы делает за вас каше.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36885440
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriumisha_shar TCP/IP канал. Асинхронный и синхронный способ обмена.

Какой API сервер используется на стороне MUMPS ?
Ваша разработка или что-то стандартно ?


Спасибо.
Используется обыкновенная М программа. В документации по КАШЕ описан сервер который каждого клиента обрабатывает в отдельном потоке.Его и использую. Заходишь в документацию и ищешь TCP IP и попадаешь на описание TCP IP сервера.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36885485
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit misha_shar

Ещё раз спасибо за Ваши ответы.

Если Вам интересны другие способы работы с Caché из Delphi (в том числе и асинхронный обмен), есть соответствующая статья . Для комфортного чтения советую её интегрировать в стандартную документацию Caché (инструкции в конце статьи).
При работе с Java Binding в генерируемые СУБД Caché java-файлы попадают, наряду с прототипами классов, запросов и методов, также и комментарии к ним, что существенно облегчает процесс разработки. Вышеперечисленное относится и к .NET Binding .

PS: обмен информацией у Вас между клиентским приложением и Caché поддерживает шифрацию и/или целостность передаваемых данных по Kerberos, SSL или что-то другое используете?
Статью посмотрел. Но надо разбираться более внимательно. Обмен у меня не поддерживает ни шифрацию ни целостность. Так как обмен не стандартный что то разобрать в нем проблематично. То идет служебная информация(команды) то отрывочные данные. Обмен используется пока только в локальной сети и потерь данных не было. Протокол TCP сам по себе поддерживает целостнось данных и я посчитал что этого достаточно в моем случае. Я всегда нахожусь в жестком цейкноте и познакомиться с альтернативными технологиями у меня не хватает времени. Потом я не всегда осознаю что мне могут дать новые технологии а разобраться опять же нехватает времени. Хотя у меня возникает легкое подозрение что я не всегда прав.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36885540
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Misha_star,
я сомневаюсь не в вашей квалификации, а в том, что ваш подход переносим на реальность других программистов. Мне показалось, что ваши условия несколько специфичны и, в общем, я угадал.

Ну что же делать жить то как то же надо. Я нашел для себя такую нишу и живу в ней. Насколько это типично я не берусь судить но как я понял это не вашь случай.
Блок А.Н.
По вопросам документации, могу утверждать, что вы в корне не правы.
Ситуация, когда разработкой занимается один человек - не является типичной. Иногда одним проектом занимаются разные команды (полностью сменяющие друг друга) или над системой одновременно работают несколько человек, некоторые из них новички.
В этом случае очень плохо не иметь зафиксированной документации. И система документирования классов каше очень хорошо позволяет преодолевать проблему, ненавязчиво побуждая в ходе разработки программисту документировать свой проект.

Кто вам запрещает в модуле реализации класса потребовать делать подробное документирование в комментариях. Это скорее вопрос Административного управления а не программирования.
Но я не применяю классы Каше даже не поэтому. У меня объекты зафиксированы классификатором.
Каждый раздел классификатора имеет свой набор атрибутов и они еще динамически изменяются клиентом и я заранее не знаю этот перечень атрибутов. Это не позволяет мне зафиксировать
описание класса. Получается что на обыкновенной глобали без классов мне работать удобней. Может это и специфика приложения но в данном случае классы мне не понадобились. А создавать классы ради классов мне зачем. При программировании клиента на Java я работаю только с классами там в этом есть необходимость.

Блок А.Н.
По поводу косвенности, это мощный инструмент, позволяющий сделать вещи, которые другим способом сделать нельзя, но не хотел попасться врачу, которые все мои болезни будет решать несомненно мощным инструментом - скальпелем

Тезис не понял. Если есть возможность писать без косвенности то я так всегда и поступаю. Но к моему большому сожалению у меня не всегда есть такая возможность.

Блок А.Н.
Так получилось, что соседствовало с тезисом о простоте и понятности языка М.
По поводу классов Каше - вы поверхностно к ним подходите.
Во-первых, вы можете вообще не делать хранимые классы, а просто-классы - оболочки для своих структур данных со своим интерфейсом. Правда sql и объекты работать не будут.

Да я знаю в Delpi есть такое понятие сериализация класса. Опять же у меня все упирается в осознание необходимости использования классов.
Блок А.Н.
Во-вторых, вы можете не использовать стандартную схему хранения. В принципе я "натягивал" класс на уже существующие глобалы. Слишком сложный глобал можно покрыть системой классов.
В-третьих, вы можете использовать стандартную схему хранения, но использовать индексы. При некотором навыке бегать по индексам вполне удобно (в тех случаях, когда использование объектов или sql не оправданно)

Да я согласен.
Блок А.Н.
Преимущество классов каше в том, что вы можете избавиться от большого количестве рутинной работы, и там где нужно - использовать все тот же М.

Я не совсем понимаю какую рутинную работу за меня выполняют классы.
Блок А.Н.
По поводу синтаксиса - это все-таки во многом дело вкуса и привычки. Я соглашусь на изменение синтаксиса, если это мне даст какие-то преимущества. Но пока я не вижу значительных преимуществ от ваших предложений по синтаксису.
Помогли бы примеры задач, где вы приводите постановку, и решение в старом и новом синтаксисе.
Если в новом синтаксисе оно будет короче, читабельней, или давать новые возможности - да, это будет интересно. Но пока не очевидно.

Замечание по существу верное. Надо попробовать. Но с моей точки зрения должна улучшиться читабельность.
Блок А.Н.
По поводу асинхронности и SQL - как связано холодное с кислым?
С помощью SQL вы решаете те же задачи, что с помощью обхода глобалов, разница в том, что собираемые данные, условия выборок, агрегирование вы декларируете в SQL-запросе, а большую часть рутинной работы делает за вас каше.
Так он делает не то что мне надо. Вся проблемма в том что свою выборку я не могу выразить с помощью SQL запроса. Поэтому то что мне надо я оформляю в виде программы и вместо формирования SQL запроса обращаюсь к этой программе.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36886117
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar

В данном случае под целостностью данных подразумевалась проверка того, что кто-либо не перехватил и не подменил или испортил данные, которыми обмениваются клиент и сервер.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36886241
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit misha_shar

В данном случае под целостностью данных подразумевалась проверка того, что кто-либо не перехватил и не подменил или испортил данные, которыми обмениваются клиент и сервер.
Ну это маловероятно в локальной сети. Потом среди моих команд серверу нет команд
создать целый документ. Документы создаются разобщенными и перемешанными с другими
не относящимися к документу командами. Разобраться как Клиент создает документ только по протоколу очень тягостно. Надо иметь клиента.
Но если бы у меня стояла такая проблемма.
То я скорее всего воспользовался ZIP или каким то другим мало известным архиватором возможно с паролем. На Delphi я встречал подобные компоненты.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36888264
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Блок А.Н.
Преимущество классов каше в том, что вы можете избавиться от большого количестве рутинной работы, и там где нужно - использовать все тот же М.

Я не совсем понимаю какую рутинную работу за меня выполняют классы.
Блок А.Н.
С помощью SQL вы решаете те же задачи, что с помощью обхода глобалов, разница в том, что собираемые данные, условия выборок, агрегирование вы декларируете в SQL-запросе, а большую часть рутинной работы делает за вас каше.
Так он делает не то что мне надо. Вся проблемма в том что свою выборку я не могу выразить с помощью SQL запроса. Поэтому то что мне надо я оформляю в виде программы и вместо формирования SQL запроса обращаюсь к этой программе.
Понимание преимущества классов несколько затруднено из-за смешения понятий ООП (не имеющего никакого отношения к базам данных) и моделей данных. К тому же в Cache несколько моделей данных, что еще больше запутывает:).
Вам лучше использовать понятия классической объектной модели данных: объект (вместо класс) и экземпляр (вместо объект) [такие понятия используются, в частности, в X.Magic].
Объекты (как и, теоретически, "классы") используются для моделирования (в стиле, похожем на ER-модель) и управления данными. То есть, программист (как и в случае SQL) не обращается к глобалам, а получает/добавляет/обновляет/удаляет экземпляры объектов и экземпляры связей. Это "похоже" на чистый mumps, то есть, никаких проблем ("так он делает не то что мне надо") у Вас не будет.
Польза SQL, действительно, не очевидна. Я уже говорил о том, что в сложной OLTP системе БОЛЬШИНСТВО запросов сводится к чтению/обновлению характеристик экземпляра, получению эземпляров объекта B, связанных с конкретным экземпляром объекта A, обновлению их характеристик. Очевидно, что никакой пользы от SQL здесь нет (а вред есть:)).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36889838
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
Понимание преимущества классов несколько затруднено из-за смешения понятий ООП (не имеющего никакого отношения к базам данных) и моделей данных. К тому же в Cache несколько моделей данных, что еще больше запутывает:).
Вам лучше использовать понятия классической объектной модели данных: объект (вместо класс) и экземпляр (вместо объект) [такие понятия используются, в частности, в X.Magic].

Мне кажется что проблеммы не понимания существа классов возникает из за терминологии
Классы , Объекты Экземпляры. Я считаю что то что называют экземпляром или объектом является
переменной созданной пользователем, а класс это тип этой переменной.
ИС скрестили класс с глобалью и получили ублюдка которого ни в одном другом языке не существует и назвали его хранимым классом. Он вроде бы класс и вроде бы какое то множество с непонятными свойствати но это не переменная.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36889959
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
misha_shar,

Лучше, по моему, класс - это множество, с описанием свойств и методов для всего множества и для его экземпляров (если есть).
А объект - экземпляр этого множества.
Все равно для проектирования прикладных систем это низкий уровень (как и глобал и таблица).
Нужно хотя бы ченовскую модель сущности - связи реализовать с поддержкой целостности данных, а так опять все ручками и намеками в комментариях.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36889975
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИС не скрестили класс с глобалью, а создали еще один уровень представления.
В Каше абсолютно нормальные классы, с абсолютно нормальным поведением.
Ублюдочность, как вы выразились, будет проявляться, если их искусственно в рамках одного процесса объекты "скрещивать" с глобалами и SQL, и еще желательно работать для полного эффекта через разные слои представления с одними и теми же данными. Здесь уж нужно выбирать.
Точно такая же ублюдочность возникнет, если в С++ работать напрямую с регистрами - смешение уровней доступа чревато перекосом логики приложения.
анекдотДоктор, мне больно, когда я так делаю. - А вы так не делайте!

misha_starи получили ублюдка которого ни в одном другом языке не существует и назвали его хранимым классом. Он вроде бы класс и вроде бы какое то множество с непонятными свойствати но это не переменная.
Вам совершенно напрасно кажется, что вы говорите очевидные вещи.
Вы говорите не только не очевидные вещи, и не только вещи, с которыми можно спорить, но даже и такое, что непонятно, о каких вещах вы говорите.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890463
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Мне кажется что проблеммы не понимания существа классов возникает из за терминологии
Классы , Объекты Экземпляры.

Терминология имеет первостепенное значение, когда есть непонимание. А оно явно есть:)
misha_shar
Я считаю что то что называют экземпляром или объектом является
переменной созданной пользователем, а класс это тип этой переменной.

Не правильно считаете. Потому что, когда используется пара терминов класс/объект, экземпляр тоже есть, и это вовсе не объект:) Видите как важна терминология:)
Но в целом, относительно понятия "переменная", Вы, конечно, правы. Но в этом нет ничего необычного. См. понятие "переменная отношения" в РМД.
misha_shar
ИС скрестили класс с глобалью и получили ублюдка которого ни в одном другом языке не существует и назвали его хранимым классом. Он вроде бы класс и вроде бы какое то множество с непонятными свойствати но это не переменная.

Конечно, как Вы сами же сказали - это "тип переменной":)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890631
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати да, если уже придираться к терминам, то в С++ возможна такая команда:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class A1
{ int x;
};
class A2:public A1
{
};
...
 class A1 *a1=new A2;
...
При этом a1 является указателем класса A1, но содержит указатель на объект класса A2.
То есть ее тип переменной и то что она содержит отличаются.

Если с таким подходом посмотреть на каше, то тут переменные неопределенного типа содержат oref объекта. Сами объекты существуют где-то в недоступном месте. Кстати, на один объект могут указывать несколько переменных.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890633
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Вам совершенно напрасно кажется, что вы говорите очевидные вещи.
Вы говорите не только не очевидные вещи, и не только вещи, с которыми можно спорить, но даже и такое, что непонятно, о каких вещах вы говорите.

Да критику объектов мне надо прекращать, а то недалеко и до перехода на личности
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890636
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Кстати да, если уже придираться к терминам, то в С++ возможна такая команда:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class A1
{ int x;
};
class A2:public A1
{
};
...
 class A1 *a1=new A2;
...
При этом a1 является указателем класса A1, но содержит указатель на объект класса A2.
То есть ее тип переменной и то что она содержит отличаются.

Если с таким подходом посмотреть на каше, то тут переменные неопределенного типа содержат oref объекта. Сами объекты существуют где-то в недоступном месте. Кстати, на один объект могут указывать несколько переменных.
Указатель на другую переменную такая же переменная, а то что она является указателем не имеет значения до момента ее использования. И содержит она ссылку а не объект. На МИМПСЕ это видно
более очевидно.

Set A=1,b="A",c="A"
W @b,!,@c,!
А из вашего утверждения вытекает что b и c это А. А это просто указатели на А.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890638
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему же, можно критику объектов и продолжить.
Просто у вас цепочка "какие-то известные факты"->("рассуждения, личный опыт")->"выводы".
И вот второе звено вы часто пропускаете или неприлично сокращаете, приходится за вас думать, как вы пришли к такому решению. И как раз попытка воссоздать чужую логику логику, и мало того - угадать, на основании какого опыта собеседник пришел к такому выводу, - это и вызывает у меня раздражение. А вовсе не критика объектов или других концепций каше.

В вашем примере b и с b переменные и ни разу не указатели. Они содержат имя переменной, а не ссылку. Это другое.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890639
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
s x= 100 ,c="w ",v="x" x c_v
 100 

По вашей логике v - это указатель на переменную x ?
Что же тогда с ? Указатель на команду? Ну бред же! Указатели это указатели, а косвенность это косвенность.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890642
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shumisha_shar,
Все равно для проектирования прикладных систем это низкий уровень (как и глобал и таблица).
Нужно хотя бы ченовскую модель сущности - связи реализовать с поддержкой целостности данных, а так опять все ручками и намеками в комментариях.

Целостность данных это отдельная песня и она связана не с моделью объектов. А с моделью баз данных хотя в КАШЕ все это свалено в кучу. Как реализуется целостность в КАШЕ я не знаю, но подозреваю что ведутся прямые и обратные ссылки. Я пытался использовать стандартные механизмы высокого уровня но ни разу это мне не удалось в основном по соображениям эффективности. Если используешь такие механизмы то теряешь ими управление за тебя все делает КАШЕ. Но природа и организация конкретных данных всегда имеет свои особенности которые можно использовать для оптимизации приложения, а используя стандартые механизмы заложенные в хранимых классах КАШЕ такой оптимизации добиться нельзя. При проектировании приложения я всегда начинаю с проектирования основных данных и уделяю этому основное внимание. Все эксплуатационные характеристики приложения зависят от основных структур данных. Когда у меня уже есть структуры данных я начинаю проектировать их связи и обеспечение целостности и этому уделяю очень много внимания.
Как это делается в конкретном случае я поясню на примере.
Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки.
Ссылки на коды в классификаторе есть и в документах и в проводках. Документы и Проводки также завязаны между собой на уровне ссылок. В проводках есть ссылки на номера документов которые их породили.
Целостность между Документами и Проводками я обеспечиваю следующим образом.
Корректировка Проводок пользователем закрыта к ним по записи прямого доступа он не имеет. И проблемы целостности для этой структуры нет.
С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов.
С классификаторами дело обстоит еще сложнее их коды присутствуют и в документах и проводках. От обратных ссылок я отказался. Проверять всю входимость в Документах и Проводках
тоже очень накладно. Я проверяю программно входимость кодов в Проводки оставляя не проведенные документы без проверки.
Я считаю что для данного случая это обеспечение целостности оптимально.
Я вообще стараюсь избегать построения обратных ссылок. У меня был печальный опыт построения завязанных таким образом баз. Как бы я не старался нарушение целостности происходило и мне приходилось переодически проверять целостность и в случае необходимости ее восстанавливать. А это связано еще и с ведением архивов удалений.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890646
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Код: plaintext
1.
s x= 100 ,c="w ",v="x" x c_v
 100 

По вашей логике v - это указатель на переменную x ?
Что же тогда с ? Указатель на команду? Ну бред же! Указатели это указатели, а косвенность это косвенность.
По моей логике указатель это переменная, а ее особенность возникает только в момент ее использования в качестве указателя.
В приведенном вами примере v строковая переменная, как и с. В данном случае v не используется в качестве указателя , а вот в выражении Set @v="x", она используется именно как ссылка на переменную. Команда Х в качестве аргумента предполагает строку и в вашем случае ей и подается строка c_v.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890656
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_star, вы самоучка?
Ваша задача элементарно решается в терминах sql на уровне определений (без кодирования)

Попробуйте нарушить целостность данный через объекты или sql?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Class Test.C1 Extends %Persistent
{

Relationship C2 As Test.C2 [ Cardinality = one, Inverse = C1,Required ];

Property Caption as %String;

Index C2Index On C2;

}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Class Test.C2 Extends %Persistent
{

Relationship C1 As Test.C1 [ Cardinality = many, Inverse = C2 ];

Property Caption As %String;

}



авторЯ вообще стараюсь избегать построения обратных ссылок. Мы ведь говорим о Каше? Используйте индексы

авторА это связано еще и с ведением архивов удалений.Мы отказались от удалений. Однажды созданный объект должен жить вечно.
На уровне пользователя "удаление" может быть, на уровне бд - нет.
Впрочем, для решения специфических задач, удаление, конечно, можно использовать.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36890664
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.misha_star, вы самоучка?
Ваша задача элементарно решается в терминах sql на уровне определений (без кодирования)
Попробуйте нарушить целостность данный через объекты или sql?

Я самоучка.
От того что вы описываете а не кодируете никаких чудес не происходит. Обратные ссылки всеравно строятся но только самой системой. А я хотел вообще избежать построения обратных ссылок как таковых потому что из 3-х случаев в одном целостность вообще не нужна, а во втором она вынесена с уровня кодов на уровень их агрегатов.
Нарушение целостности обнаружить и у меня вы бы не смогли оно могло проявиться раз в год, а могло и раз в несколько лет.

Блок А.Н
Мы ведь говорим о Каше? Используйте индексы

Я их и использую. Связи строю на основе ассоциации индексов.
Блок А.Н.
Мы отказались от удалений. Однажды созданный объект должен жить вечно.
На уровне пользователя "удаление" может быть, на уровне бд - нет.

Прекрасное решение. Я им обязательно воспользуюсь.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891186
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shu
Лучше, по моему, класс - это множество, с описанием свойств и методов для всего множества и для его экземпляров (если есть).
А объект - экземпляр этого множества.
Все равно для проектирования прикладных систем это низкий уровень (как и глобал и таблица).

Точнее, это не имеет отношения к проектированию:) А имеет отношение к программированию.
ser_shu
Нужно хотя бы ченовскую модель сущности - связи реализовать с поддержкой целостности данных, а так опять все ручками и намеками в комментариях.
Об этом и речь. Только модель Чена была изначально ориентирована на создение (в конечном счете) РБД. К сожалению. Так что реализация связей может быть основана только на ясном понимании связи. Здесь не годятся "ссылки", не "внешние ключи" и т.п. Если уж идентификатор экземпляра объекта (по Чену - сущности) не является просто одной из характеристик объекта, то идентификаторы экземпляров других объектов и подавно не могут быть характеристиками объекта:)
Впрочем, все уже давно реализовано..
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891196
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Целостность данных это отдельная песня и она связана не с моделью объектов. А с моделью баз данных хотя в КАШЕ все это свалено в кучу.

Целостность - один из трех важных аспектов модели данных (наряду со структурой и манипулированием). Поскольку модель данных Саche точно не известна, определенная путаница, конечно, есть:)
misha_shar
При проектировании приложения я всегда начинаю с проектирования основных данных и уделяю этому основное внимание. Все эксплуатационные характеристики приложения зависят от основных структур данных. Когда у меня уже есть структуры данных я начинаю проектировать их связи и обеспечение целостности и этому уделяю очень много внимания.

Вы просто вынуждены уделять этому очень много внимания:) Так как поддерживаете целостность данных на уровне приложения (впрочем, структуру тоже). Это весьма трудоемкий путь..
misha_shar
Как это делается в конкретном случае я поясню на примере.
Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки.
Ссылки на коды в классификаторе есть и в документах и в проводках. Документы и Проводки также завязаны между собой на уровне ссылок. В проводках есть ссылки на номера документов которые их породили.
Целостность между Документами и Проводками я обеспечиваю следующим образом.
Корректировка Проводок пользователем закрыта к ним по записи прямого доступа он не имеет. И проблемы целостности для этой структуры нет.
С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов.
С классификаторами дело обстоит еще сложнее их коды присутствуют и в документах и проводках. От обратных ссылок я отказался. Проверять всю входимость в Документах и Проводках
тоже очень накладно. Я проверяю программно входимость кодов в Проводки оставляя не проведенные документы без проверки.
Я считаю что для данного случая это обеспечение целостности оптимально.

Очень не оптимально. И структура (этот подход и в 1с), и специфическая поддержка целостности.
Очевидно, что намного удобнее иметь возможность корректировать "документы" (то есть, исправлять ошибки в совершенных операциях).
misha_shar
Я вообще стараюсь избегать построения обратных ссылок. У меня был печальный опыт построения завязанных таким образом баз. Как бы я не старался нарушение целостности происходило и мне приходилось переодически проверять целостность и в случае необходимости ее восстанавливать. А это связано еще и с ведением архивов удалений.
Нужно поддерживать настоящие связи а не "обратные ссылки". То есть, нужно сначала написать нормальную СУБД (для чего и предназначен mumps), а уж потом разрабатывать приложения:)
А Вы работаете как 40 лет назад работали. Впрочем и тогда люди создавали Fileman и другие СУБД.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891198
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
авторЯ вообще стараюсь избегать построения обратных ссылок.

Мы ведь говорим о Каше? Используйте индексы

Не лучшая, мягко говоря, идея - использовать индексы (?) для организации связей.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891249
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, я неправильно понял задачу misha_star?
В классе А есть ссылка на класс В, это поле индексируется.
По сути индекс будет "обратной связью" из класса В в класс А.
Так вроде реализуется связь "один ко многим". Или речь о чем-то другом?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891396
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Мы отказались от удалений. Однажды созданный объект должен жить вечно.
На уровне пользователя "удаление" может быть, на уровне бд - нет.
Впрочем, для решения специфических задач, удаление, конечно, можно использовать.
Это работает для фактографических ИС, где 99% данных заносятся в БД и даже не корректируются.

В задачах планирования, диспетчеризации обратная ситуация - большая часть данных уже никому не нужна и нет смысла все это хранить в БД.
Например, бюджет на следующий год, новое штатное расписание, план работ на следующие сутки...
Хранятся только несколько вариантов (чаще один), сотни промежуточных предложений и расчетов не имеют смысла.

Обеспечение целостности данных в ИС для псевдоудаленных данных (помеченных как удаленные) тоже отдельная песня - не работают стандартные уникальные индексы, все запросы (и из внешних систем) должны знать о наличии псевдоудаленных данных. Это замечание Мише - есть большие подводные камни.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891493
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но хотя бы такие объекты документы или пользователей бесследно удалять нельзя, иначе систему перекосит.
Требование уникальности полей мы ставим с осторожностью. Если объект критичный, то все равно верификацию его делает отдельная программа при записи.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891595
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Но хотя бы такие объекты документы или пользователей бесследно удалять нельзя, иначе систему перекосит.

Если у пользователя нет ни одной связи, его можно удалить, систему не перекосит :)
Вопрос в описании структурных и смысловых связей в системе.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891651
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Возможно, я неправильно понял задачу misha_star?
В классе А есть ссылка на класс В, это поле индексируется.
По сути индекс будет "обратной связью" из класса В в класс А.
Так вроде реализуется связь "один ко многим". Или речь о чем-то другом?
Дело не в задаче misha_star. А в понимании что такое связь. И в ее реализации, основанной на таком понимании.
1) Связь не может быть свойством объекта (по Вашему класса). Дом, в котором я живу, не является моим свойством:) Таким образом, ни "ссылки", ни "обратные ссылки", ни "индексы", ни "внешние ключи" не являются правильным способом реализации связей. В частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи".
2) Связь - это принципиально не объект (не класс в Вашем понимании). То есть, связь многие-ко многим НЕЛЬЗЯ ПРЕДСТАВИТЬ С ПОМОЩЬЮ КЛАССА.
3) У связи нет никаких характеристик (подобных характеристикам объекта). Это формально следует из 2).
4) Связь всегда бинарная и двусторонняя. Не бывает никаких триарных и т.п. связей. Обычно за n-арные связи выдают события. А событие, наряду с сущностью - это просто разновидность объекта (по Вашему - класса), но никак не связь.
5) Все связи, независимо от их мощности, следует реализовать одинаково. Кстати, Дейт рекомендует представлять все связи с помощью отдельных отношений ("и не только потому, что связь один-ко-многим может со временем преобразоваться в связь многие-ко-многим"), но, формально, это сделать просто невозможно в РМД.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891771
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина,

действительно с понятием связь что-то туго... Но другое слово на ум не приходит.
Да и модель сущности-связи Чена зацепил, так что слово не выбросишь.
Побродил по интернету, такое впечатление, что 25 лет назад обсуждение этой модели было совсем другое, сейчас действительно только реализация для РБД, прямоугольники, ромбики, вилки, лапы...
Но даже в тех статьях, которые нашел, связь - это не структурные ссылки.
- - - - -
Модель "сущность-связь" – шаг к единому представлению о данных
http://citforum.ru/database/classics/chen/
- каждый кортеж сущностей, [e1, e2,...,en], является связью (relationship).
- Заметим, что связи также имеют атрибуты.
- Рассмотрим множество связей PROJECT-WORKER (ИСПОЛНИТЕЛЬ-ПРОЕКТА) (рис. 3). Атрибут PERCENTAGE-OF-TIME (ПРОЦЕНТ-ВРЕМЕНИ), представляющий долю времени, выделенную конкретному служащему на конкретный проект,– это атрибут, определенный на множестве связей PROJECT-WORKER. Он не является ни атрибутом сущности EMPLOYEE, ни атрибутом сущности PROJECT, так как его смысл зависит и от служащего, и от проекта. Понятие атрибута связи важно для понимания семантики данных и определения функциональных зависимостей между данными.
- - - - -
То есть в примере misha_shar:
Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки.
Классификаторы - это сущности.
Документы и Проводки - это связи.
В документах и проводках есть ссылки на сущности (классификаторы) и на другие документы и проводки (связи) и имеются свои атрибуты.
Дальше мои термины, чтобы не путаться, (хотя опять слово связь...).
Для обеспечения целостности данных в ИС строятся и поддерживаются (на уровне описания\реализации модели, а не ручками и комментариями)
- структурные связи, это ссылки
- логические связи, это алгоритмы и правила
Тогда для поддержания целостности данных в ИС при записи\корректировке\удалении сущности или связи нужно проверить, чтобы не нарушались структурные связи и логические связи.
В примере с проводками:
- структурные связи - ссылки на документы
- логические связи - вычисляемые остатки на начало года, месяца (алгоритмы), обеспечение хронологической последовательности, запрет записи\удаления\корректировки ранее последней такой же по типу проводки (правила).
При таком подходе можно получить модель ИС, а не набор таблиц или классов.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891818
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shu,
Документы и проводки - это сущности. Но связь проводки с документом, ее породившим - это связь.

Бредятина,
Это все понятно, когда мы говорим об астрактной СУБД в вакууме.
Но что нам делать на земле? Реализовывать связь один ко многим через поле таблицы или класса?
Если говорить про абстрактную СУБД, то связь это вещь совершенно другая, чем сущность, и в тех же таблицах их хранить как-то неправильно?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891835
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.ser_shu,
Документы и проводки - это сущности. Но связь проводки с документом, ее породившим - это связь.

Я имел в виду модель сущности-связи в ченовском представлении.
Документы и проводки не являются независимыми сущностями (организация - сущность).
Бухгалтерские документы не существуют независимо.
Например, документ платежное поручение не существует само по себе, документ является связью для сущностей Плательщик (организация), Получатель (организация) и имеет атрибуты Дата, Номер, Сумма. Без сущностей этот документ в ИС не может быть помещен.
Платежное поручение (класс, таблица, кортеж, глобал...) это свяэь в модели сущности-связи Чена.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36891871
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar

Возможно, Вам будет интересно почитать книгу СУБД Caché 5: работа с объектами .
Автор: Труб И.И.
Оглавление к ней.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893103
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shu
действительно с понятием связь что-то туго... Но другое слово на ум не приходит.
Да и модель сущности-связи Чена зацепил, так что слово не выбросишь.

Это важное понятие, и его не нужно выбрасывать. А нужно только понять:)
ser_shu
Побродил по интернету, такое впечатление, что 25 лет назад обсуждение этой модели было совсем другое, сейчас действительно только реализация для РБД, прямоугольники, ромбики, вилки, лапы...
Но даже в тех статьях, которые нашел, связь - это не структурные ссылки.

Если почитаете статью Чена, то там вполне очевидна ориентация на РМД.
ser_shu
Рассмотрим множество связей PROJECT-WORKER (ИСПОЛНИТЕЛЬ-ПРОЕКТА) (рис. 3). Атрибут PERCENTAGE-OF-TIME (ПРОЦЕНТ-ВРЕМЕНИ), представляющий долю времени, выделенную конкретному служащему на конкретный проект,– это атрибут, определенный на множестве связей PROJECT-WORKER. Он не является ни атрибутом сущности EMPLOYEE, ни атрибутом сущности PROJECT, так как его смысл зависит и от служащего, и от проекта. Понятие атрибута связи важно для понимания семантики данных и определения функциональных зависимостей между данными.

Именно так это и было давно реализовано:) Например, в X-Magic.
Однако, это формально не точно.
Здесь налицо объект "Распределение объемов работ над проектами по исполнителям", а вовсе никакая не связь. То есть, в этом примере мы видим ТРИ объекта и ДВЕ связи.
ser_shu
То есть в примере misha_shar:
Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки.
Классификаторы - это сущности.
Документы и Проводки - это связи.

Нет:) См выше.
ser_shu
Дальше мои термины, чтобы не путаться, (хотя опять слово связь...).
Для обеспечения целостности данных в ИС строятся и поддерживаются (на уровне описания\реализации модели, а не ручками и комментариями)
- структурные связи, это ссылки
- логические связи, это алгоритмы и правила
Тогда для поддержания целостности данных в ИС при записи\корректировке\удалении сущности или связи нужно проверить, чтобы не нарушались структурные связи и логические связи.
В примере с проводками:
- структурные связи - ссылки на документы
- логические связи - вычисляемые остатки на начало года, месяца (алгоритмы), обеспечение хронологической последовательности, запрет записи\удаления\корректировки ранее последней такой же по типу проводки (правила).

Опять у Вас какие-то "ссылки". Вместо нормальных связей.
И потом, "остатки" могут быть и хранимыми, а не вычисляемыми, но ведь они не могут быть "структурными связями" (ссылками). Они будут объектами, а не связями... Мне кажется, напрасно Вы запутываете ситуацию со связями:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893115
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Это все понятно, когда мы говорим об астрактной СУБД в вакууме.
Но что нам делать на земле? Реализовывать связь один ко многим через поле таблицы или класса?
Если говорить про абстрактную СУБД, то связь это вещь совершенно другая, чем сущность, и в тех же таблицах их хранить как-то неправильно?

Да, связь не нужно хранить "в тех же таблицах". И все это давно реализовано. Конкретно, а не абстрактно. Но нужно двигаться дальше:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893117
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit misha_shar

Возможно, Вам будет интересно почитать книгу СУБД Caché 5: работа с объектами .
Автор: Труб И.И.
Оглавление к ней.
Да, чего там мелочиться со связями. Будем сразу "работать с метасвязями":)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893205
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаДа, связь не нужно хранить "в тех же таблицах". И все это давно реализовано. Конкретно, а не абстрактно. Но нужно двигаться дальше:)
Я прошу у вас конкретики: где реализовано, чтобы связь была не атрибутом таблицы/объекта и не была записью отдельной в таблице/объектом.

Ведь это разные вещи: либо связь существует в каком-то виде в среде работы системы, либо она существует только в нашем воображении.
Если связь 1-много реализована в виде атрибута, а связь много-много существует в виде отдельной таблицы, то с точки зрения системы нет никаких связей - есть сущности с атрибутами и есть отдельная сущность, с атрибутами в виде ссылок на другие сущности. И нет никаких связей - это все лукавство и наше воображение.

И куда нужно двигаться дальше? Меня эта загадочность как-то напрягает.
Либо вы говорите о конкретной СУБД, где все это реализовано, и мы будем разговаривать в терминах этих СУБД, и сравнивать эти СУБД, либо мы будем разговаривать в абстрактных понятиях, не касаясь реальных СУБД.
Просто пока наблюдается асимметричность - мы говорим о чем-то реальном, имеющем определенные ограничения и недостатки, а вы говорите о чем-то таком виртуальном, не имеющем недостатков. Все-таки виртуальность без недостатков соорудить несколько проще, чем реальность с недостатками!

Ни в коей мере не хотелось бы умалять важность теоретического подхода. Просто хотелось бы определенности - о чем мы сейчас говорим?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893228
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Я прошу у вас конкретики: где реализовано, чтобы связь была не атрибутом таблицы/объекта и не была записью отдельной в таблице/объектом.

Я уже несколько раз написал: например, в X-Magic:) Разве не так? Наверное, и в других СУБД, которых много было написано в среде mumps. Но другие я не упоминаю, так как не уверен как именно там реализованы связи.
Блок А.Н.
Если связь 1-много реализована в виде атрибута, а связь много-много существует в виде отдельной таблицы, то с точки зрения системы нет никаких связей - есть сущности с атрибутами и есть отдельная сущность, с атрибутами в виде ссылок на другие сущности. И нет никаких связей - это все лукавство и наше воображение.

Абсолютно точно.
Блок А.Н.
И куда нужно двигаться дальше? Меня эта загадочность как-то напрягает.
Либо вы говорите о конкретной СУБД, где все это реализовано, и мы будем разговаривать в терминах этих СУБД, и сравнивать эти СУБД, либо мы будем разговаривать в абстрактных понятиях, не касаясь реальных СУБД.
Просто пока наблюдается асимметричность - мы говорим о чем-то реальном, имеющем определенные ограничения и недостатки, а вы говорите о чем-то таком виртуальном, не имеющем недостатков.

Я говорю о вполне реальном, имеющем недостатки. Так как считаю, что у связи нет никаких характеристик (см. выше в предыдущих сообщениях). В X-Magic:
1) наряду с настоящими связями поддерживаются и ссылки (тип характеристики);
2) у связей есть характеристики.
Я считаю, что это не корректно. И предлагаю двигаться дальше. Мне кажется, все предельно конкретно:)
Блок А.Н.
Ни в коей мере не хотелось бы умалять важность теоретического подхода. Просто хотелось бы определенности - о чем мы сейчас говорим?

О моделях данных, я думаю. И их реализации.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893241
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточню: X.Magic.
Так была переименована СУБД Информ Икс, насколько я помню, по договоренности с IS, поскольку как же в СУБД Cache может быть еще какая-то СУБД:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893243
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, спасибо :-)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893249
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам впервые увидел "теоретическую статью":)
library.mephi.ru/data/scientific-sessions/2007/t2/1-1-5.doc
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893365
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
Очень не оптимально. И структура (этот подход и в 1с), и специфическая поддержка целостности.
Очевидно, что намного удобнее иметь возможность корректировать "документы" (то есть, исправлять ошибки в совершенных операциях).

Почему не оптимально? По какому критерию?
-по минимальному объему данных,
-по скорости выполнения,
-по объему программирования,
-по понятности кода?
Документы конечно же корректируются. Но предварительно удаляются проводки относящиеся к данному документу.
Бредятина
Нужно поддерживать настоящие связи а не "обратные ссылки". То есть, нужно сначала написать нормальную СУБД (для чего и предназначен mumps), а уж потом разрабатывать приложения:)
А Вы работаете как 40 лет назад работали. Впрочем и тогда люди создавали Fileman и другие СУБД.

Что за настоящие cвязи вы предлагаете поддерживать?
Какие СУБД нормальные:
-реляционные,
-иерархические,
-объектные.
Может какие то еще есть.
Почему МАМПС не является нормальной СУБД?
40 лет назад это 70г прошлого века. Я в это время еще не программировал и если речь об СССР
то никакого МАМПСА тогда и в помине не было. И работать так как работали тогда я наврядли смогу.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893376
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
Не лучшая, мягко говоря, идея - использовать индексы (?) для организации связей.

Очень сомнительное высказывание. Абсолютное большенство ссылок строится на основе индексов.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893430
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Возможно, я неправильно понял задачу misha_star?
В классе А есть ссылка на класс В, это поле индексируется.
По сути индекс будет "обратной связью" из класса В в класс А.
Так вроде реализуется связь "один ко многим". Или речь о чем-то другом?

В моем приложении обратных ссылок как раз нет.Нет и отношения один ко многим.
В классе А есть ссылка на класс В,а в классе В это поле индексируется.
Бредятина
Дело не в задаче misha_star. А в понимании что такое связь. И в ее реализации, основанной на таком понимании.
1) Связь не может быть свойством объекта (по Вашему класса). Дом, в котором я живу, не является моим свойством:) Таким образом, ни "ссылки", ни "обратные ссылки", ни "индексы", ни "внешние ключи" не являются правильным способом реализации связей. В частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи".
2) Связь - это принципиально не объект (не класс в Вашем понимании). То есть, связь многие-ко многим НЕЛЬЗЯ ПРЕДСТАВИТЬ С ПОМОЩЬЮ КЛАССА.
3) У связи нет никаких характеристик (подобных характеристикам объекта). Это формально следует из 2).
4) Связь всегда бинарная и двусторонняя. Не бывает никаких триарных и т.п. связей. Обычно за n-арные связи выдают события. А событие, наряду с сущностью - это просто разновидность объекта (по Вашему - класса), но никак не связь.
5) Все связи, независимо от их мощности, следует реализовать одинаково. Кстати, Дейт рекомендует представлять все связи с помощью отдельных отношений ("и не только потому, что связь один-ко-многим может со временем преобразоваться в связь многие-ко-многим"), но, формально, это сделать просто невозможно в РМД.

Все я потерял смысл высказывания.
Попробую объяснить как я все понимаю.

-Связь- взаимотношение объектов реального мира. Которое осознано программистом и заложено им либо в логику программ либо в структуры описаний которые потом превращаются опять же в логику программ только на уровне либо Базы данных либо языка программирования. Следовательно в любом случае это логика программы.
-Ссылка это данные которые помогают осуществлять связи. Ссылки могут быть самые различные. Для глобалов МИМПСА это либо поля данных, либо поля индексов.
Для объектов КАШЕ это это внутренние бинарные поля которые строятся КАШЕ по описанию объекта.
-Индексы, внешние ключи, поля таблиц Баз данных,внутренние бинарные поля все это реализация ссылок.
Ссылки это вспомогательный механизм для организации связей. Связь может быть осуществлена вообще без ссылок.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893438
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit misha_shar

Возможно, Вам будет интересно почитать книгу Труб И.И.

Эта книга у меня есть. Правда никак не могу дочитать ее до конца. В се нет времени.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893452
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shu
Это работает для фактографических ИС, где 99% данных заносятся в БД и даже не корректируются.

В задачах планирования, диспетчеризации обратная ситуация - большая часть данных уже никому не нужна и нет смысла все это хранить в БД.
Например, бюджет на следующий год, новое штатное расписание, план работ на следующие сутки...
Хранятся только несколько вариантов (чаще один), сотни промежуточных предложений и расчетов не имеют смысла.

Обеспечение целостности данных в ИС для псевдоудаленных данных (помеченных как удаленные) тоже отдельная песня - не работают стандартные уникальные индексы, все запросы (и из внешних систем) должны знать о наличии псевдоудаленных данных. Это замечание Мише - есть большие подводные камни.

Сережа я понял. Этот механизм я обдумывал. И возможно появится случай когда он будет Эффективно работать. Тут возможно частичное применение этого метода. Например не удалять коды из классификатора, а раз в год запускать утилиту обслуживания с очисткой неиспользуемых кодов. Но это существенно зависит от срока жизни кодов.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893588
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Почему не оптимально? По какому критерию?
-по минимальному объему данных,
-по скорости выполнения,
-по объему программирования,
-по понятности кода?
Документы конечно же корректируются. Но предварительно удаляются проводки относящиеся к данному документу.

Думаю, что по всем этим критериям:)
"С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов."
Теперь оказывается, что не закрываете:) И все равно не оптимально. Ведь проводки делаются по операциям, а в "документе", видимо, множество операций. Зачем же удалять проводки по всем операциям, если корректируется одна, например. Тем более, что проводки, видимо, нельзя удалять в закрытом периоде, а операцию-то нужно откорректировать:)
misha_shar
Какие СУБД нормальные:
-реляционные,
-иерархические,
-объектные.
Может какие то еще есть.
Почему МАМПС не является нормальной СУБД?

Здесь Вы довольно серьезно заблуждаетесь. mumps вообще не СУБД, так как в ней нет никакой модели данных. И это замечательно!
misha_shar
40 лет назад это 70г прошлого века. Я в это время еще не программировал и если речь об СССР
то никакого МАМПСА тогда и в помине не было. И работать так как работали тогда я наврядли смогу.

mumps тогда была, и работаете Вы именно так. В общем-то так можно работать. Но это не перспективно.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893599
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharБредятина
Не лучшая, мягко говоря, идея - использовать индексы (?) для организации связей.

Очень сомнительное высказывание. Абсолютное большенство ссылок строится на основе индексов.
Что же здесь сомнительного. Ведь ссылки это не связи. Стройте себе на здоровье ссылки на основе индексов, хотя что это означает понять невозможно, так как индексы обычно применяют для повышения производительности (только в классической объектной модели данных индексы можно рассматривать, как структурный элемент модели), а вовсе не для "построения ссылок". В случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893606
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Все я потерял смысл высказывания.

В этом и заключается проблема:) Я не потерял смысл Ваших высказываний.
misha_shar
Попробую объяснить как я все понимаю.
-Связь- взаимотношение объектов реального мира. Которое осознано программистом и заложено им либо в логику программ либо в структуры описаний которые потом превращаются опять же в логику программ только на уровне либо Базы данных либо языка программирования. Следовательно в любом случае это логика программы.

Серьезная ошибка. По такой логике объекты (а не только связи между ними) программисту достаточно осознать и заложить в логику программ:) И никакие модели данных, при таком подходе, конечно, не нужны.
misha_shar
Ссылка это данные которые помогают осуществлять связи. Ссылки могут быть самые различные. Для глобалов МИМПСА это либо поля данных, либо поля индексов.

Прежде, чем "осуществить связи с помощью данных" их нужно описать с помощью метаданных. Разве это не очевидно?
misha_shar
Ссылки это вспомогательный механизм для организации связей.

Отлично! А каков ОСНОВНОЙ механизм?
misha_shar
Связь может быть осуществлена вообще без ссылок.

Замечательно! Как бы Вы ее осуществили вообще без ссылок?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893805
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаВ случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается На каком-то логическом уровне может не быть индексов. Но где-то они все равно есть. Либо есть что-то, не называющееся индексом, но выполняющее эту роль :-)
В конце концов, в М по сути все данные хранятся индексированными Глобал(ключ)=значение
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893958
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
Думаю, что по всем этим критериям:)
"С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов."
Теперь оказывается, что не закрываете:) И все равно не оптимально. Ведь проводки делаются по операциям, а в "документе", видимо, множество операций. Зачем же удалять проводки по всем операциям, если корректируется одна, например. Тем более, что проводки, видимо, нельзя удалять в закрытом периоде, а операцию-то нужно откорректировать:)

Конечно в документе множество операций. А делается это для упрощения логики.
Если период закрыт то никаких корректировок этим периодом быть не может , отчеты уже сданы.
А если все таки надо корректировать то период открывается, документ сторнируется и изменяется. Но выполнить все это может только работник которому это вменено в обязанности.
Бредятина
Здесь Вы довольно серьезно заблуждаетесь. mumps вообще не СУБД, так как в ней нет никакой модели данных. И это замечательно!

А вот здесь вы заблуждаетесь. Модель данных есть и она довольно совершенная. Она иерархическая. Модель данных есть в любой организации данных даже в обыкновенном текстовом файле. Только свойства этих моделей разные.
Бредятина
mumps тогда была, и работаете Вы именно так. В общем-то так можно работать. Но это не перспективно.

Хорошо что перспективу оценивает рынок, а не вы.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36893980
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
Что же здесь сомнительного. Ведь ссылки это не связи. Стройте себе на здоровье ссылки на основе индексов, хотя что это означает понять невозможно, так как индексы обычно применяют для повышения производительности (только в классической объектной модели данных индексы можно рассматривать, как структурный элемент модели), а вовсе не для "построения ссылок". В случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается.

У нас возникли терминологические трудности. Я ранее написал что я чем называю. Сначала напишите мне какие термины вы применяете вместо моих или вы не согласны с моими представлениями?
Ссылки конечно не связи. Связи как я уже писал это логика программ. Связи можно строить на чем угодно. Хоть на том что из вашего сообщения следует что вы меня не поняли и связи между моим сообщением и вашим ответом нет. Индексы могут применяться для чего угодно это не лишает их возможности служить основой для построения связи. Чтобы судить о производительности надо переходить к обсуждению конкретной СУБД, а в ощем случае это не верно.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894252
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
misha_sharser_shu
Обеспечение целостности данных в ИС для псевдоудаленных данных (помеченных как удаленные) тоже отдельная песня - не работают стандартные уникальные индексы, все запросы (и из внешних систем) должны знать о наличии псевдоудаленных данных. Это замечание Мише - есть большие подводные камни.

Сережа я понял. Этот механизм я обдумывал. И возможно появится случай когда он будет Эффективно работать. Тут возможно частичное применение этого метода. Например не удалять коды из классификатора, а раз в год запускать утилиту обслуживания с очисткой неиспользуемых кодов. Но это существенно зависит от срока жизни кодов.
Мозгопудренство это называется.
Экземпляр в классе остался. И все его связи в ИС остались. Но его "никто" "не видит".
Поэтому про УДАЛЕНИЕ речь не идет. "Просто" в большинстве запросов, отчетов, методов в ИС нужно будет учитывать признак "псевдоудаленности" экземпляров некоторых классов.
Клиента "псевдоудалили", а пять его платежек в ИС осталось. Что делать с оборотками?
А очистка неиспользуемых кодов классификатора вообще не имеет к "псевдоудалению" никакого отношения. У этих кодов нет связей в ИС, пусть удаляются без проблем.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894298
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
В этом и заключается проблема:) Я не потерял смысл Ваших высказываний.

Терминология должна помогать понять смысл высказывания, а не мешать это делать.
Если применяется специальный термин то его
Бредятина
Серьезная ошибка. По такой логике объекты (а не только связи между ними) программисту достаточно осознать и заложить в логику программ:) И никакие модели данных, при таком подходе, конечно, не нужны.

Конечно это так и есть. Модели данных безусловно нужны. Это уровень абстракции который позволяет связать логику приложения со структурами данных. Модель данных для приложения в информационной системе строится всегда. И какую модель ты построишь зависит только от тебя.
Бредятина
misha_shar
Ссылка это данные которые помогают осуществлять связи. Ссылки могут быть самые различные. Для глобалов МИМПСА это либо поля данных, либо поля индексов.

Прежде, чем "осуществить связи с помощью данных" их нужно описать с помощью метаданных. Разве это не очевидно?

Совсем не очевидно. Метаданные это часть логики программы ими можно пользоваться можно вообще не пользоваться.
Метаданные существуют независимо от баз данных. Почти из любой программы можно извлечь ее структуру в виде дерева это и будут метаданные и с их помощью построить обработку.
Бредятина
misha_shar
Ссылки это вспомогательный механизм для организации связей.

Отлично! А каков ОСНОВНОЙ механизм?

ОСНОВНОЙ механизм это логика программы, базы данных и языка программирования.
Бредятина
misha_shar
Связь может быть осуществлена вообще без ссылок.

Замечательно! Как бы Вы ее осуществили вообще без ссылок?

Ну например на основе запроса пользователя.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894402
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.БредятинаВ случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается На каком-то логическом уровне может не быть индексов. Но где-то они все равно есть. Либо есть что-то, не называющееся индексом, но выполняющее эту роль :-)
В конце концов, в М по сути все данные хранятся индексированными Глобал(ключ)=значение
В рамках терминологии mumps, разумеется. Но в рамках традиционного понимания индекса для СУБД индексов, все-таки, нет при реализации связей. Например, в X.Magic данные объекта, включая индексы, хранятся в одной глобали:
идентификатор объекта_D [спустя пять лет такая-же "конструкция" была использована и в СУБД Cache:)]
а все связи объекта в другой глобали:
идентификатор объекта_E

Из двух возможных способов хранения значений характеристик объектов IS (1997 год) выбрала первый:

^...D(идентификатор экземпляра)=строка со значениями характеристик

а разработчики X.Magic (1992 год) второй:

^...D(идентификатор экземпляра, идентификатор характеристики)=значение характеристики

кторый принципиально снимал ограничение на количество характеристик объекта (другими словами, на количество "колонок" в "таблице") и обладает другими преимуществами, и, конечно, недостатками:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894450
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Конечно в документе множество операций. А делается это для упрощения логики.
Если период закрыт то никаких корректировок этим периодом быть не может , отчеты уже сданы.
А если все таки надо корректировать то период открывается, документ сторнируется и изменяется. Но выполнить все это может только работник которому это вменено в обязанности.

Например, в Икс, созданной на X.Magic, операции корректируются в закрытых периодах (я видел даже корректировки операций за позапрошлый год :)) И все нормально с бухгалтерией:)
misha_shar
А вот здесь вы заблуждаетесь. Модель данных есть и она довольно совершенная. Она иерархическая. Модель данных есть в любой организации данных даже в обыкновенном текстовом файле. Только свойства этих моделей разные.

У Вас какие-то собственные представления о модели данных:) В mumps нет никакой модели данных. В ней есть индексированные массивы и строки:)
misha_shar
Хорошо что перспективу оценивает рынок, а не вы.

Конечно хорошо. И Вы очень скоро убедитесь, что наши оценки совпадают:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894525
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Терминология должна помогать понять смысл высказывания, а не мешать это делать.

Конечно. Я не использую никаких "специальных терминов":)
misha_shar
Конечно это так и есть [это на мое замечание: И никакие модели данных, при таком подходе, конечно, не нужны):]. Модели данных безусловно нужны [так нужны или не нужны?]. Это уровень абстракции который позволяет связать логику приложения со структурами данных. Модель данных для приложения в информационной системе строится всегда. И какую модель ты построишь зависит только от тебя.

А Вы можете привести статистику: как часто для приложений Вы используете:
- иерархическую модель ...%
- реляционную модель: ...%
- сетевую модель: ...%
- объектную модель: ...%
Я предвижу Ваш ответ:
- иерархическую модель ...100%
:)
misha_shar
Совсем не очевидно. Метаданные это часть логики программы ими можно пользоваться можно вообще не пользоваться.
Метаданные существуют независимо от баз данных. Почти из любой программы можно извлечь ее структуру в виде дерева это и будут метаданные и с их помощью построить обработку.

Плохо, что не очевидно. Получается, что Вы именно не используете никакую модель данных:) Метаданные полностью определяются структурой, которая, в свою очередь, является основным аспектом модели данных (напомню, что есть еще два аспекта: ограничения целостности и ЯМД). Ими нельзя не пользоваться, и они не являются частью "логики программы", а просто используются в программе.
misha_shar
ОСНОВНОЙ механизм [реализации связей] это логика программы, базы данных и языка программирования.

Глобальный ответ:) Это же можно сказать и про объекты. Другими словами "и как ты реализуешь связи зависит только от тебя":)
misha_shar
[Связь может быть реализована] Ну например на основе запроса пользователя.

Значит и объект тоже. И вся система в целом:) Вот это перспективный подход (я серьезно)! Приложения не следует программировать - это устаревший подход. Пользователи сами получат все, что им нужно. Например, X.Magic для этого и создавалась:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894824
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот тоже в районе поздних курсов универа думал про приложения, которые не надо программировать. Про модели данных не на основе реляционной модели и все такое. А жисть как-то романтику поообламала
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894836
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну то есть я рад, что кто-то и в зрелом возрасте продолжает этим заниматься.

misha_star
Вы там где-то говорили, что для исправления документа вы откатываете период и исправляете проводки в том периоде. Но это же очень плохо! А как же непрерывность работы системы, параллельный доступ многих пользователей? А как же уже отданные отчеты? У нас если нужно исправить документ - делаются новые проводки в текущем периоде (старнирующая и далее).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894845
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Я вот тоже в районе поздних курсов универа думал про приложения, которые не надо программировать. Про модели данных не на основе реляционной модели и все такое. А жисть как-то романтику поообламала
Я мою романтику, пока, не обломала:) Ведь она подкреплена строгим научным знанием:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894867
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
misha_star
Вы там где-то говорили, что для исправления документа вы откатываете период и исправляете проводки в том периоде. Но это же очень плохо! А как же непрерывность работы системы, параллельный доступ многих пользователей? А как же уже отданные отчеты? У нас если нужно исправить документ - делаются новые проводки в текущем периоде (старнирующая и далее).
Да, примерно так. Только не только проводки создаются, но ведь и операционные данные должны корректно поддерживаться. То есть, должны оставаться количества и суммы, которым соответсвуют "старые проводки", и должны появляться количества и суммы, которым соответсвуют новые проводки.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36894889
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuМозгопудренство это называется.
Эх, Сергей Рафаилыч.... И не страшно Вам промежно Всепробивающего Носорога и Непробиваемого Утеса становиться!? Коллеги совершенно в облаках... в неге и покое всезнания и совершеннейшей определенности... Куда-уж Вам-уж... И паче нам ;)
Бредятине и мише_шару: А Вы как-то не могли бы свой совершенно бестолковый, неинтересный и, видимо, обреченный быть бесконечным, дискурс перенести в почту, пусть даже не в электронную... на улицы наконец? Устали Вы со своими "объектами"... они у Вас настолько Ваши.... индивидуально Ваши Конкретно... что нам, остальным, кто с объектами работает в том пошлом и примитивном смысле, который нам дан свыше интерсистемзом, понять Ваши Великие Мысли невероятно трудно... Правда не так трудно, как понять, а зачем Вы их вообще думаете???
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895005
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

не страшно, сам такой, романтика моделей ИС не дает не спать, не есть...
Мозгопудренство - это практика подмены устоявшихся понятий (в рассмотренном случае - считать неудаленное удаленным, почти всегда и почти всем согласно особым условиям реализации).
А все остальное очень мне нравится.
Тут по большей части размышления разработчиков, имеющих реальный опыт реализации работающих систем и даже своей инструменталки.
Другое дело, что даже найти хоть какие то понятия и одинаково их интерпретировать не очень удается.
Но это всегда так было в нашей сфере.
Зато довольно четко проявляются подходы и проблемы, которые существуют, но которые сам даже обозначить в суете не можешь, не то чтобы обсудить.
И к Каше/М имеет отношение.
Может только тему другую открыть, а то 12 страниц уже неинтересно кому-либо читать будет.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895113
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuМозгопудренство - это практика подмены устоявшихся понятий (в рассмотренном случае - считать неудаленное удаленным, почти всегда и почти всем согласно особым условиям реализации).
На меня намекаете? Ай-ай-ай.
На самом деле наоборот, многие путают удаление логическое и удаление физическое. И логическое удаление не должно сопровождаться физическим (за исключением случаев, если вообще весь блок данных не представляет интереса).
Представьте, при смерти человека удаляются все упоминания о нем, архивы, документы, в день смерти стирается память родных, исчезают все личные вещи, исчезает даже могила, в которой его только что похоронили. Чудесно? Почему в норме вещей такое происходит в БД?

При этом я понимаю, что некоторые данные иногда нужно удалять, но это вопрос, который решается на уровне не пользовательского интерфейса, а на уровне системы в отдельных, особо оговоренных случаях.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895118
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

Я вот никак не могу протиснуться с моделью ИС, включающей классы-сущности и классы-связи :(
У всех только классы-сущности. А связи - внеклассовый элемент. Такая политика.
А может там интеллигенция и ИТР будущих ИС, смысл, честь и даже совесть, обеспечивающая целостность?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895195
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нету тут ни смысла, ни чести, и совершенно не пахнет совестью.
Будущее за ИС, которые будут делать большую часть работы за человека (так как системы становятся все сложнее и сложнее).

А автоматизировать можно только функционирование жестко заданных моделей с четко определенной логикой, нечеткую логику компьютер не понимает. И здесь возникает противоречие - слишком жесткие модели легче для восприятия машиной и тяжеловаты для человека. Модели с большим числом степеней свободы легче для человека, но более трудоемки и хуже автоматизируются. И поиск моделей - это поиск способа представления задачи, наиболее простой как для компьютера, так и для человека.

Для примера, если я говорю не очевидные вещи: вспомним реляционную модель.
Она ведь не такая уж простая для обывателя, и нужны какие-то усилия, чтобы понимать ее.
Но она позволяет часть программирования перевести в оперирование метаданными, что дает значительный прирост скорости разработки, легкость модифицирования, оптимизации, контроля и т.п. Но я верю, что это только начало. В некоторых областях программирования хорошо показывает себя объектная модель. Но и это не абсолют, это всего лишь одна из моделей.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895239
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Представьте, при смерти человека удаляются все упоминания о нем, архивы, документы, в день смерти стирается память родных, исчезают все личные вещи, исчезает даже могила, в которой его только что похоронили. Чудесно? Почему в норме вещей такое происходит в БД?
Слеза прошибла :( А если корову съели? Волки, конечно...

Если у вас CRM по продвижению пылесосов и вы получили похоронку на своего дорогого клиента, можете смело грохнуть и все дела с ним и планы, хранящиеся в БД.

ИС поддерживает бизнес, задачи бизнеса и ее процедуры, в том числе и удаление данных, нацелены на поддержку бизнеса. Очистка БД от лишних данных не менее важна, чем их запись. Важно только, чтобы ИС после такой чистки была работоспособной и целостной.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895263
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или вот такая модель - таблицы Экселя.
Множество ограничений, которые, в том числе, не дают использовать его для больших систем,
зато позволяют формализовать широкий круг мелких задач в систему формул и дальше оперировать этой системой. К слову, в экселе за десятки минут делается то, что при разработке в других системах может занимать десятки часов.

По опыту знаю, что программисты обычно считают ниже своего достоинства разбираться в таких вещах, но по сути это механизм оперирования массивами данных, при этом совершенно отличный от языка sql, а по функциональности..., ну, по крайней мере, многие вещи в экселе делаются проще.
И, как говорили в этом топике "рынок покажет". Что показывает рынок по экселю ;-)
Может быть, будущее ИС не в развитии реляционных баз, а в развитии Экселя?

PS. Сказка ложь, да в ней намек
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895268
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че-то вспомнился по этому поводу MX-ALEX
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895301
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov
Бредятине и мише_шару: А Вы как-то не могли бы свой совершенно бестолковый, неинтересный и, видимо, обреченный быть бесконечным, дискурс перенести в почту, пусть даже не в электронную... на улицы наконец? Устали Вы со своими "объектами"... они у Вас настолько Ваши.... индивидуально Ваши Конкретно... что нам, остальным, кто с объектами работает в том пошлом и примитивном смысле, который нам дан свыше интерсистемзом, понять Ваши Великие Мысли невероятно трудно... Правда не так трудно, как понять, а зачем Вы их вообще думаете???
Слушаюсь и повинуюсь:) Извините за беспокойство:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895361
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаСлушаюсь и повинуюсь:) Извините за беспокойство:)
ААА! Ну вот опять раздел в анабиоз впадет. То хоть можно было почитать, отвлечься от работы
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895377
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesovser_shuМозгопудренство это называется.
Эх, Сергей Рафаилыч.... И не страшно Вам промежно Всепробивающего Носорога и Непробиваемого Утеса становиться!? Коллеги совершенно в облаках... в неге и покое всезнания и совершеннейшей определенности... Куда-уж Вам-уж... И паче нам ;)
Бредятине и мише_шару: А Вы как-то не могли бы свой совершенно бестолковый, неинтересный и, видимо, обреченный быть бесконечным, дискурс перенести в почту, пусть даже не в электронную... на улицы наконец? Устали Вы со своими "объектами"... они у Вас настолько Ваши.... индивидуально Ваши Конкретно... что нам, остальным, кто с объектами работает в том пошлом и примитивном смысле, который нам дан свыше интерсистемзом, понять Ваши Великие Мысли невероятно трудно... Правда не так трудно, как понять, а зачем Вы их вообще думаете???

Скроллингом умеете пользоваться? Тогда вперед.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895452
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Вы там где-то говорили, что для исправления документа вы откатываете период и исправляете проводки в том периоде. Но это же очень плохо! А как же непрерывность работы системы, параллельный доступ многих пользователей? А как же уже отданные отчеты? У нас если нужно исправить документ - делаются новые проводки в текущем периоде (старнирующая и далее).

делаются новые проводки в текущем периоде (старнирующая и далее) это стандартный бухгалтерский метод и он широко применяется в реальной бухгалтерии. Но иногда необходимо исправить именно прошлый период это во первых когда это не влияет на сданные отчеты во вторых когда есть возможность исправить уже сданные отчеты. Такая необходимость есть в реальной бухгалтерии. То что вы называете откатом у меня называется сторнированием документа. Это стандартная операция которую выполняет любой бухгалтер при этом непрерывность работы не нарушается и параллельный доступ многих пользователей осуществляется в оперативном режиме.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895464
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина
Да, примерно так. Только не только проводки создаются, но ведь и операционные данные должны корректно поддерживаться. То есть, должны оставаться количества и суммы, которым соответсвуют "старые проводки", и должны появляться количества и суммы, которым соответсвуют новые проводки.
Старые то проводки мне зачем? А новые проводки создаются заново.
Все корректно отрабатывается. В се зависит от структуры хранения данных.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895477
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
На самом деле наоборот, многие путают удаление логическое и удаление физическое. И логическое удаление не должно сопровождаться физическим (за исключением случаев, если вообще весь блок данных не представляет интереса).
Представьте, при смерти человека удаляются все упоминания о нем, архивы, документы, в день смерти стирается память родных, исчезают все личные вещи, исчезает даже могила, в которой его только что похоронили. Чудесно? Почему в норме вещей такое происходит в БД?

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

К глубокому моему сожалению удалять данные в ИС необходимо. Если в бассейн идет 2 трубы из одной втекает ,а из другой вытекает то если вход превышает выход то бассейн обязательно переполнится и чем больше вход превышает выход тем быстрее это произойдет. Удаление данных в ИС должно быть предусмотрено обязательно. И удаление должно быть именно физическим.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895526
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Ну или вот такая модель - таблицы Экселя.
Множество ограничений, которые, в том числе, не дают использовать его для больших систем,
зато позволяют формализовать широкий круг мелких задач в систему формул и дальше оперировать этой системой. К слову, в экселе за десятки минут делается то, что при разработке в других системах может занимать десятки часов.

По опыту знаю, что программисты обычно считают ниже своего достоинства разбираться в таких вещах, но по сути это механизм оперирования массивами данных, при этом совершенно отличный от языка sql, а по функциональности..., ну, по крайней мере, многие вещи в экселе делаются проще.
И, как говорили в этом топике "рынок покажет". Что показывает рынок по экселю ;-)
Может быть, будущее ИС не в развитии реляционных баз, а в развитии Экселя?

PS. Сказка ложь, да в ней намек

Я думаю что SQL разрабатывался для того чтобы можно было отказаться от программирования.
Не программист садится за компьютер и получает ответы на свои запросы в режиме терминальной строки очень интересное решение и самое главное очень гибкое но не очень удобное для постоянной работы. Я знаю попытку создать Бух.учет на основе команд которые вводит бухгалтер. Гибкость необычайная но удобства хуже некуда. И я думаю что если бы программисты не приспособили SQL для своих нужд то он бы умер. В этом смысле EXEL более удачное решение он более удобен в использовании и эту попытку я думаю можно считать удачной. Прекрассный интерфейс для пользователя даже я думаю революционный.
EXEL создавался как интерфейс пользователя и плохо приспособлен для его использования в программах. Но я широко его использую для формирования отчетов и мне совсем немного не хватает для его использования при вводе документов. И так поступаю не я один.
Прекрасный инструмент.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895570
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shu
Я вот никак не могу протиснуться с моделью ИС, включающей классы-сущности и классы-связи :(
У всех только классы-сущности. А связи - внеклассовый элемент. Такая политика.
А может там интеллигенция и ИТР будущих ИС, смысл, честь и даже совесть, обеспечивающая целостность?
Сережа почему все ты пытаешся представить в виде объекта? Связи это заведомо не объект. Они плохо представляются классами. Основные элементы ИС отвечают на один из вопросов:
-что,
-где,
-когда.
Те элементы которые отвечают на вопрос что это обекты, а те которые на вопросы где и когда это связи и они плохо интерпретируются объектами у них нет свойств и они лучше всего представляются обыкновенными глобалями. В реляционной модели их называют отношениями.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895624
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы опошляете реальность до конкретных действий: использовал инструмент - получил результат, использовал другой инструмент - получил худший результат за большее время и с большими затратами.

Но вы упускаете то, что за этим стоит нечто нематериальное, но очень важное, гораздо более важное, чем конкретные кнопки - ИДЕЯ. И именно идея позволяет не разваливаться на кусочки всем этим маленьким, материальным, видимым снаружи, но гораздо менее значимым вещам.
И идей, на самом деле, очень мало. В основном мы видим одни и те же идеи, по разному (и с разным качеством) реализованные в разных системах, с маленькими, не особо значащими деталями.
Одна из таких идей - реляционная модель, которая доминирует на рынке СУБД. Бредятина, кстати, рекламирует, по сути, ту же реляционную модель сущность-связь, но в каком-то своем диалекте. Другая модель - объектно/процедурная, она доминирует в разработке приложений.
Третья идея - модель глобалов языка М.
Четвертая идея - кубы OLAP
Пятая идея - система формул электронной таблицы
Шестая идея - система правил языка пролог
ну и так далее.

Несмотря на то, что у каждой конкретной реализации есть титульная идея, как правило, одна идея является ограниченной и недостаточной для построения полнофукционального приложения, и поэтому в какой-то мере она поддерживает другие технологии.
Примеры:
Excel - формулы электронной таблицы, процедурное/объектное программирование, кубы OLAP.
Каше - модель глобалов, реляционная модель, объекты, кажется в DeepSee есть OLAP.

То есть мы видим, что в рамках одной идеи не получается создать универсальную систему.
Но вопрос идеологии, нахождения достаточно жесткой модели для конструирования ИС, чтобы она была хорошо формализуемой, а с другой стороны достаточно гибкой и универсальной - да, это серьезная задача, в своем роде это поиски Грааля для средневековых рыцарей или философского камня для алхимиков. К слову сказать, философский камень хоть и не нашли, но из их поиски были не зря;-)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36895893
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Одна из таких идей - реляционная модель, которая доминирует на рынке СУБД. Бредятина, кстати, рекламирует, по сути, ту же реляционную модель сущность-связь, но в каком-то своем диалекте. Другая модель - объектно/процедурная, она доминирует в разработке приложений.

С позволения kolesova замечу, что:
1) я ни в коем случае ничего не рекламирую:) а только информирую;
2) реляционная модель и модель сущность-связь - это разные модели, поэтому словосочетание "реляционная модель сущность-связь" не вполне корректно:)
3) модель, о которой я информирую, именно по сути, не имеет вообще ничего общего с реляционной, а отсутствие желания это понимать - это же не моя проблема:).
Про ИДЕИ все верно, конечно, только их еще меньше, чем кажется на первый взгляд.
Пример. У OLAP много проблем, сырая конъюнктурная идея. В MDX-запросе только один куб:) (на всякий случай замечу, на 2009 год, может быть что-то изменилось?). Во многих важных приложениях, где казалось бы кубы то, что нужно, например, манипулирование статистическими показателями, как раз манипулировать-то и невозможно:) Поэтому, в свое время была предложена "статистическая алгебра". Но ведь по сути это не новая идея, так как заимствована от реляционной алгебры с определенными нюансами, связанными с моделью статистического показателя.
То есть, если внимательно посмотреть на аналогии и заимствования, я думаю, немного будет ИДЕЙ:)
Что касается симбиоза моделей, то mumps, как ни странно, остается одной из лучших технологий для этого. И практика показывает, что, например, задачи OLAP хорошо уживаются с задачами OLTP в рамках одного приложения.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36896066
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Несмотря на то, что у каждой конкретной реализации есть титульная идея, как правило, одна идея является ограниченной и недостаточной для построения полнофукционального приложения, и поэтому в какой-то мере она поддерживает другие технологии.
Примеры:
Excel - формулы электронной таблицы, процедурное/объектное программирование, кубы OLAP.
Каше - модель глобалов, реляционная модель, объекты, кажется в DeepSee есть OLAP.

Можно добавить
GNOSIS = PROLOG + MUMPS. Интересная реализация-комбинация.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36896072
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако у меня в иногда создатеся впечатление, что рекламируете. Ну да суть не в этом :-)

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


Симбиоз идей это тоже интересный вопрос, так как если бы это не было проблемой, то в любую систему можно было бы напихать все подряд. И я согласен, что М является хорошей почвой для других идей.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36896206
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы вопрос поставил так: Что же главное в M ?
Вот по моему мнению хороший документ.

http://www.mgateway.com/docs/universalNoSQL.pdf
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36896212
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н....
Несмотря на то, что у каждой конкретной реализации есть титульная идея, как правило, одна идея является ограниченной и недостаточной для построения полнофукционального приложения, и поэтому в какой-то мере она поддерживает другие технологии.
Примеры:
Excel - формулы электронной таблицы, процедурное/объектное программирование, кубы OLAP.
Каше - модель глобалов, реляционная модель, объекты, кажется в DeepSee есть OLAP.

То есть мы видим, что в рамках одной идеи не получается создать универсальную систему.
Но вопрос идеологии, нахождения достаточно жесткой модели для конструирования ИС, чтобы она была хорошо формализуемой, а с другой стороны достаточно гибкой и универсальной - да, это серьезная задача, в своем роде это поиски Грааля для средневековых рыцарей или философского камня для алхимиков. К слову сказать, философский камень хоть и не нашли, но из их поиски были не зря;-)

EXCEL + CACHE = MX

но предварительно внутри CACHE создан виртуальный (облачный) многопользовательский EXCEL,
интерактивно связанный и отображаемый на реальные EXCELи клиентов
( всегда - и при вводе и при выводе данных )

однако этот V-EXCEL своими формулами в клеточках оперирует не только традиционными листами-диаграммами , но еще и глобалами-обьектами CACHE

и в этом сила, брат
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36897695
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Но чисто внешне, на уровне модели, они имеют много общего, причем ваша модель еще жестче и требовательней к формализации, чем реляцоннная. Наверняка это должно давать свои преимущества в работе с системой, новые методы, новые возможности. Какие?


Возможность построения универсального интерфейса, в котором пользователь может указать что и как ему выводить, без программирования. Например, для схемы master-detail в master расположить строку накладной, а в detail шапку накладной. И все это без программирования. Остается только тщательно формализовать предметную область...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36897837
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том же Аксессе можно без программирования создать функциональную СУБД. Так почему же он не захватил весь мир?

Чем больше система подразумевает "за тебя", тем удобнее она для получения быстрого результата, но при этом при попытке выхода за рамки заложенных шаблонов упираемся в стенку.

Попробую проиллюстрировать это примером.
Пусть у нас есть алфавит, скажем 33 буквы. Использовать 33 буквы неудобно - в каждом слове легко можно сделать ошибку, ну и вообще куча ненужной работы для составления слов.
Давайте будем составлять слова из промежуточных агрегатов - слогов. Пусть для простоты у нас слоги двухбуквенные, их уже гораздо больше, теоретически до тысячи. Можно для простоты исключить неиспользуемые слоги (ыы, жи-ши и т.д.) и тем самым немного сократить количество ошибок. Работы при составлении слов намного меньше, но иногда в экзотических случаях оказывается, что нужных слогов нет, а они нужны. Тогда системе нужен инструментарий для составления новых слогов из букв. Также при таком подходе остается большим количество ошибок.
Можно использовать слова, но тогда база ИС распухает до неимоверных пределов, и рано или поздно окажется, что каких-то слов она не знает.
А алфавита, в котором есть одновременно и буквы и слова не придумали. Тогда делают гибридную ИС, в которой есть разные слои представления, средства создания одного слоя из другого и т.п.

Но в некоторых случаях можно использовать простую ИС, где будут даже не слова, а фразы "даешь ускорение", "Экономика должна быть экономной", "поборем коррупцию", "за гражданское общество". Она будет решать свои задачи, причем более быстро и успешно, чем ИС "из букв".

К чему это все я? Настоящая мощная ИС должна давать доступ "к буквам". Все вот эти "сделать одной кнопкой" на самом деле очень ограничены.
И я говорю не только про М/Каше, та же объектно/процедурная модель построена так же.
Если говорить про мастер/детайл, накладные и т.д., то мы уже явно загоняем себя в угол. Можно создать очень удобную систему, но она будет удобна только в очень узкой области.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36897999
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

или приходится прилеплять к "словесной" системе
другую - "буквенную"

например, к R-СУБД
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36898050
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
В том же Аксессе можно без программирования создать функциональную СУБД. Так почему же он не захватил весь мир? Слабые ТТХ?
Блок А.Н.
Чем больше система подразумевает "за тебя", тем удобнее она для получения быстрого результата, но при этом при попытке выхода за рамки заложенных шаблонов упираемся в стенку.
Где-то читал про соотношение 20/80 или как-то так. Для реализации 80% задач нужно 20% функционала программы, а для реализации оставшихся 20% задач - 80%. Или пример - Word. 80% пользователей работают с 20% возможностей... и т.д. Выбирайте :)
Блок А.Н.
Пусть у нас есть алфавит, скажем 33 буквы.
Кстати ... Два взгляда на историю письменности "В основе китайской письменности лежат особые знаки – иероглифы, отдельно или вместе с другими выражающие смысл и очень часто представляющие отдельное слово. Большинство иероглифов остаются неизменными уже более 2000 лет." Или из компьютерной области - CISC и RISC процессоры

Но в модели, пропагандируемой Чернышевым Андреем Леонидовичем (он же ЧАЛ, он же Бред, он же Бредятина), много положительных моментов. Кроме уменьшения количества программирования (за что мы любим SQL? ), большинство сущностей предметной области и связи между ними достаточно долго остаются неизменными. А вот правильно разложить на сущности и связи... А потом реализовать... ;)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36898106
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я помню про иероглифы ;-)

В модели Чернышева А.Л. чувствуется что-то хорошее. Но ...
Когда я познакомился с реляционной моделью(к тому времени я вполне владел объектным подходом), мне казалось каким-то насилием над мозгом разрывать объект на какие-то таблицы, проводить нормализацию. Кстати, нормализацию во всякие БКНФ я так и не осилил, что такое зависимость ключа от подключа - я до сих пор сказать не могу. Компромиссом с сознанием для меня была модель сущность-связь, в принципе при правильной структуризации предметной области вполне неплохо получается выделить таблицы.
Но - такая формализация предметной области дала нам механизм работы с данными, который к объектной модели прикрутить получилось только с годами, да и то не полностью. То есть загоняя предметную область в такую жестокую модель мы получили взамен плюшки.
Пока с точки определений модель Чернышева А.Л. очень близко к реляционной. Но дополнительные ограничений дают нам основания ожидать, что мы взамен получим некий механизм, некую новую "алгебру" для работы с этими сущностями-связями. И интуитивно мне кажется, что это возможно, но пока я этого не вижу. Впрочем, возможно я что-то пропустил.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36898236
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Однако у меня в иногда создатеся впечатление, что рекламируете. Ну да суть не в этом :-)

Конечно, не в этом. Но это тоже принципиально. Я рассказывал о модели. По существу. Вы сказали (не один раз), что это все голая теория. Но как только я привел пример, Вы стали говорить, что я что-то рекламирую (!?). Я никогда в жизни ничего не рекламировал:) И не буду рекламировать.
Блок А.Н.
Согласен, реляционная модель и модель сущность-связь не одно и то.
Но чисто внешне, на уровне модели, они имеют много общего, причем ваша модель еще жестче и требовательней к формализации, чем реляцоннная. Наверняка это должно давать свои преимущества в работе с системой, новые методы, новые возможности. Какие?

Это не моя модель, а классическая объектная модель (КОМД), предками которой являются объектно-ориентированные (в отличие от записе-ориентированной реляционной модели) иерархическая и сетевая модели. Да, я занимался ее расширением и формализацией, и продолжаю заниматься:)

Базовая идея объединить концептаульный и логический уровень (в случае РМД - логический уровень, концептуальным, обычно, считается ER-модель).

У КОМД другой уровень абстракции (помимо уже много раз объясненных принципиальных отличий в идентификации и семантике): в РМД только отношения, в КОМД объекты и связи.
Кодд также пытался как-то описывать связи (вводил понятия "отношение типа сущности" и "отношение типа связи"), но из этого ничего не получилось. И не может получиться чисто формально. Я уже приводил мнение Дейта о том, что "связи" (он использует неизбежно этот термин концептуального уровня, хотя в РМД, конечно же, нет никаких связей) нужно представлять одним способом, независимо от их мощности, то есть, всегда отдельным отношением. Но это невозможно в РМД:
1) "Cвязи" "реализуются" с помощью внешних ключей. Формально, связи - это линии от внешнего ключа в отношении A к потенциальномe в отношении B.
2) Создаем для этой "связи" отношение C.
3) В нем два внешних ключа.
4) Но внешние ключи - это связи.
5) Следовательно, для них нужно создать отдельные отношения D и E.
6) И т.д.

Связи очень хорошо зарекомендовали себя при создании сложных приложений.
А многие приложения могут быть созданы просто описанием схемы данных, без программирования. Благодаря тому, что КОМД просто органически предполагает, по сути в составе СУБД, объектный навигатор. Так как метаданные в КОМД описывают семантику предметной области, естественно, на родном языке, то после описания схемы данных, приложение готово к использованию.

Важно, что КОМД восприимчива к развитию, тогда как РМД органически не восприимчива.

Пара идей по развитию.
1. Поддерживать два типа объектов: сущности и события (участниками которых являются сущности).
2. Реализовать "классификаторы", как тип характеристики объекта. Это идея имеет простое обоснование. Представим, что у нас есть характеристики (свойства, атрибуты) Фамилия и Дата рождения объекта (класса, отношения) Человек. Когда мы для определенного экземпляра (объекта, кортежа) указываем значение характеристики Фамилия Сидоров, мы относим конкретного человека к КЛАССУ ЛЮДЕЙ, имеющих фамилию Сидоров. Когда мы для определенного экземпляра указываем значение характеристики Дата рождения 12.09.1990, мы относим конкретного человека к КЛАССУ ЛЮДЕЙ, родившихся 12.09.1990. То есть, любая характеристика - в определенном смысле "классификатор". Вот и нужно "классификаторы" (и иерархические и фасетные) сделать типом характеристики, наряду со строками и датами. Тот, кто это первым реализует почувсвует существенное упрощение при решении многих практических задач:)

И т.д.:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36898250
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.В том же Аксессе можно без программирования создать функциональную СУБД. Так почему же он не захватил весь мир?

Неожиданная, прямо скажем, идея:)
Без программирования можно и спомощью журналов, которые ведутся шариковой ручкой создать функциональную СУБД. Почему мы перешли на Аксесс. Он ВО ВСЕХ ДРУГИХ ОТНОШЕНИЯХ аналог Cache (производительность, масштабируемость и т.п.)?
Блок А.Н.
Чем больше система подразумевает "за тебя", тем удобнее она для получения быстрого результата, но при этом при попытке выхода за рамки заложенных шаблонов упираемся в стенку.

В какую именно стенку мы упираемся по существу обсуждаемых моделей данных?:)
При использовании РСУБД мы упираемся в стенку уже при проектировании приложения. Приходится использовать ДРУГУЮ модель данных, ДРУГОЕ ПО, которое поддерживает эту модель данных, и, соответсвенно, "маппинг":)
Блок А.Н.
Настоящая мощная ИС должна давать доступ "к буквам". Все вот эти "сделать одной кнопкой" на самом деле очень ограничены.
И я говорю не только про М/Каше, та же объектно/процедурная модель построена так же.
Если говорить про мастер/детайл, накладные и т.д., то мы уже явно загоняем себя в угол. Можно создать очень удобную систему, но она будет удобна только в очень узкой области.

В какой угол, конкретно?:)
Не накладные, так самолеты, не операции, так диагнозы, долги, соглашения, молекулы, растения:)
Где угол-то? Безусловно, могут быть конкретные задачи, для которых оптимальна СПЕЦИАЛИЗИРОВАННАЯ СУБД. Эта модная идея Сноунбрейкера и других специалистов в области баз данных. Но я подозреваю, что эта мода скоро пройдет:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36898316
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати ... :) Из документа от Valeriu в соседней ветке:

The really interesting thing about both GT.M and Caché is that, unlike the commonly-
known NoSQL databases, they aren’t shoe-horned into one particular category, and
can have multiple, simultaneous characteristics. So a GT.M or Caché system could
support any or all of the database types described above, simultaneously if required.
So it’s like having Redis, CouchDB, SimpleDB, Neo4j, mySQL and a Native XML
Database all running in the same database, all at the same time!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36898887
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколькими страницами ранее читаем:
БредятинаВ частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи"Здесь же:Бредятина в РМД:
1) "Cвязи" "реализуются" с помощью внешних ключейВ каком же случае Вам верить? :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899231
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovНесколькими страницами ранее читаем:
БредятинаВ частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи"Здесь же:Бредятина в РМД:
1) "Cвязи" "реализуются" с помощью внешних ключейВ каком же случае Вам верить? :)

"реализуются" в кавычках означает видимо что не совсем реализутся
поэтому противоречия между высказываниями нет
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899314
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9"реализуются" в кавычках означает видимо что не совсем реализутсяТогда "связи" в кавычках означает видимо, что не совсем связи.
Значит "не совсем связи не совсем реализуются с помощью внешних ключей" :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899558
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,

Потому что "связи" никакого отношения к данным в ИС и их целостности не имеют.
Целостность обеспечивают операции записи/корректировки/удаления данных в ИС.
Если эти операции не обращают внимания на нарисованные "связи", то целостности все равно не будет.
А если операции обеспечивают целостность данных в ИС без явно прописанных "связей", то и "связи" не нужны.
"Связи" это избыточный набор данных, с помощью которого операции записи/корректировки/удаления поддерживают целостность данных в ИС.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899812
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что скажет начальник транспортного цеха ..

просим ..
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899832
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint
Возможность построения универсального интерфейса, в котором пользователь может указать что и как ему выводить, без программирования. Например, для схемы master-detail в master расположить строку накладной, а в detail шапку накладной. И все это без программирования.

В этой части тоже есть несколько полезных идей, которые несложно реализовать.
Пример.
Конечно, у пользователя уйдет меньше минуты, чтобы создать себе такую схему. Но, все-таки, ее нужно создать, и она пополнит список пользовательстких схем. Однако этого можно избежать, если реализовать ФУНКЦИЮ АВТОМАТИЧЕСКОЙ РОТАЦИИ. Тогда изменение головного объекта в схеме (а точнее полное "вращение", так как в схеме может быть более двух взаимосвязанных объектов) будет делаться одним щелчком:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899855
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое ощущение, что вы забыли написать большой кусок текста. Ничего не понятно
У какого пользователя уйдет меньше минуты?
Что такое функция ротации и зачем она нужна?
Что такое вращение?

Вы о чем-то своем?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899881
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Пока с точки определений модель ... очень близка к реляционной. Но дополнительные ограничения дают нам основания ожидать, что мы взамен получим некий механизм, некую новую "алгебру" для работы с этими сущностями-связями. И интуитивно мне кажется, что это возможно...

Не думаю, что "алгебра" актуальна. Я уже объяснял, что от SQL толку мало. Для него нужно искать ниши какие-то. Вот я нашел одну - "статистическая алгебра":) Но производители РСУБД эти ниши не ищут, а, пользуясь "историческим моментом", впаривают всем подряд:)
Еще раз приведу пример.
Предположим у нас есть сложная система, в которой нового пользователя интересует вот такой фрагмент:
Страна - Имеет (1:М) - Университеты
Страна - Имеет (1:М) - Гостиницы
Его интересуют, например, страны с населением менее 20 млн. (это характеристика объекта Страна), университеты в них с числом студентов более 2 тыс. (это характеристика объекта Университет) и гостиницы типа *** (это характеристика объекта гостиница).
Он просто создает указанную выше схему и делает в ней указанный запрос. Поскольку
РЕЗУЛЬТАТОМ ЗАПРОСА К БАЗЕ ДАННЫХ ЯВЛЯЕТСЯ ПОСХЕМА СХЕМЫ БАЗЫ ДАННЫХ СО ВСЕЙ СЕМАНТИКОЙ, ПРИСУЩЕЙ БАЗЕ ДАННЫХ
результатом является точно та же схема, в которой просто поменьше экземпляров этих трех объектов:)
В реляционной технологии, благодаря замечательному свойству реляционной замкнутости результатом запроса будет некоторое новое отношение. Что это за отношение? Вы узнаете обычным путем: заключить договор, написать ТЗ, заплатить деньги:) И так на каждом шагу. Безусловный плюс реляционной технологии - она обеспечивает работой целую армию программистов, которые только и обсуждают между собой аспекты борьбы с "запросами", "хинтами", "оптимизаторами", "EAV" и т.п.:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899898
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovНесколькими страницами ранее читаем:
БредятинаВ частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи"Здесь же:Бредятина в РМД:
1) "Cвязи" "реализуются" с помощью внешних ключейВ каком же случае Вам верить? :)
В обоих, Алексей. Особенно, если быть чуть внимательнее:) И не выбирать предложения из текста.
Дейт (а не я, поэтому слово связь я взял в кавычки) вынужден использовать слово "связь" из модели сущность-связь, чтобы объяснить свою мысль об универсальном способе представления "связей" (всегда с помощью отдельного отношения). Внешние ключи - это ограничения целостности, а не связи. Читайте главу 14 "Семантическое моделирование" в 8-м издании. Там, кстати, есть раздел с красноречивым названием "Является ли ER-модель моделью данных".
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899908
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuAlexey Maslov,

Потому что "связи" никакого отношения к данным в ИС и их целостности не имеют.
Целостность обеспечивают операции записи/корректировки/удаления данных в ИС.
Если эти операции не обращают внимания на нарисованные "связи", то целостности все равно не будет.
А если операции обеспечивают целостность данных в ИС без явно прописанных "связей", то и "связи" не нужны.
"Связи" это избыточный набор данных, с помощью которого операции записи/корректировки/удаления поддерживают целостность данных в ИС.
Надеюсь, здесь речь идет о реляционных ИС:)
Так как в КОМД связи являются таким же полноправным элементов структуры, как и объекты, и "участвуют" в ограничениях целостности.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36899924
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Такое ощущение, что вы забыли написать большой кусок текста. Ничего не понятно
У какого пользователя уйдет меньше минуты?
Что такое функция ротации и зачем она нужна?
Что такое вращение?

Вы о чем-то своем?
Здасьте, приехали:)
Я исключительно о Вашем.
Есть "стандартная" схема, которая, например, создана разработчиком:
Документ: ТТН - Состоит из -> Операция отгрузки
Пользователь элементарно (меньше минуты) создает себе другую, нужную ему для работы, схему:
Операция отгрузки <- Входит в - Документ: ТТН
и работает с ней.
Именно об этом Вам написал doublefint
А я пояснил, что можно идти дальше и одним щелчком сделать объект Операция отгрузки головным в первой схеме (и вообще не делать вторую схему). Что же здесь непонятного?:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36900185
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дейт, 8 изд-е, Глава 14. Семантическое моделированиеСвязи типа "один к одному" и "один ко многим" всегда могут быть представлены с помощью механизма внешнего ключа, помещаемого в одну из переменных отношения, участвующих в данной связи. Однако существуют веские причины рассмотрения связей типа "один к одному" и "один ко многим" на таких же основаниях, как и связи типа "многие ко многим", по крайней мере, из-за того, что достаточно часто существует возможность того, что они будут развиваться и со временем преобразовываться в связи типа "многие ко многим". И только если такой возможности нет, их можно рассматривать как-то иначе.
Безусловно, в некоторых случаях подобной возможности не может быть в принципе; например всегда будет верным утверждение, что окружность имеет только одну точку, являющуюся ее центром.Поэтому (следуя Дейту) противоречий при представлении связей M:M в РМД через промежуточные отношения не возникает: каждая связь промежуточного отношения ("отношения-связи") с "отношением-сущностью" принципиально 1:M. Может я чего-то недопонимаю, но какая у нее возможность развития в M:M?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36900229
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovДейт, 8 изд-е, Глава 14. Семантическое моделированиеСвязи типа "один к одному" и "один ко многим" всегда могут быть представлены с помощью механизма внешнего ключа, помещаемого в одну из переменных отношения, участвующих в данной связи. Однако существуют веские причины рассмотрения связей типа "один к одному" и "один ко многим" на таких же основаниях, как и связи типа "многие ко многим", по крайней мере, из-за того, что достаточно часто существует возможность того, что они будут развиваться и со временем преобразовываться в связи типа "многие ко многим". И только если такой возможности нет, их можно рассматривать как-то иначе.
Безусловно, в некоторых случаях подобной возможности не может быть в принципе; например всегда будет верным утверждение, что окружность имеет только одну точку, являющуюся ее центром.Поэтому (следуя Дейту) противоречий при представлении связей M:M в РМД через промежуточные отношения не возникает: каждая связь промежуточного отношения ("отношения-связи") с "отношением-сущностью" принципиально 1:M. Может я чего-то недопонимаю, но какая у нее возможность развития в M:M?
Никто о ТАКОГО РОДА противоречиях и не говорит. Дейт намекает, в частности, на то, что если в ходе эксплуатации приложения потребуется вместо 1:М сделать М:М, то при наличии отдельного отношения это делается элементарно. Только и всего. Проблема в том, что это отдельное отношение имеет "связи" с двумя другими отношениями (в виде внешних ключей). А "связи" Дейт рекомендует представлять отдельными отношениями:). То есть, поскольку никаких связей в РМД не поддерживается, только в голове можно держать информацию о том, что вот это отношение представляет собой "связь". Причем, это нельзя держать в голове на том основании, что в отношении более одного внешнего ключа (такие предложения иногда можно встретить в литературе), так как, совершенно очевидно, что многие отношения, содержащие более одного внешнего ключа представляют собой сущности (а не связи), имеющие "связи" с другими сущностями (М:1).
Однако основной идеей Дейта в этом абзаце (кстати, почитайте выше про "настояшщие" и "не настоящие связи:)) является идея "легализации связей" в РМД. Хотелось бы чтобы они были в РМД:) Но для этого нужна какая-то конструкция. Вот отдельное отношение и представляет эту конструкцию. Поэтому Дейт и вставил слова "по крайней мере, из-за того, что", подразумевая, что это не единственная причина:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36900341
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаВ этой части тоже есть несколько полезных идей, которые несложно реализовать.
Пример.
Конечно, у пользователя уйдет меньше минуты, чтобы создать себе такую схему. Но, все-таки, ее нужно создать, и она пополнит список пользовательстких схем. Однако этого можно избежать, если реализовать ФУНКЦИЮ АВТОМАТИЧЕСКОЙ РОТАЦИИ. Тогда изменение головного объекта в схеме (а точнее полное "вращение", так как в схеме может быть более двух взаимосвязанных объектов) будет делаться одним щелчком:)
В теме про IBM IMS пробегала именно такая операция на уровне СУБД. Давно придумали )
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36900379
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, как бы настолько необязательная и интерфейсная операция... Дополнительный бантик к объектному навигатору, не более. Это скорее уровень реализации, но не идеи.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36900651
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина, вы, как мне показалось, продвигаете идею, что работа с базой должна быть на уровне навигации самим пользователем. И никаких SQL и процедурного программирования.

Вот такая задача: есть объекты, есть состояния объектов, причем есть дата начала каждого состояния. Причем история действительна с начальной даты и до следующей истории объекта или до конца, если нет поздней истории.
Нужно получить агрегирующую функцию(например, список уникальных значений с сортировкой по функции от значения) по атрибутам состояний объектов на определенную дату.
Это упрощенная модель одного из реальных модулей, решена в методике классов без объектов, внутри методов sql и глобалы.

А как бы вы решали такую задачу? Покажите на псевдокоде или на картинках, но так, чтобы было понятно. А то мастер-детайл это как-то скучно, это умеет делать тот же аксесс, причем очень визуально.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36900657
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну, и конечно же, с фильтрацией по другому аттрибуту состояния.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36901071
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина...совершенно очевидно, что многие отношения, содержащие более одного внешнего ключа представляют собой сущности (а не связи), имеющие "связи" с другими сущностями (М:1).ИМХО, в данном случае совершенно неочевидно. Ибо обсуждаемое отношение как раз и было создано, чтобы промоделировать связь M:N между сущностями. Т.е. его две связи (1:M) как раз и являются "ненастоящими", и нет никаких причин для их превращения в "настоящие" (M:N). Если Вы другого мнения, обоснуйте его. Можно на каком-то конкретном примере.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36901650
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
В теме про IBM IMS пробегала именно такая операция на уровне СУБД. Давно придумали )
Пробегала, но не такая:) Здесь БД совсем не затрагивается. В КОМД итак поддерживаютсядвухсторонние связи. Здесь речь идет только о функционале навигатора.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36901656
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintSiemargl, как бы настолько необязательная и интерфейсная операция... Дополнительный бантик к объектному навигатору, не более. Это скорее уровень реализации, но не идеи.
Но ведь существуют же идеи реализации:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36901774
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Бредятина, вы, как мне показалось, продвигаете идею, что работа с базой должна быть на уровне навигации самим пользователем. И никаких SQL и процедурного программирования.

Это Вам показалось. Поскольку, во-первых, сложную систему трудно создать, например, без триггеров, а их нужно программировать, а во-вторых, пользователи делают запросы и формируют отчеты:) Ясно, что помимо навигатора (в рамках которого можно решать множество задач) есть и оптимизатор, и генератор отчетов, и снапшоты. Может внутри этих инструментов использоваться декларативный язык? Можно. То есть, я не понимаю что Вас конкретно смущает?:)
Блок А.Н.
Вот такая задача: есть объекты, есть состояния объектов, причем есть дата начала каждого состояния. Причем история действительна с начальной даты и до следующей истории объекта или до конца, если нет поздней истории.
Нужно получить агрегирующую функцию(например, список уникальных значений с сортировкой по функции от значения) по атрибутам состояний объектов на определенную дату.
Это упрощенная модель одного из реальных модулей, решена в методике классов без объектов, внутри методов sql и глобалы.
А как бы вы решали такую задачу? Покажите на псевдокоде или на картинках, но так, чтобы было понятно. А то мастер-детайл это как-то скучно, это умеет делать тот же аксесс, причем очень визуально.
Я бы обычно решил эту задачу, как и значительно более трудные:) И совсем уж не понятно при чем здесь "мастер-детэйл". Например, задача получения баланса предприятия на любую дату (балансовый счет - объект, состояние которого постоянно меняется), конечно, решена, в той же Икс, и, конечно, без "классов" и SQL, конечно, на mumps:) Я уже неоднократно приводил статистику, в том числе и Вам, показывающую не актуальность SQL.
Вы сформулируйте, пожалуйста, что именно Вас беспокоит в классической объектной модели данных? Например, в ней нельзя решить задачу такого-то класса. И поэтому задачи этого класса являются нишей для технологии "классов без объектов, внутри методов sql и глобалов"?
Да я же не спорю. Я же уже говорил, что сам озабечен поиском ниши для SQL.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36901863
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovБредятина...совершенно очевидно, что многие отношения, содержащие более одного внешнего ключа представляют собой сущности (а не связи), имеющие "связи" с другими сущностями (М:1).ИМХО, в данном случае совершенно неочевидно. Ибо обсуждаемое отношение как раз и было создано, чтобы промоделировать связь M:N между сущностями. Т.е. его две связи (1:M) как раз и являются "ненастоящими", и нет никаких причин для их превращения в "настоящие" (M:N). Если Вы другого мнения, обоснуйте его. Можно на каком-то конкретном примере.
Что значит "в данном случае"? Как представляются "связи" в РМД? С помощью внешних ключей? Или с помощью отношений? Как Вы определяете, что "связь" М:1, представленная в виде внешнего ключа, не может стать "настоящей связью", представленной в виде отношения? Вы говорите, что вот эта конкретная "связь" вот в этом конкретном отношении гарантированно не может стать "настоящей", потому что само это отношение было специально создано, чтобы поддерживать "настоящую связь"? Во-первых, а откуда это известно-то? А, во-вторых, это не так! Например:

Люди работают в организациях. М:М. Создаем отдельное отношение.

Человек -(1:М) -> Работа человека в организации <-(М:1) - Организация

Уже понятно, что на самом деле мы создали еще одну сущность (именно так это и надо всегда интепретировать, так как никаких "отношений типа связь" нет в РМД, не удалось их формально поддерживать). Это понятно даже из названия, так как связи всегда представляются глагольными формами. Но, продолжим эксплуатировать созданную нами систему, чтобы убедиться, что дополнительное отношения вовсе не представляет "настоящую связь", а "связи" в виде внешних ключей вовсе не являются "не настоящими".
Добавим (по объективной необходимости) поле Должность в наше "специализированное" отношение (больше-то ее некуда добавить), и принимаем решение не дублировать должности каждый раз для разных людей:) А заодно выясняется, что человек может работать грузчиком в ДВУХ организациях:). Получаем:

Человек <- (М:М) -> Работа человека в организации {Должность} <- (М:М) -> Организация

Конечно же, и это еще не все. Создав еще два отношения, Вы не можете опять гарантировать, что это "настоящие связи":)

Нет в РМД структуры для представления связи, вот и прихидится вводить, мягко говоря, странные определения: "не настоящие связи" и "настоящие связи". Это дополнительное отношение, конечно же, новая сущность (а вовсе не связь), "связанная" с двумя другими сущностями стандартным для РМД механизмом - внешний ключ. А в широком смысле, механизмом связывания по "общим" полям (вовсе не обязательно по ключам).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36901957
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баланс решается взять очень просто, те же группировки есть в SQL-обычно, также есть сальдо на заданный период. Эта задача немножко хуже.
В SQL эта задача решается в одно выражение, но каше такой sql не поддерживает и вообще он по скорости будет очень плохим. Либо SQL с процедурным программированием, тоже ничего приятного.

Я уже говорил, что ИДЕЙ на самом деле очень мало. И либо вы гений и придумали какую-то оригинальную новую идею, либо вы используете что-то из уже известного.
И еще, вы опытный спорщик, и споре избегаете давать прямые ответы. На мой вопрос вы не ответили - придется додумывать за вас.
Мне так показалось, вы будете использовать объектную модель и процедурное программирование? Причем класс будет с поддержкой интерфейса "связи" и методами работы со связями. Так?
И в чем изюм?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902035
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Баланс решается взять очень просто, те же группировки есть в SQL-обычно, также есть сальдо на заданный период. Эта задача немножко хуже.

Чем хуже? Я без БД не знаю как задачи решать. Это однодневки будут. А Вы про БД ничего не говорите. Нет схемы данных. А она решает все. Программирование ничего не решает. Его нужно сводить к минимуму во всех стандартных случаях. А с другой строны, не боятся программировать наиболее эффективным образом (не полагаясь на "помощь" постоянно меняющихся "оптимизаторов") редкие "не стандартные" задачи, постепенно превращая и их в "стандартные".
Блок А.Н.
В SQL эта задача решается в одно выражение, но каше такой sql не поддерживает и вообще он по скорости будет очень плохим. Либо SQL с процедурным программированием, тоже ничего приятного.

С SQL ничем не могу помочь. Периодически приходится с ним сталкиваться, и убеждаться, что пользы от него меньше, чем вреда. Хотя интересно что означает "такой SQL"?
А программировать приложение на нескольких языках с разными парадигмами, конечно, малоприятное занятие.
Блок А.Н.
Я уже говорил, что ИДЕЙ на самом деле очень мало. И либо вы гений и придумали какую-то оригинальную новую идею, либо вы используете что-то из уже известного.

Я постоянно подчеркиваю, что ничего нового не придумал. А Вы это постоянно игнорируете:)
Блок А.Н.
И еще, вы опытный спорщик, и споре избегаете давать прямые ответы. На мой вопрос вы не ответили - придется додумывать за вас.

Я сейчас разбираюсь с couchdb, и не могу решать какие-то задачи про "состояния объектов". Могу только сказать, что ничего сложного в этой задаче нет.
Блок А.Н.
Мне так показалось, вы будете использовать объектную модель и процедурное программирование? Причем класс будет с поддержкой интерфейса "связи" и методами работы со связями. Так?
И в чем изюм?
Я бы, конечно, использовал КОМД и ее ЯМД. Вы почти правы. И на 100% правы, что никакого изюма нет и в помине. А Вы вот думаете как быть с Cache, в которой не тот SQL, который нужен:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902045
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаДобавим (по объективной необходимости) поле Должность в наше "специализированное" отношение (больше-то ее некуда добавить), и принимаем решение не дублировать должности каждый раз для разных людей:) А заодно выясняется, что человек может работать грузчиком в ДВУХ организациях:). Получаем:

Человек <- (М:М) -> Работа человека в организации {Должность} <- (М:М) -> Организация

Неверно получаем. Всего лишь так.
Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация
Должность <- (1:M) --/
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902093
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С каше все нормально, не о ней речь (не смотря на название темы )

Вы опять не ответили ничего.
Непосредственно данными как будете оперировать? Модель моделью, а дальше то что?

Свою задачу я привел в ответ на тезис о том, что модель решает все и ничего не надо программировать, сделал мастер-детайл или другие связи - наступило счастье. Вот я и попросил научить, как на основе модели (метаданных) решать такие задачи. Пока ответа не получил. С помощью процедурного программирования и объектной модели она решается, и я это сказал.
Вы обвинили SQL в том, что на нем нужно программировать ("обеспечивает работой целую армию программистов")
Хочу знать новый способ.

Кстати, КОМД - это аббревиатура, которой пользуетесь на sql.ru только вы. В какой-то момент я ее начал понимать, а потом забыл :(
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902098
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Неверно получаем. Всего лишь так.
Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация
Должность <- (1:M) --/
:) Вы уж, пожалуйста, не путайте людей. Которые хотят разобраться со связями. Я с удовольствием готов обсудить с Вами ту проблему, которую Вы сейчас придумываете на ходу, как и проблемы проектирования БД в целом. А сейчас мы получили именно то, что я написал, объясняя, что связь M:1 может стать связью М:М, о чем и написал Дейт в абзаце, с которого все это началось. А Вы взяли кусочек из контекста, и поставили для себя другую задачу. Видимо, строгую задачу изначально правильного проектирования БД:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902140
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.С каше все нормально, не о ней речь (не смотря на название темы )

"В SQL эта задача решается в одно выражение, но каше такой sql не поддерживает и вообще он по скорости будет очень плохим..."
Вы, видимо, хотите меня максимально запутать:) Напрасно.
Блок А.Н.
Вы опять не ответили ничего.
Непосредственно данными как будете оперировать? Модель моделью, а дальше то что?

А Вы меня опять с кем-то путаете. Я предельно точно ответил.
Блок А.Н.
Свою задачу я привел в ответ на тезис о том, что модель решает все и ничего не надо программировать, сделал мастер-детайл или другие связи - наступило счастье.

Напомню, что мы говорили о моделях данных, в целом, и о поддержки в них связей между сущностями, в частности. Ни о каких "мастер-детайл связях" (???) я не говорил. Модель решает намного больше, чем Вам кажется. Но то, что она решает все, я тоже не говорил. Про счастье тоже не говорил:)
Блок А.Н.
Вот я и попросил научить, как на основе модели (метаданных) решать такие задачи. Пока ответа не получил. С помощью процедурного программирования и объектной модели она решается, и я это сказал.

И я это подтвердил. Черным по белому (только использовал КОМД, а не "объектная модель", поскольку не знаю, что Вы подразумеваете под "объектной моделью").
Блок А.Н.
Вы обвинили SQL в том, что на нем нужно программировать ("обеспечивает работой целую армию программистов")
Хочу знать новый способ.

Не хитрите, пожалуйста:) Я не голословно "обвинил". И вовсе не обвинил. А привел пример, с которыми сталкиваюсь на практике ежедневно. Так как по роду работы анализирую эксплуатацию разнообразных информационных систем:)
Про ДРУГОЙ ПОДХОД (я же нового ничего не придумал, так что это не новый способ:)) мы здесь как раз и рассуждаем.
Блок А.Н.
Кстати, КОМД - это аббревиатура, которой пользуетесь на sql.ru только вы. В какой-то момент я ее начал понимать, а потом забыл :(
И в чем я виноват? Опять?:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902176
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаSiemargl
Неверно получаем. Всего лишь так.
Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация
Должность <- (1:M) --/
:) Вы уж, пожалуйста, не путайте людей. Которые хотят разобраться со связями. Я с удовольствием готов обсудить с Вами ту проблему, которую Вы сейчас придумываете на ходу, как и проблемы проектирования БД в целом. А сейчас мы получили именно то, что я написал, объясняя, что связь M:1 может стать связью М:М, о чем и написал Дейт в абзаце, с которого все это началось. А Вы взяли кусочек из контекста, и поставили для себя другую задачу. Видимо, строгую задачу изначально правильного проектирования БД:)
Пойдем с другой стороны. Как эта задача правильно, на ваш взгляд, проектируется в объектах ?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902191
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, рыбину в аквариуме проще поймать, чем от вас добиться точного ответа.

С каше по прежнему все нормально, потому что SQL является в ней вспомогательным, а не основным инструментом.

С моделью данных тоже понятно. Это сущности и связи между ними. Причем связи не являются атрибутами объектов, за счет этого могут свободно меня тип от 1-М до М-М и потенциально еще много чего. Это мы тоже выяснили.

С такое моделью можно работать через SQL, можно через объекты, но мы выяснили, что вы эт оне делаете.
Осталось выяснить что такое этот таинственный КОМД и как вы посредством ее минуя процедурное/объектное программирование и SQL что-то получить.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902386
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Пойдем с другой стороны. Как эта задача правильно, на ваш взгляд, проектируется в объектах ?
Зачем же идти с другой стороны?. И при чем здесь "правильное проектирование"? Мы же рассматривали пример, который показывает, что отношение, представляющее "настоящую связь", вовсе не представляет никакой связи. Вы хотите бОльшей строгости в примере что ли? Это справедливо, согласен.

Человек - (1:М) -> Работа человека в организации <- (М:1) - Организация

Мы создали отношение для представления связи М:М и думаем, что оно представляет "настоящую связь. Пусть, каждая Работа продолжает относится строго к одной организации. Просто для учета Должностей заменяем ее на Должность и добавляем поля (Оклад, например):

Человек - (1:М) -> Должность <- (М:1) - Организация

Мы уже видим, что то, что мы хотели бы назвать "настоящей связью" оказалось вовсе не связью:). Пошли дальше. Должность занимают разные люди в разное время. Таким образом, первая связь становится М:М. Но! То отношение, которое мы сейчас добавим как бы для реализации этой связи является, конечно же, отдельной сущностью со своими многочисленными характеристиками (Дата назначения и т.п.):

Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация

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

КОМД и соответсвующая КОСУБД отличаются тем (только в том узком направлении, о котором мы говорим сейчас), что поддерживают связи (в том числе М:М, что принципиально невозможно в РМД) и их семантику (что особенно важно, когда между двумя объектами более одной связи).
В КОМД мы создаем схему:

Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D)

Где A, B, C, D - идентификаторы объектов (технические метаданные).

Человек, а не table People:) То же самое и с характеристиками этих объектов. То есть, приложение семантически готово к использованию стандартными средствами.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902396
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Блин, рыбину в аквариуме проще поймать, чем от вас добиться точного ответа.
С каше по прежнему все нормально, потому что SQL является в ней вспомогательным, а не основным инструментом.

Спасибо за уточнение. Клещами приходится вытягивать, указывая на очевидные противоречия в высказываниях:) А мои-то ответы предельно точны.
Блок А.Н.
С моделью данных тоже понятно. Это сущности и связи между ними. Причем связи не являются атрибутами объектов, за счет этого могут свободно меня тип от 1-М до М-М и потенциально еще много чего. Это мы тоже выяснили.

Термин сущность не вполне хорош. Нужно использовать термин "объект". Так как он (объект) может быть двух типов: сущность (вот где сущность) и событие (см. сообщение о перспективных идеях).
Блок А.Н.
С такой моделью можно работать через SQL, можно через объекты, но мы выяснили, что вы это не делаете.

А это уже не просто неточность, а серьезное заблуждение. Никак нельзя работать "через SQL" с такой моделью, поскольку в SQL принципиально не поддерживаются связи между объектами.
Блок А.Н.
Осталось выяснить что такое этот таинственный КОМД и как вы посредством ее минуя процедурное/объектное программирование и SQL что-то получить.

КОМД - это классическая объектная модель данных, о которой, как Вы сказали выше, Вам все понятно. Видимо, все-таки, не все:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902424
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, Бредятинапринимаем решение не дублировать должности каждый раз для разных людей:) А заодно выясняется, что человек может работать грузчиком в ДВУХ организациях:).Замечательно; но не вижу, как отсюда вытекает следующий проделанный Вами шаг:БредятинаПолучаем:
Человек <- (М:М) -> Работа человека в организации {Должность} <- (М:М) -> ОрганизацияСкорее, готов поверить в то, что в моделируемом нами мире может существовать и единый классификатор должностей. Тогда вполне подходит модель Siemargl: бинарная связь M:N превращается в тернарную M:N:P. По-прежнему моделируется _одной_ дополнительной сущностью, правда теперь уже с тремя внешними ключами.
Соглашусь с тем, что "настоящую связь" M:N лучше рассматривать как отдельную сущность (тем более, что и классики к этому призывают :), но пока что не вижу, к каким проблемам это ведет.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902426
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А дальше то, дальше что с этой КОМД делать?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902430
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина, прошу извинить, разместил свою реплику, не увидев Вашей в 19:19). Ушел думать :)... Приятных всем выходных!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902438
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

Искуственное размазывание простой звезды для показывания ущербности реализации М:М в РСУБД думаю можно опустить, не суть важно.

Отличий не вижу при подходах:
1. Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация
и
2. Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D)

Может с объектами все же не так прямолинейно?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902643
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Тогда вполне подходит модель Siemargl: бинарная связь M:N превращается в тернарную M:N:P. По-прежнему моделируется _одной_ дополнительной сущностью, правда теперь уже с тремя внешними ключами.
Соглашусь с тем, что "настоящую связь" M:N лучше рассматривать как отдельную сущность (тем более, что и классики к этому призывают :), но пока что не вижу, к каким проблемам это ведет.
Удивительно:) Как это "соглашусь"? "Ваше" ПО просто не будет работать, если этого не сделать. Это вынужденная мера, из-за того, что связи ПРИНЦИПИАЛЬНО НЕ ПОДДЕРЖИВАЮТСЯ. Что значит "рассматривать"? Держать у себя в голове? Ведь на логике это никак не отражается. Нет никакой связи. И наконец, Вы забыли, что классики призывают ВСЕ СВЯЗИ "рассматривать" как отдельные сущности. Но это также бессмысленно, как и НЕКОТОРЫЕ связи "рассматривать" как отдельные сущности. "Связи" в РМД представляются внешними ключами, и никак иначе. Теоретически, есть вариант поддержки всех связей с помощью специального типа отношения. В таком типе отношения нужно запретить создавать атрибуты, которые НЕ ЯВЛЯЮТСЯ ВНЕШНИМИ КЛЮЧАМИ, а также предусмотреть создание ровно двух внешних ключей (так как никаких связей, кроме бинарных не существует). Это было бы неким приближением к реальной поддержке связей между объектами. При этом мощность связи управляется условиями уникальности, накладываемыми на пару внешних ключей. Но это уже не реляционная модель:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902652
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.А дальше то, дальше что с этой КОМД делать?
То же, что и с любой другой МД. Создать СУБД, которая поддерживает эту модель. И использовать ее для создания приложений. Что и было сделано. А почему Вы задали этот странный вопрос, ответ на который очевиден?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902673
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Искуственное размазывание простой звезды для показывания ущербности реализации М:М в РСУБД думаю можно опустить, не суть важно.

Здесь требуются пояснение. При проектировании БД в любой модели данных я не слышал термина "искусственное размазывание". Также ни в РМД, ни в КОМД нет понятия "простая звезда". В РМД есть отношения. А в КОМД объекты и связи. Я не понимаю какие "простые звезды" я "искусственно размазывал".
Siemargl
Отличий не вижу при подходах:
1. Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация
и
2. Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D)
Может с объектами все же не так прямолинейно?

Да нет, все достаточно прямолинейно. Есть объекты и связи между ними. А в другом случае нет ни объектов, ни связей. А Вы сделали вид будто-бы они есть, и нарисовали два раза одно и то же:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902698
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаSiemargl
Искуственное размазывание простой звезды для показывания ущербности реализации М:М в РСУБД думаю можно опустить, не суть важно.

Здесь требуются пояснение. При проектировании БД в любой модели данных я не слышал термина "искусственное размазывание". Также ни в РМД, ни в КОМД нет понятия "простая звезда". В РМД есть отношения. А в КОМД объекты и связи. Я не понимаю какие "простые звезды" я "искусственно размазывал".

Просветим легко =)
Бредятина
Siemargl
Отличий не вижу при подходах:
1. Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация
и
2. Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D)
Может с объектами все же не так прямолинейно?

Да нет, все достаточно прямолинейно. Есть объекты и связи между ними. А в другом случае нет ни объектов, ни связей. А Вы сделали вид будто-бы они есть, и нарисовали два раза одно и то же:)
В компьютере все биты и байты. Все остальное всего лишь один из способов сильно наморщить лоб, т.е сила абстракции ))
Напишите на любом метаязыке представление объектов для этой структуры - может станет понятнее, куда медитировать.

А сделал и и написал не я, а вы - я лишь процитировал ваши структуры.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902731
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Просветим легко =)

И где же "искусственное размазывание" и "простая звезда"???
Siemargl
В компьютере все биты и байты. Все остальное всего лишь один из способов сильно наморщить лоб, т.е сила абстракции ))

А-а-а, значит РМД - это биты и байты? А КОМД - это "наморшить лоб"? Я так и знал:)
Siemargl
Напишите на любом метаязыке представление объектов для этой структуры - может станет понятнее, куда медитировать.

Хорошо, напишу на рефале, он мне больше всего нравится:) И буду медитировать.
Siemargl
А сделал и и написал не я, а вы - я лишь процитировал ваши структуры.

Не поняв о чем речь:) Бывает..
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902733
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovБредятина, прошу извинить, разместил свою реплику, не увидев Вашей в 19:19). Ушел думать :)... Приятных всем выходных!
И Вам хорошо отдохнуть. То есть, подумать:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902800
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Леонидович, у меня создается ощущение, что вы всегда работали Пророком, а не в практической разработке.
Не надо на вопрос "как работать с КОМД" отвечать "используя методику работы с КОМД". Кроме красивости модели есть фактор удобства работы с ней, я не раз встречал случаи сознательной денормализации, при которых идеология становилась хуже, но работать с ней становилось удобнее.

Ответьте, что за методика, какие методы. Если есть возможность привести кусок кода - покажите как делаются простейшие операции.
А то создается впечатление, что вы пришли сюда просто всех потроллить. В этом случае мне жаль, что я участвую в этом разговоре.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902832
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Андрей Леонидович, у меня создается ощущение, что вы всегда работали Пророком, а не в практической разработке.

Это отдельная тема? Я на личности не переходил:) А эту Вашу идею здесь уже высказывали много раз. Я ее опровергать не собираюсь, так как это не имеет к моделям данных никакого отношения.
Блок А.Н.
Не надо на вопрос "как работать с КОМД" отвечать "используя методику работы с КОМД". Кроме красивости модели есть фактор удобства работы с ней, я не раз встречал случаи сознательной денормализации, при которых идеология становилась хуже, но работать с ней становилось удобнее.

Денормализация БД возможна при использовании любой модели данных, конечно же. Как и нормализация. Большой интерес, кстати, представляет вопрос: что такое нормализация для иерархической модели данных. Хотя в mumps и не иерархическая модель данных, ответ на этот вопрос поможет многое прояснить (в том числе, для IMS, раз уж она здесь упоминалась).
А вот аналогию применить сложно: что такое денормализация модели данных мне трудно сказать:)
Блок А.Н.
Ответьте, что за методика, какие методы. Если есть возможность привести кусок кода - покажите как делаются простейшие операции.

Не один раз показывал. Обычные для КОМД функции ЯМД, похожие на команды mumps, типа
$$ge(идентификатор объекта,идентификатор экземпляра,"d") - получить все характеритики экземпляра в локальный массив d. Аналогично для обновлений/удалений и объектов, и экземпляров объектов, и связей, и экземпляров связей, аналогично для навигации.
Декларативный язык не актуален, хотя и возможен. Если Вам это интересно, можете реализовать:)И потом, это же не моя разработка. Существующая 18 лет. Хорошо документированная.
А здесь я говорил только про то, что мне не нравится, так как противоречит формальной теории. Но Вас это мало интересует. Но не могу же я удовлетворить интересы всех и каждого:)
Блок А.Н.
А то создается впечатление, что вы пришли сюда просто всех потроллить. В этом случае мне жаль, что я участвую в этом разговоре.
[quot Блок А.Н.]
После идиота, шизофреника и т.п. мне совсем не сложно побыть троллем:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902842
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаSiemargl
Просветим легко =)

И где же "искусственное размазывание" и "простая звезда"???

Звезда в википедии и мой пример тоже звезда
Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация
Должность <- (1:M) --/

Избыточное размазывание в этом случае это -
Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация
Бредятина
Siemargl
В компьютере все биты и байты. Все остальное всего лишь один из способов сильно наморщить лоб, т.е сила абстракции ))

А-а-а, значит РМД - это биты и байты? А КОМД - это "наморшить лоб"? Я так и знал:)

Все биты и байты. Наморщили лоб слева (т.е.подумали) - получили РМД, наморщили справа - получили КОМД.
Бредятина
Siemargl
Напишите на любом метаязыке представление объектов для этой структуры - может станет понятнее, куда медитировать.

Хорошо, напишу на рефале, он мне больше всего нравится:) И буду медитировать.
Siemargl
А сделал и и написал не я, а вы - я лишь процитировал ваши структуры.

Не поняв о чем речь:) Бывает..
На рефале нет смысла - он не объектный.
Вопрос простой - как обсуждаемую структуру правильно на ваш взгляд описать в КОМД?
А РМД оставим в покое - ей и так неплохо живется.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36902865
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Звезда в википедии и мой пример тоже звезда
Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация
Должность <- (1:M) --/
Избыточное размазывание в этом случае это -
Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация

Во-первых, в Вашем примере, не тринарная связь, а Назначение с многими характеристиками.
Во-вторых, в Вашем примере нет возможности вести штатное расписание Организации, а если уж мы развили наше исходное приложение до назначений, то это объективно необходимо:) Так что никакого размазывания нет. Однако, эти Ваши неточности не имеют существенного значения, так как по бозовому вопросу Вы подтвердили своим примером основную мысль: дополнительное отношение не представляет никакую связь:)
Siemargl
Все биты и байты. Наморщили лоб слева (т.е.подумали) - получили РМД, наморщили справа - получили КОМД.

А зачем тогда про биты и байты? Значит продолжаем про модели данных.
Siemargl
На рефале нет смысла - он не объектный.
Вопрос простой - как обсуждаемую структуру правильно на ваш взгляд описать в КОМД?
А РМД оставим в покое - ей и так неплохо живется.

Мы никаких структур не обсуждали. Мы обсуждали вопрос о "настоящих" и "не настоящих" связях, и представлении "связей" в РМД. Которой очень плохо живется, так как ее даже не удалось никому реализовать:) Схему данных я Вам описал, тем не менее. При использовании РМД и "соответсвующих" СУБД это вообще не представляется возможным. Там содержательные метаданные приходится хранить в приложениях. В 21-м веке:) А Вы говорите неплохо живется. Очевидно, что Вы имеете в виду армию программистов, которым неплохо живется благодаря реляционной теории. То есть, Вы и в этом со мной соглашаетесь? Это хорошо:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36903110
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, теперь немного понятно (возможно вы где-то и приводили примеры работы, но не здесь).
Правда пока это не кажется удобным, тот же SQL делает это изящнее.
Ту же фильтрацию результатов или выборку данных из нескольких взаимосвязанных сущностей проще сделать декларативно, чем процедурными методами. А вы, я так понимаю, используете процедурное программирование.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36903247
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Ок, теперь немного понятно (возможно вы где-то и приводили примеры работы, но не здесь).
Правда пока это не кажется удобным, тот же SQL делает это изящнее.
Ту же фильтрацию результатов или выборку данных из нескольких взаимосвязанных сущностей проще сделать декларативно, чем процедурными методами. А вы, я так понимаю, используете процедурное программирование.
Я предлагаю, как раз, НИЧЕГО НЕ ИСПОЛЬЗОВАТЬ. Пользователи используют объектный генератор отчетов (я это объяснял выше, см. сообщение о заключении договора, написания ТЗ и оплаты работ в случае использования РСУБД, и это факт:)). Что касается программирования каких-то функциональных задач (расчет реализации продукции, расчет заработной платы, расчет фактической себестоимости продукции и т.п., например), которые запускаются, опять же из объектного навигатора, или программирования триггеров, то, уверяю Вас, вреда от SQL намного больше, чем пользы. Я уже приводил статистику типов "запросов" в сложных OLTP системах - в большинстве из них нечего оптимизировать, и нет смысла в SQL.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36903265
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Правда пока это не кажется удобным, тот же SQL делает это изящнее.

В моем сообщении, после которого Вы написали эту фразу, был конкретный маленький пример. Пожалуйста, поясните в чем заключается изящество, если вот этот мусор:

SELECT *
FROM значение переменной, в которой идентификатор объекта
WHERE id=значение переменной, в которой ид. экземпляра

нужно еще связать с переменными другого языка программирования?:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36903518
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы что-то противоестественное делаете, либо я вас не понял.

в каше взять характиристики объекта будет так
&sql(select field1,field2 into :val1,:val2 from table where id=:id)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36904151
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Вы что-то противоестественное делаете, либо я вас не понял.
в каше взять характиристики объекта будет так
&sql(select field1,field2 into :val1,:val2 from table where id=:id)
Что противоестественное?:)
select я написал и Вы написали;
from тоже;
where тоже;
а вот что за field1, field2, ... val1, val2?
Вы не подумайте, конечно, что я не понимаю что это у Вас такое:) Но напишите, пожалуйста, то, что договаривались. Нужно взять все характеристики объекта. Кажется не принципиальным, но давайте будем точны:) Все-таки, покороче будет выражение, наверное.
И после этого объясните, все-таки в чем изящество. И зачем запускается оптимизатор запросов.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36904282
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, что вам не понравилось в моем запросе. Вы этого не сказали, а я предсказывать мысли других не люблю. Еще ошибусь и буду спорить и доказывать то чего вы не думали. Такая потеха мне не нужна.
Тем более запрос вы поняли, я не сомневаюсь. И даже не сомневаюсь, что вы знали о таких запросах до того, как я его написал. Но почему-то делаете по другому, а тут уже непонятно почему.

Изящество в том, что можно взять запрос по нескольким таблицам/сущностям в одной формуле.
Оптимизатор запроса запускается для выбора оптимальных индексов и в целом плана запроса.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36905434
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Я не понял, что вам не понравилось в моем запросе. Вы этого не сказали, а я предсказывать мысли других не люблю. Еще ошибусь и буду спорить и доказывать то чего вы не думали. Такая потеха мне не нужна.
Тем более запрос вы поняли, я не сомневаюсь. И даже не сомневаюсь, что вы знали о таких запросах до того, как я его написал. Но почему-то делаете по другому, а тут уже непонятно почему.

Очень типично для этого форума. Так долго просили конкретики, и, как только она появилась (причем довольно простая, первопопавшаяся:)), тут же отказались обсуждать по существу.
Что значит читать мысли?
Что же непонятного в функции получения ВСЕХ характеристик объекта ?
Я должен интерпретировать таким образом, что на SQL в Cache это не реализуемо?
Нужно написать сто (например) field и сто val?
И десять-то неприятно писать и сверять порядок:)
Блок А.Н.
Изящество в том, что можно взять запрос по нескольким таблицам/сущностям в одной формуле.
Оптимизатор запроса запускается для выбора оптимальных индексов и в целом плана запроса.
Мы до этого дойдем (хотя про статистику "запросов" я, в том числе и Вам лично, уже писал). Когда рассмотрим один из более простых примеров, который мы сейчас обсуждаем. Что я должен уточнить, если Вам, действительно, не понятен пример?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36905565
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне непонятен смысл получения всех характеристик.
В одну корзину ложим рост, вес, состояние в браке, число детей, образование.
В чем смысл? Это разные параметры, в чем необходимость их мешать в одну кучу переменных?

Или у вас сотни атрибутов, которые являются однотипными (простите уж, вы так и не уточнили, так что придется додумывать то, что вы не сказали)? То есть у вас сто полей "рост в 1 год", "рост в два года", "рост в три года"
Тогда это хреновое проектирование. Докажите конкретными примерами, зачем это нужно?

Кстати, на каше это легко реализуется, но смысла этого я не вижу.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36905680
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Леонидович, возможно получение всех характеристик одного объекта по его id, действительно неудобный пример для демонстрации возможностей SQL. Все таки он скорее для обработки множеств. И вот тогда Sum, Where и Order ....
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36905708
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Или у вас сотни атрибутов ...


В той реализации КОМД, на которую ссылается Андрей Леонидович, у объектов может быть очень много свойств (+ выбранной схемы хранения), но скорее из-за реализации наследования (или его отсутствия). Т.е, я видел пример, когда объект Материал (он же класс, он же таблица) содержит свойства всех Материалов (наследников) предметной области (более 400). В принципе у пользователя проблем нет, так как они легко разделяются по группам интерфейсом (закладками).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36905785
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле у каше SQL все прекрасно и в этом вопросе, и этот же пример реализуется очень красиво. Но есть два но:
1.Если сама такая постановка задачи является типичной, то возникает вопрос, а правильно ли проведено проектирование? Правильна ли архитектура системы? Оптимальна ли схема хранения в такой системе?

2. Андрей Леонидович очень легко, при малейшей зацепке переходит в атаку. При этом очень туманно обрисовывая свою позицию и свои методы (да, он на это ответит что сто раз уже говорил, но я не заметил). Мне хотелось бы развернуть ситуацию. А.Л. предлагает - мы это оцениваем и обсуждаем. По крайней мере мы уже сдвинулась от абстрактного обличительства к каким-то конкретным альтернативам.
Пока эти альтернативы мне не кажутся хорошими. При тех многих слабостях SQL, его принципиальных ограничениях, а также при тех конкретных косяках SQL каше и в частности его оптимизатора - это пока что один из самых мощных языков оперирования данными, и у каше SQL есть свои фишки,которых нет в других языках. И совсем не зря SQL так распространен.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36906200
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Мне непонятен смысл получения всех характеристик.
В одну корзину ложим рост, вес, состояние в браке, число детей, образование.
В чем смысл? Это разные параметры, в чем необходимость их мешать в одну кучу переменных?

:) Удивительно, учитывая последнее (правда мне опять придется его уточнить, чтобы не отклоняться от сути) предложение в этом Вашем сообщении.
Я же ничего не говорил о росте и детях. Я привел пример ПЕРВОЙ ПОПАВШЕЙСЯ функции в КОСУБД, которая, конечно же, нередко используется. Если в объекте всего десять характеристик и все они могут быть нужны. Не нужно за меня ничего додумывать сутками:) Напишите этот несчастный код:)
Блок А.Н.
Тогда это хреновое проектирование. Докажите конкретными примерами, зачем это нужно?
Кстати, на каше это легко реализуется, но смысла этого я не вижу.
Ну в том, что проектирование хреновое, я даже не сомневался. Сделайте это легко, только не "на каше", а на SQL в Cache.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36906206
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintАндрей Леонидович, возможно получение всех характеристик одного объекта по его id, действительно неудобный пример для демонстрации возможностей SQL. Все таки он скорее для обработки множеств. И вот тогда Sum, Where и Order ....
Я уже много раз говорил о СТАТИСТИКЕ "ЗАПРОСОВ" в сложных системах. Можно ведь так и сказать: да это мы пишем НЕ НА SQL, и продолжить что-то еще обсуждать. Правильно?
Но тогда сразу возникнет вопрос: а что это? "Огласите весь список, пожалуйста":)
Получение всех, нескольких, одной характеристики экземпляра.
Создание экземпляра.
Обновление экземпляра.
Получение всех экземпляров объекта B, связанных с конкретным экземпляром объекта A и их обработка.
И др.
Для всего это не нужен SQL. А это до 80%:) Вот когда с ними закончим, перейдем к оставшимся 20-ти:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36906228
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.На самом деле у каше SQL все прекрасно и в этом вопросе, и этот же пример реализуется очень красиво.

Так это же замечательно!
Блок А.Н.
Но есть два но:
1.Если сама такая постановка задачи является типичной, то возникает вопрос, а правильно ли проведено проектирование? Правильна ли архитектура системы? Оптимальна ли схема хранения в такой системе?

Отличный вопрос! В РМД (на отношениях без связей между объектами) проектировать безошибочней, чем в КОМД (на объектах и связях)? Интересная идея давайте ее обсудим:) Но получать характеристики объекта (атрибуты отношения), и выполнять другие операции такого рода все равно ведь нужно...
Блок А.Н.
2. Андрей Леонидович очень легко, при малейшей зацепке переходит в атаку.

В какую атаку? При какой зацепке? Я сижу работаю, мне не до атак и выискивания зацепок.
Блок А.Н.
При этом очень туманно обрисовывая свою позицию и свои методы (да, он на это ответит что сто раз уже говорил, но я не заметил). Мне хотелось бы развернуть ситуацию. А.Л. предлагает - мы это оцениваем и обсуждаем. По крайней мере мы уже сдвинулась от абстрактного обличительства к каким-то конкретным альтернативам.

Никуда мы не сдвинулись. КОМД реализована в соответсвующей СУБД давным давно. Чтобы сдвинуться, нужно не использовать характеристики типа "ссылка" (жесткое требование). А также не использовать характеристики связи. Вот о чем я говорил. При чем здесь программирование. Никакого значения не имеет программирование. Представляет, конечно, интерес разработка декларативного языка для КОМД. Но мне это не очень интересно. Если попросят, разработаю. Когда на пенсию уйду:)
Блок А.Н.
Пока эти альтернативы мне не кажутся хорошими. При тех многих слабостях SQL, его принципиальных ограничениях, а также при тех конкретных косяках SQL каше и в частности его оптимизатора - это пока что один из самых мощных языков оперирования данными, и у каше SQL есть свои фишки,которых нет в других языках. И совсем не зря SQL так распространен.
Вы думаете, что не зря, а я думаю, что зря:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36906345
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чернышев Андрей ЛеонидовичЧтобы сдвинуться, нужно не использовать характеристики типа "ссылка" (жесткое требование). А также не использовать характеристики связи. Но в том же, уже упоминавшемся КОМД продукте, это можно делать уже сейчас. Вместо ссылки всегда использовать связь, а связь с характеристиками это просто скрытый (не выделенный разработчиком, то ли из лени, то ли по другим причинам) объект?

Если честно, меня больше заинтересовал вопрос с наследованием. Например, для объекта "Продукт" или "Изделие" (скажем, система управления производством завода радиотехники), свойств будет намного больше чем 400. И связей... Триггера для такого объекта написать и поддерживать - задача не из приятных.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36906564
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОтличный вопрос! В РМД (на отношениях без связей между объектами) проектировать безошибочней, чем в КОМД (на объектах и связях)? Интересная идея давайте ее обсудим:) Но получать характеристики объекта (атрибуты отношения), и выполнять другие операции такого рода все равно ведь нужно...У вас это, похоже, вопрос религиозный: пусть сложно, неудобно, трудоемко, провоцирует ошибки, но зато ПРАВИЛЬНО!

А на мой взгляд правильно то что просто, удобно, гибко, быстро пишется и быстро выполняется, легко отлаживается, дает большие возможности (не зажато конкретным фреймворком) и другие плюшки.
Так вот, с этой точки зрения, у вас все ОЧЕНЬ плохо. И вы не торопитесь доказывать, что это не так, предпочитая вместо этого доказывать, что у всех все плохо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36906756
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н., Ты чего бучу поднял?
Каши переел, на сиквел захотелось? =)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908024
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и не понял, каким образом модель, о которой шла речь, является "классической". Термина "КОМД" не нашел не только на sql.ru, но и в И-нете в целом. Если брать известные классы моделей:
- ER. Это, правда, концептуальный уровень, но Бредятина как раз постулирует сближение концептуального и логического уровней. ER-модель богаче "КОМД", в частности, допустимы связи "многие ко многим и ко многим", а также связи могут иметь свойства.
- ООБД, ODMG ~ хранимость объектов ОО-языков программирования. Тоже не то. Между прочим, в списке ООСУБД на первом месте значится Cache' (удачно имя придумали :)
- ОРБД - объектные расширения РМД (пользовательские типы данных, наследование, etc) - тоже не то.
Хотелось бы увидеть ссылочку на любые материалы по "КОМД", коль скоро ведутся работы по ее формализации и развитию.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908584
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint
Но в том же, уже упоминавшемся КОМД продукте, это можно делать уже сейчас. Вместо ссылки всегда использовать связь, а связь с характеристиками это просто скрытый (не выделенный разработчиком, то ли из лени, то ли по другим причинам) объект?

Меня больше волнует чистота модели, чем реализация. Сочетание ссылок с характеристиками связи приводит к недоразумению - например, что такое ссылка среди характеристик связи:)
Лени никакой не было. Начальный вариант модели предполагал (с определенным обоснованием) и ссылки, и характеристики связи.
doublefint
Если честно, меня больше заинтересовал вопрос с наследованием. Например, для объекта "Продукт" или "Изделие" (скажем, система управления производством завода радиотехники), свойств будет намного больше чем 400. И связей... Триггера для такого объекта написать и поддерживать - задача не из приятных.
Я не считаю, что наследование продуманная идея. В КОМД, как и в РМД, нет наследования. И в иерархической модели, как ни странно, тоже нет. Эта идея ООП заимствована из биологии. Когда-то на форуме мы это обсуждали довольно подробно, насколько я помню. Все существующие реализации приводят к утрате гибкости. Но, раз это интересно, я, пожалуй, вернусь к этой проблематике, и подумаю можно ли идею "наследования" доработать и естественным образом интегрировать в КОМД. Сейчас вот пытаюсь убедить реализовать классификаторы, как тип характеристики (не случайно это повторил, так как определенная связь явно прослеживается:))
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908590
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.У вас это, похоже, вопрос религиозный: пусть сложно, неудобно, трудоемко, провоцирует ошибки, но зато ПРАВИЛЬНО!

Оригинальный код на SQL, ничего не скажешь:) Но я примерно так себе это и представлял:)
Блок А.Н.
А на мой взгляд правильно то что просто, удобно, гибко, быстро пишется и быстро выполняется, легко отлаживается, дает большие возможности (не зажато конкретным фреймворком) и другие плюшки.

Это, как я понимаю про сто field, и сто val с контролем правильности порядка с помощью органов зрения:) Я так и знал.
Блок А.Н.
Так вот, с этой точки зрения, у вас все ОЧЕНЬ плохо. И вы не торопитесь доказывать, что это не так, предпочитая вместо этого доказывать, что у всех все плохо.
То я что-то у Вас рекламирую, то доказываю:) Мне этого ничего не нужно, так как Вы даже не представляете насколько у меня все хорошо:) И мне хорошо знакома природа Вашего нежелания обсуждать что-то по существу...
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908600
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаМеня больше волнует чистота модели, чем реализация
Если у вас есть чудесный "чистый", "правильный" план дома, в котором после реализации невозможно будет жить - в топку таких "архитекторов". Модель не нужна ни для чего, кроме реализации, она должна помогать, защищать от ошибок, а не мешать.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908608
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovТак и не понял, каким образом модель, о которой шла речь, является "классической". Термина "КОМД" не нашел не только на sql.ru, но и в И-нете в целом.

А зачем мы отвлеклись от сути обсуждаемых вопросов?
Да, я ввел этот термин. Нормальный термин, отражающий суть. Чтобы, с одной стороны, не путать с моделями, корни которых в ООП, а, с другой, проследить определенную связь с объекто-ориентированными сетевой и иерархической моделями (которые достаточно классические:))
Alexey Maslov
Если брать известные классы моделей:
- ER. Это, правда, концептуальный уровень, но Бредятина как раз постулирует сближение концептуального и логического уровней. ER-модель богаче "КОМД", в частности, допустимы связи "многие ко многим и ко многим", а также связи могут иметь свойства.

Связи "многие ко многим и ко многим" - никакие не связи, а у связей в КОМД тоже есть характеристики ("свойство" - неудачный термин, так как это объективная особенность объекта, которая не может непосредственно наблюдаться). И я, как раз объясняю, что это не корректно.
Alexey Maslov
- ООБД, ODMG ~ хранимость объектов ОО-языков программирования. Тоже не то. Между прочим, в списке ООСУБД на первом месте значится Cache' (удачно имя придумали :)
- ОРБД - объектные расширения РМД (пользовательские типы данных, наследование, etc) - тоже не то.

Да, я и объяснял что ООП к теории БД никакого отношения не имеет.
Alexey Maslov
Хотелось бы увидеть ссылочку на любые материалы по "КОМД", коль скоро ведутся работы по ее формализации и развитию.
Ссылочки мне неизвестны. А материалы свои при случае вышлю:) Кстати на медсофте говорил сотрудникам СП АРМ о планируемом большом проекте, визитку свою оставил... Так что где-то у Вас должны быть контакты:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908612
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Если у вас есть чудесный "чистый", "правильный" план дома, в котором после реализации невозможно будет жить - в топку таких "архитекторов". Модель не нужна ни для чего, кроме реализации, она должна помогать, защищать от ошибок, а не мешать.
Значит план не чудесный и не правильный. Вы окончательно себя запутали:) Лучше бы код на SQL написали, который по Вашим словам, очень красиво получает характеристики экземпляра:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908776
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бред, назвав свою модель Классической, вы слукавили, а это форма лжи.
Она не является классической, но любой, кто с вами не согласен - о ужас! он же спорит и опровергает саму Классику! Честнее ее назвать БОМД (Б - это ваш ник).

Согласно вашей логике.
Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> плохая модель данных.
Резюмируя,
Очень чистая и правильная модель данных -> плохая модель данных.

В каше есть класс %ResultSet.SQL, которая любой SQL превращает в объект-курсор, причем поля этого объекта соответсвуют полям запроса. Но если вам хочется работать с переменными не по именам, а по номерам, то там и это есть.
Заметьте, в запросе можно сделать сложную выборку из нескольких таблиц, а не ползать по объектам и атрибутам как вы, причем каше само учитывает индексы (оптимизация)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908777
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, опечатался во втором абзаце. Правильно:

Согласно вашей логике.
Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> неудобная и плохая реализация ->плохая модель данных.
Резюмируя: очень чистая и правильная модель данных -> плохая модель данных.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36908822
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Честнее ее назвать БОМД (Б - это ваш ник).
Вернее, ЧОМД. Вы же не Ленин, чтобы псевдонимом называть ваши идеи ;-)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36909634
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылочки мне неизвестны.Андрей Леонидович, Вы принципиально не хотите публиковать ваши материалы?А материалы свои при случае вышлю:)Отпишусь обязательно, как только будет немного времени. Спасибо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36909737
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov, вам А.Л. выслал что-то?
Если да, сделайте доброе дело, перешлите на мое мыло (в профиле)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36909777
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, пока не выслал. Это я заранее спасибо сказал :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910305
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаА материалы свои при случае вышлю:) Кстати на медсофте говорил сотрудникам СП АРМ о планируемом большом проекте, визитку свою оставил... Так что где-то у Вас должны быть контакты:)Может быть, поступим проще: моё мыло в профиле, с удовольствием получу от Вас материалы :)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910416
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Бред, назвав свою модель Классической, вы слукавили, а это форма лжи. Она не является классической, но любой, кто с вами не согласен - о ужас! он же спорит и опровергает саму Классику! Честнее ее назвать БОМД (Б - это ваш ник).Согласно вашей логике.Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> плохая модель данных. Резюмируя, Очень чистая и правильная модель данных -> плохая модель данных. В каше есть класс %ResultSet.SQL, которая любой SQL превращает в объект-курсор, причем поля этого объекта соответсвуют полям запроса. Но если вам хочется работать с переменными не по именам, а по номерам, то там и это есть.Заметьте, в запросе можно сделать сложную выборку из нескольких таблиц, а не ползать по объектам и атрибутам как вы, причем каше само учитывает индексы (оптимизация)
:) в Cache и много других классов есть. Однако они не помогают Вам написать обещанный красивый код. Поэтому (!) я лжец. Очень логично:)
Что же Вы так переживаете из-за простого непонимания чего-то нового для Вас, но при этом именно классического?:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910419
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Ой, опечатался во втором абзаце. Правильно:Согласно вашей логике.Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> неудобная и плохая реализация ->плохая модель данных. Резюмируя: очень чистая и правильная модель данных -> плохая модель данных.
Это вы про реализацию "связей" в РМД? Как-то очень витиевато, не совсем понял Вашу мысль:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910421
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Блок А.Н.Честнее ее назвать БОМД (Б - это ваш ник).Вернее, ЧОМД. Вы же не Ленин, чтобы псевдонимом называть ваши идеи ;-)
При чем здесь курсор???
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910425
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovСсылочки мне неизвестны.Андрей Леонидович, Вы принципиально не хотите публиковать ваши материалы?А материалы свои при случае вышлю:)Отпишусь обязательно, как только будет немного времени. Спасибо.
Не очень принципиально. Просто не интересно пока. Вам вышлю свод того, что здесь объяснял. С примерами и т.п.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910428
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovНет, пока не выслал. Это я заранее спасибо сказал :)
А это и нельзя никому пересылать)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910432
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovБредятинаА материалы свои при случае вышлю:) Кстати на медсофте говорил сотрудникам СП АРМ о планируемом большом проекте, визитку свою оставил... Так что где-то у Вас должны быть контакты:)Может быть, поступим проще: моё мыло в профиле, с удовольствием получу от Вас материалы :)
Может быть. Пришлю что-нибудь, когда появится время. Наверное после софттула.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910504
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто вы про реализацию "связей" в РМД? Типа отшутились? Ну ладно.

авторА это и нельзя никому пересылать) Вот. Такая Секретная МД. Зато Классическая.

Вам показать, как в динамическом SQL взять поля запроса? Я могу, конечно, нарисовать пример.
Классы %ResultSet.SQL или %Library.Resultset (немного различаются). Мне казалось, вы справитесь :-)
Я ленивый, пример писать неохота, он и в документации есть. Тем более, конечно же, вы и так понимаете что я напишу. У вас заготовлен джокер в рукаве, чтобы то, что я напишу, обозвать неудобным и извращенным способом работы, ага? Мож сразу перейдем к этому этапу?

-----------------------------------------------------------------------------------------------
Андрей Леонидович, вам не кажется, что без конкретики мы разводим Просто Треп в проффоруме?
Если у вас есть оформленная теория, то опубликуйте на каком-нибудь ресурсе (бесплатном) в цельном виде. Причем не только голые модели, но и примеры работы. Обоснуйте, почему она лучше.
Не в религиозном стиле, "связи не должны иметь атрибутов потому что они связи".
А именно, как в дальнейшем нарушении "чистоты модели" отражается на практике. Что мы теряем и что получаем? Какую замену SQL вы предлагате и почему считаете его таким плохим? (пока получается, что у вас плохая МД, с которой не получается работать через SQL).
Пока я только слышал от вас, что реализация вас не интересует. Но здесь форум практиков, нас в большинстве случаев интересует как раз результат.

Обещаете?
А то это можно продолжать вечно: вы будете как пророк обличать нас погрязших в неправильных моделях данных и запятнавших себя работой с SQL, я буду требовать у вас альтернативу, вы выворачиваться и подкалывать меня, я буду в ответ пытаться подколоть вас. Это можно продолжать вечно с нулевым результатом. Переходим на конструктивный разговор?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910584
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
al-velievУв. Alexey Maslov,
вот ответ от FNFIS:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Check out the GT.M provided functions provided by calliing out to C
(Programmers Guide at http://www.fidelityinfoservices.com/user_documentation/GTM-PG-UNIX44/...
and look at the functions hiber_start, hiber_start_wait_any,
start_timer and cancel_timer).  But also remember that unless you are
running a real time Linux kernel, you may not get the timing accuracy
you want (there is an important difference between resolution and
accuracy).

Regards
-- Bhaskar
ks dot bhaskar at fnis dot com <-- send e-mail here
Т.е. на момент в GT.M есть решение данного вопроса с привлечением API. Что будет дальше - время покажет. А ув. Е.Каратаев не будет против внедрить такую "фичу" в свой miniM в будущем? На M_RU я встечал Вашу фамилию и потому осмеливаюсь предположить, что если Вы не против, то может быть, предложите там такое нововведение, хотя бы до 0.1 сек? Мне это сделать несколько неудобно, т.к. я не уверен, что смогу этот miniМ запустить в Linux и получится, что предложение делает "вдруг откуда ни возьмись" и неизвестно зачем да ещё не видевший продукта в глаза.
Ребята а по какому адресу вы посылали им свои предложения?
Я хочу свои предложения им то же послать.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910685
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_sharА ув. Е.Каратаев не будет против внедрить такую "фичу" в свой miniM в будущем?
В MiniM время таймаутов в секундах, это единица измерения. А точность - миллисекунды.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910751
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Секретная МД. Зато Классическая.

Я свой труд уважаю. Что в этом плохого. Могут ведь и реализовать. Но не полноценно. Вот РМД вообще не удалось реализовать. Мне такой путь не интересен:)
Блок А.Н.
Вам показать, как в динамическом SQL взять поля запроса? Я могу, конечно, нарисовать пример.
Классы %ResultSet.SQL или %Library.Resultset (немного различаются). Мне казалось, вы справитесь :-)
Я ленивый, пример писать неохота, он и в документации есть. Тем более, конечно же, вы и так понимаете что я напишу. У вас заготовлен джокер в рукаве, чтобы то, что я напишу, обозвать неудобным и извращенным способом работы, ага? Мож сразу перейдем к этому этапу?

Нет. Меня интересует объективный результат. Если на SQL будет удобнее, короче, производительнее, я это несомненно признаю. Так что пишите извлечение характеристик экземпляра. Я понятия не имею как это будет написано. Помню только, что "очень красиво":)
Блок А.Н.
Андрей Леонидович, вам не кажется, что без конкретики мы разводим Просто Треп в проффоруме?

Вы разводите, уже не первый день. Я исключительно конкретен.
Блок А.Н.
Если у вас есть оформленная теория, то опубликуйте на каком-нибудь ресурсе (бесплатном) в цельном виде. Причем не только голые модели, но и примеры работы. Обоснуйте, почему она лучше.

Очень конкретно обосновываю. Лучше - это мягко говоря.
Блок А.Н.
Не в религиозном стиле, "связи не должны иметь атрибутов потому что они связи".

У связей просто нет характеристик. Независимо от моего желания:) Вы просто не понимаете что такое связь. Это не объект. Связь нельзя представить отдельным отношением или отдельным классом. Но Вы не хотите обсуждать этот вопрос по существу. Вот Алексей Маслов начал обсуждать, но на выходные ушел подумать... И не вернулся (я имею в виду с этим вопросом).
Блок А.Н.
А именно, как в дальнейшем нарушении "чистоты модели" отражается на практике. Что мы теряем и что получаем? Какую замену SQL вы предлагате и почему считаете его таким плохим? (пока получается, что у вас плохая МД, с которой не получается работать через SQL).
Пока я только слышал от вас, что реализация вас не интересует. Но здесь форум практиков, нас в большинстве случаев интересует как раз результат.

Я очень конкретно все объясняю по каждому направлению. Но Вас конкретика совершенно не интересует:)
Вас интересует только то, что "работает через SQL". Но написать простой код на SQL Вы не можете. Ничего себе - практики:)
Блок А.Н.
Обещаете?

Конечно! Я не дам Вам увести разговор от получения характеристик экземпляра.
Блок А.Н.
Переходим на конструктивный разговор?
А как же!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36910966
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМогут ведь и реализовать.
Ну вот, значит ваша СУБД еще не реализована. Мало того, вы БОИТЕСЬ, что ее кто-то реализаует
А ведь это очень важный момент, причем в прошлый раз, когда я вас спросил про реализации, вы указали мне на X-Magic, и упомянули, что он не единственный. (Кстати, X-maqic не скачался)

авторУ связей просто нет характеристик. Независимо от моего желания:)
Угу. Бог един и он на небе. Независимо от того, понимаете вы это, дикари, или нет.
Я совсем не против того, что связи не имеют характеристик. Я против вашей аргументации - она просто никакая. "Вы просто дураки" - это не аргументация.

авторА как же!
Ой, че-то даже не верится

Нарисую, лень придумывать модель.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36911085
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы обсуждаем Новое Платье Короля ?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36911398
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне тяжело собирать истину по крупицам, и хотелось бы прочесть некий связный текст. Иначе возникает ощущение (возможно, ложное) внутренней противоречивости этих крупиц:Бредятина: 9637593Связи "многие ко многим и ко многим" - никакие не связи, а у связей в КОМД тоже есть характеристики Бредятина: 9645145У связей просто нет характеристик. Независимо от моего желания:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36911420
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имелось в виду, конечно, "взаимной противоречивости".
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36912927
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Ну вот, значит ваша СУБД еще не реализована. Мало того, вы БОИТЕСЬ, что ее кто-то реализаует

Не СУБД, а КОМД.
Не моя, и давно реализована (и Вы это знаете).
Боюсь, что не корректно реализуют следующий релиз. Конечно!
О причинах откровенной неправды, которую Вы постоянно пишите я напишу в конце:)
Блок А.Н.
А ведь это очень важный момент, причем в прошлый раз, когда я вас спросил про реализации, вы указали мне на X-Magic, и упомянули, что он не единственный. (Кстати, X-maqic не скачался).

Так реализована или нет, вы уж разберитесь наконец:) И зачем Вы мне пишите про продукт, принадлежащий компании, в которой я не работаю? Не скачался и не скачался:)
Блок А.Н.
Угу. Бог един и он на небе. Независимо от того, понимаете вы это, дикари, или нет.
Я совсем не против того, что связи не имеют характеристик. Я против вашей аргументации - она просто никакая. "Вы просто дураки" - это не аргументация.

Совершенно очевидно, что это Ваша аргументация, а не моя.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36912934
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovМне тяжело собирать истину по крупицам, и хотелось бы прочесть некий связный текст. Иначе возникает ощущение (возможно, ложное) внутренней противоречивости этих крупиц:Бредятина: 9637593Связи "многие ко многим и ко многим" - никакие не связи, а у связей в КОМД тоже есть характеристики Бредятина: 9645145У связей просто нет характеристик. Независимо от моего желания:)
Не честно, мне кажется.
В текущей реализации КОМД у связей есть характеристики.
Я говорю, что это не корректно. Объясняю. А Вы опять какие-то "противоречия" выискиваете:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36912969
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
Ой, че-то даже не верится

Так вот о фундаментальной причине Вашего непонимания.
Зачем поставлена цель соединить воедино концептуальный и логический уровень? Это же не самоцель. Это делается, среди прочего, для того, чтобы не программировать приложения. То есть, мы в разных мирах "живем". Вы в мире "программирования приложений", а я - в мире "не программирования приложений":) Вы уделяете первостепенное внимание программированию, языкам, парадигмам программирования, и добиваетесь от меня решения каких-то Ваших проблем связанных с "практикой программирования". И я совершенно искренне говорю, что меня Ваш мир не интересует:) А Вас, насколько я понимаю, мой мир не интересует, потому что он не коммерческий и в нем скучно:) Так что я не вижу никаких перспектив для взаимопонимания. Я не знаю что должно произойти, чтобы меня вдруг заитересовало программирование приложений:)
Остается программирование, которое все еще необходимо, так как не все ОЦ и правила можно просто описать. Например, программирование триггеров. Мне не нужен декларативный (SQL-подобный) язык для программирования триггеров.
И Вам, видимо, тоже:) Во всяком случае элементарный ("очень красивый") код Вы так и не смогли написать. А я сначала думал, что не захотели:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913030
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В текущей реализации КОМД у связей есть характеристики. Я говорю, что это не корректноТогда уж как-то отличайте их, "реальную" и "идеальную" КОМД, а то по контексту не всегда понятно.
Все больше убеждаюсь в бесполезности продолжения обсуждения без предварительного прочтения некоего связного текста.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913050
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Все больше убеждаюсь в бесполезности продолжения обсуждения без предварительного прочтения некоего связного текста.
Вряд ли поможет:) Разве работы Кодда, Чена, Дейта не содержат некий связный текст? Однако, этого явно недостаточно, чтобы здесь их обсуждать. Здесь очень легко "не услышать", "не понять"... Вот коды здесь нормально обсуждать. А идеи не получается, как бы ясно они не формулировались:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913088
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве работы Кодда, Чена, Дейта не содержат некий связный текст?Еще бы! Но я (если помните) с Чена и начал, перечитав (по Вашей наводке) соответствующую главу у Дейта. Ходить по кругу, думаю, не стоит.
По-видимому, я не достаточно продвинут, чтобы оценить Ваши "[нео]классические" идеи. Буду доучиваться по мере сил. Спасибо!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913095
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Ходить по кругу, думаю, не стоит...
Спасибо!
И Вам спасибо.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913182
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. ваш мир не коммерческий? Почему?
В нем невозможно создать нужные людям приложения?
В нем приложения создаваться сами и программисты будут не нужны? (ха-ха!)
Это экспериментальное программирование, не готовое к стадии промышленной эксплуатации?
Принимаю любой вариант, либо давайте свой. Меня раздражает гадать, а вы информацию даете не по крупицам, а половине крупицы.
А когда вас в этом упрекают - делаете круглые глаза.

Кстати, то, что мы пришли к этому, уже хорошо. И, кстати, как-бы некрасиво клеймить коммерческое программирование, если у вас нет альтернативы.

авторИ я совершенно искренне говорю, что меня Ваш мир не интересуетНе жульничайте, у нас все ходы записаны!

авторА Вас, насколько я понимаю, мой мир не интересует Угу, вот из желания поперепираться вот тут уже две недели пытаюсь что-то добиться от вас.
Пока добился только "У связей нет аттрибутов". Маловато как-то. На серьезную теорию не тянет.

автор Вы так и не смогли написать Дался вам мой пример. Говорю же, банально лень. Тем более, я все равно никаких открытий не делаю, имею ввиду самый банальный пример.
Вот кусочек модели, тут нет областей, квартир и т .д. Классы просто набросок, я не проверял, наверняка ошибки синтаксиса будут.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Class Address.City Extends %Persistent
{ Property Name as %String;
}
Class Address.Street Extends %Persistent
{Property City as Address.City;
 Property Name as %String;
}
Class Address.House Extends %Persistent
{Property Street as Address.Street
 Property Num as %String;
}
///задача получить адрес в виде город улица дом. 
s houseid= 1 
///через EmbedSQL
&sql(select string(street->city->name,' ',street->name,' ',Num) into :address from Address.House where id=:houseid)
w address
/// Через DynamicSQL, раз вам не нравится ESQL, используя имена. Правда для выбора одной строки DSQL не так удобен
/// Зато он предоставляет по сути объектный доступ. если в select-листе будут ссылки на объекты, то потом с ними можно будет работать как с объектами.
s rs=##class(%ResultSet.SQL).%Prepare("select string(street->city->name,' ',street->name,' ',Num) as Address from Address.House where id=?",,,houseid)
d rs.%Next()
w rs.Address
///Чистый объектный доступ
s obj=##class(Address.EHouse)
w obj.Street.City.Name_" "_obj.Street.Name_" "_obj.Numer
Можно увидеть, как этот просто пример будет выглядеть в вашей субд?
Надеюсь, она не настолько "некоммерческая", что в ней этого сделать нельзя?
Ну если ее не существует, то обрисуйте, как это будет выглядеть?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913479
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Т.е. ваш мир не коммерческий? Почему?

Потому что я не коммерсант. Я стремлюсь получить объективный результат, а не коммерческий. Но я вовсе не спорю с американской формулой: 1 доллар тому, кто придумал, 10 долларов тому, кто сделал, 1000 долларов тому, кто продал.
Блок А.Н.
В нем невозможно создать нужные людям приложения?

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

Не сами. Но программисты будут не нужны.
Блок А.Н.
Это экспериментальное программирование, не готовое к стадии промышленной эксплуатации?

Давно эксплуатируется. Круглосуточно. И Вы это знаете. А чего это Вас так нервирует?:)
Блок А.Н.
Принимаю любой вариант, либо давайте свой. Меня раздражает гадать, а вы информацию даете не по крупицам, а половине крупицы.

Не сочиняйте. Я всегда очень тщательно и развернуто отвечаю на все вопросы. А вот Вы, как только я пошел Вам на встречу в области "программирования", отказались написать код на SQL.
Блок А.Н.
А когда вас в этом упрекают - делаете круглые глаза.

Меня не в чем упрекнуть, приходится говорить неправду. Мне искренне Вас жаль:)
Блок А.Н.
Кстати, то, что мы пришли к этому, уже хорошо. И, кстати, как-бы некрасиво клеймить коммерческое программирование, если у вас нет альтернативы.

Опять неправда. Я стремлюсь к созданию приложений с минимальным программированием. И никакое "коммерческое программирование" никак не клеймю:) Я очень рад за Вас, что все так хорошо с "коммерческим программированием":)
Блок А.Н.
Не жульничайте, у нас все ходы записаны!

Это Вы постоянно жульничаете. И мне ничего не нужно записывать. У меня все еще очень хорошая память:)
Блок А.Н.
Угу, вот из желания поперепираться вот тут уже две недели пытаюсь что-то добиться от вас.
Пока добился только "У связей нет аттрибутов". Маловато как-то. На серьезную теорию не тянет.

Опять неправда. Читайте мои сообщения до периода, когда выяснились (для Вас) непреодолимые проблемы в программировании на SQL. И Вы перешли на абсолютно беспредметный спор сам с собой:)
Блок А.Н.
Дался вам мой пример. Говорю же, банально лень. Тем более, я все равно никаких открытий не делаю, имею ввиду самый банальный пример.

Опять неправда - это мой пример. Пожалуйста, напишите на SQL извлечение из БД всех характеристик экземпляра объекта.
Блок А.Н.
Вот кусочек модели, тут нет областей, квартир и т .д. Классы просто набросок, я не проверял, наверняка ошибки синтаксиса будут.
///задача получить адрес в виде город улица дом.

Это в Вашем мире может быть такая задача:) Поскольку "адрес" - это стабильно требуемая "сущность", то это не задача, а просто вычисляемая характеристика объекта.
Причем я бы ее добавил для всех подчиненных объектов, а не только для дома (сохраняя схему данных из Вашего примера). То есть, я бы и в объекте H Дом сделал бы характеристику 2 Адрес дома (тип 8), и в объекте S Улица сделал бы характеристику 2 Адрес улицы (тип 8). Впрочем, и в объекте T Город тоже, чтобы страну показать:) А формула для этих характеристик тривиальная:

q функция извлечения значения характеристики [например, 2 Адрес улицы], внутри которой функция извлечения первого (и единственного, так как связь 1:1) экземпляра объекта Х [например, улицы], связанного с данным экземпляром объекта Y [например, дома]_функция извлечения значения характеристики [например, 1 Номер дома]

И у Вас по русски только комментарии в программе для самого себя, а у меня готовое приложение:)

Блок А.Н.
Можно увидеть, как этот просто пример будет выглядеть в вашей субд?
Надеюсь, она не настолько "некоммерческая", что в ней этого сделать нельзя?
Ну если ее не существует, то обрисуйте, как это будет выглядеть?
Ну Вы же сказали, что не можете скачать:) Это будет именно выглядеть. Для пользователя, а не для программиста.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913493
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
///Чистый объектный доступ
...
w obj.Street.City.Name_" "_obj.Street.Name_" "_obj.Numer

Это плохой код:) Нет идентификаторов связей. Они что интеллектуально выбираются Cache?:) Что будет написано, если между Городом и Улицей две связи с разной семантикой?:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36913640
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы цепляетесь к каждому слову, и каждое слово передергиваете и перевираете.
И именно это меня нервирует. Причем перевираете свои же слова, у вас серое становится или белым или черным в зависимости от того, как вам удобно. По примеру x-magic, то вы от нее полностью откзываетесь и говорите что не имеете к ней никакого отношения, то говорите, что она именно то, о чем вы говорите.

Уж если вы в этом разбираетесь, то могли бы заметить, что у меня атрибуты, никаких связей. Так что все у меня корректно. А что на английском - так у меня русские языки программирования вызывают тошнотный приступ. Сильно уж уродливо выглядит русский в качестве языка программирования.

Да, и я от вас устал, доказывайте сами себе.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36914833
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Да, и я от вас устал, доказывайте сами себе.
Слова не мальчика, однако... Жаль лишь,что Вам понадобилось для этого 17(!) страниц ;)
Я съехал тогда, когда, перезарегистрировав логин "Бред" увидел не замену "р" на "р" (я про раскладку), а банальное "Бредятина"... я провоцировал - а чел ответил скукотой... а ДОЛЖНО БЫТЬ ИНТЕРЕСНО И ВЕСЕЛО!!!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36915136
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Вы цепляетесь к каждому слову, и каждое слово передергиваете и перевираете.
И именно это меня нервирует. Причем перевираете свои же слова, у вас серое становится или белым или черным в зависимости от того, как вам удобно. По примеру x-magic, то вы от нее полностью откзываетесь и говорите что не имеете к ней никакого отношения, то говорите, что она именно то, о чем вы говорите.

Уж если вы в этом разбираетесь, то могли бы заметить, что у меня атрибуты, никаких связей. Так что все у меня корректно. А что на английском - так у меня русские языки программирования вызывают тошнотный приступ. Сильно уж уродливо выглядит русский в качестве языка программирования.

Да, и я от вас устал, доказывайте сами себе.
Это нормально:) Что русский сильно уродливо выглядит при именовании объектов и характеристик:) Я и не сомневался, что приведенный Вами пример заведет Вас в тупик, как и "красивый код на SQL" завел чуть раньше. Всего хорошего!
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36915144
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov
Слова не мальчика, однако... Жаль лишь,что Вам понадобилось для этого 17(!) страниц ;)
Я съехал тогда, когда, перезарегистрировав логин "Бред" увидел не замену "р" на "р" (я про раскладку), а банальное "Бредятина"... я провоцировал - а чел ответил скукотой... а ДОЛЖНО БЫТЬ ИНТЕРЕСНО И ВЕСЕЛО!!!
Бред появился как официальный ник. А когда я зарегистрировался под своим именем меня тут же заблокировали. Вы не провоцоровали, а вели себя просто по хамски:) Так как по существу Вам сказать нечего:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36915177
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина Вы не провоцоровали, а вели себя просто по хамски:) Так как по существу Вам сказать нечего:)
В данном случае я скорее не хам, а дятел... в смысле санитар леса ;)
Ваша "слава" впечатляет... У меня бабушка тоже все время искала, кому бы высказать... то у нее помидоры воруют, то в Чечне беспредел... И ее тоже все время "блокировали"... Вот и у Вас - КАМОП, или как там его...
Слегка перефразируя... Если Вы такой умный, чего же не издаётесь? На 200-й, 300-й тысяче экземпляров, глядишь, и я бы заинтересовался ;)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916119
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для интересующихся моделями данных, в целом, и слиянием концептуального и логического уровней, в частности, полезно посмотреть работу Юрия Пергаменцева в этой области в среде "ОР"СУБД Oracle:
http://citforum.ru/seminars/cbd2002/111.shtml
http://citforum.ru/database/articles/udm/
Не достаточно формализованная модель. И в среде "ОР"СУБД (Oracle) существенно сложнее создавать такой инструмент, чем в среде mumps (Cache).
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916125
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov
В данном случае я скорее не хам, а дятел... в смысле санитар леса ;)

Не, банальный хам:) Так как нечего сказать по существу. Это современная такая "тенденция" - необъяснимое раздражение на непонятные идеи. Если мне что-то неопнятно, то значит дело во мне, стараюсь понять изо всех сил:) А не критиковать авторов непонятных идей:)
kolesov
Ваша "слава" впечатляет... У меня бабушка тоже все время искала, кому бы высказать... то у нее помидоры воруют, то в Чечне беспредел... И ее тоже все время "блокировали"... Вот и у Вас - КАМОП, или как там его...

А вот это совсем странно. Пример с объектами "бабушка" и "помидоры" показывает что Вы недостаточно ясно представляете ключей в РМД. Теперь понятно, что у Вас есть определенное затруднение в понимании концепции связи.
kolesov
Слегка перефразируя... Если Вы такой умный, чего же не издаётесь? На 200-й, 300-й тысяче экземпляров, глядишь, и я бы заинтересовался ;)
Нет, не заинтересовался бы. Поэтому и не издаюсь:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916256
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разработчикам для расширения кругозора может быть полезна эта неоднозначная статья, в комментариях к которой не вполне убедительно упоминается и Cache:
http://citforum.ru/gazeta/153/
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916437
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно использует ли кто-нибудь в Cache модель данных Pick, основанную на многозначности? IS это реализовала для того, чтобы те, кто использует Pick, переходили на Cache. Так же, как и те, кто использует "Р"СУБД:)
МД Pick тесно связана, как ни странно, с концепцией связей. Одно из правил проектирования/нормализации в КОМД гласит, что если связь стабильная 1:1 (кстати, в известном примере Кодда связь между окружностью и ее центром М:1), то два объекта можно слить в один. Модель Pick идет дальше, и предлагает сливать два объекта в один и при связи М:1. Пример представления накладной в Pick (в скобках количество значений характеристики объекта):
1 Номер накладной (1)
2 Дата отгрузки (1)
3 Товары (5)
4 Количества (5)
5 Цены (5)
6 Суммы (5)
Это тот случай, когда ссылки были бы оправданы в КОМД, так как характеристика 3 - это множество ссылок. Мы рассматривали возможность реализации многозначности в КОМД в свое время, называя набор характеристик типа 3-6 из примера КОМПЛЕКТОМ. Но отказались по разным причинам. Оставив, конечно, многозначность, но не связную (без комплектов). Для меня главной причиной был отказ от ссылок в принципе.
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916608
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БредятинаПример представления накладной в Pick (в скобках количество значений характеристики объекта):
1 Номер накладной (1)
2 Дата отгрузки (1)
3 Товары (5)
4 Количества (5)
5 Цены (5)
6 Суммы (5)

Интересно, как разберутся с накладной, если количество характеристик разное?
1 Номер накладной (1)
2 Дата отгрузки (1)
3 Товары (5)
4 Количества (8)
5 Цены (7)
6 Суммы (2)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916868
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shu
Интересно, как разберутся с накладной, если количество характеристик разное?
1 Номер накладной (1)
2 Дата отгрузки (1)
3 Товары (5)
4 Количества (8)
5 Цены (7)
6 Суммы (2)
Оно не может быть разным В ДАННОМ ПРИМЕРЕ - ведь это просто количество экземпляров объекта B (Операции отгрузки), которые в "однозначных" моделях связаны с данным экземпляром объекта A (Накладная). Могут быть лишь пустые значения характеристик для каких-то экземпляров.
Но вопрос, в целом, правильный. Предположим, что у нас есть еще один объект "Отгрузка партий", экземпляры которого связаны М:1 с "Операция отгрузки". В модели Pick уровни могут владываться (за счет еще одного разделителя). Но если мы попробуем это сделать в этом примере, то возникнет Ваш вопрос, так как количество отгруженных партий у каждого товара может быть разным.
Насколько я помню (больше 20 лет назад изучал Pick) какое-то ограничение на количество уровней (разделителей), конечно, есть. Но это не выглядит так нелепо, как, например, ограничение на число характеристик при многоуровневой сортировке в некоторых программных продуктах. Или на число характеристик объекта:)
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916915
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pick это тоже самое, что Multivalue.
Из одной кучи?
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36916952
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Pick это тоже самое, что Multivalue.
Из одной кучи?
Да. Просто Pick - это фамилия разработчика.
http://theunityparty.org/company/history.htm
...
Рейтинг: 0 / 0
Что же главное в Cache?
    #36917589
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джон Расин, комментарии к статье http://citforum.ru/gazeta/153/ Хотя для многозначных систем написано намного больше приложений, чем для любых других СУБД (некоторые из них существуют с 1960-х гг. и до сих пор используются), в большинстве этих систем поддерживаются старомодные пользовательские интерфейсы, и переделка этих интерфейсов стоит настолько дорого, что многие из этих систем потихоньку забрасываются.
...
Для тех, кто не знаком с Pick/MultiValue. Эта категория систем является сегодня одной из наиболее распространенных в мире.
...
На Pick базируются системы основных банков США.Как это (увы) до боли знакомо.
...
Рейтинг: 0 / 0
418 сообщений из 418, показаны все 17 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Что же главное в Cache?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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