Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Хочется поинтересоваться у многоуважаемых приверженцев Cache. Насколько я понял, Cache хранит данные в виде сложной структуры, отражающей понятие MUMPS-глобальных переменных и позволяет иметь к этим данным доступ через несколько интерфейсов - иерархический доступ (реализованный в MUMPS), SQL-доступ, объектный доступ. Хочется узнать, а что из этого и в каких случаях реально применяется в сколько-нибудь масштабных приложениях? Т.е. понятно, что если я пишу разовую выборку, то в зависимости от конкретной задачи самой удобной может оказатьбся каждая из перечисленных моделей. Но вот представим себе, что мы пишем приложение побольше - требования к таким приложениям часто меняются в процессе разработки и эксплуатации - соответственно, структуру базы приходится несколько менять, а запросы к ней подкручивать для соответствия новой структуре. Какой из трех способов доступа оказывается наиболее подходящим для приложений с такой спецификой? Вот например, из способа решения задачи о самолетах /topic/54920&pg=12#2406070 следует, что даже приделывание простого индекса к базе требует весьма существенной переработки MUMPS-программы. А как с этим обстоит дело в других случаях? Какие еще типичиные особенности приложений бывают, от которых зависит выбор одной из трех моделей? Какие примеры выбора одного из способов доступа или какой-то их комбинации в реальных системах вы можете привести? Интересно было бы также узнать, почему эти методы используются в этих системах - к примеру то, что некоторая больница в США использует MUMPS может означать как то, что MUMPS был признан лучшим решением, так и то, что эту больницу компьютеризовали в 70-е годы и с тех пор она не изменила используемые технологии... Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 13:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey GladilinХочется узнать, а что из этого и в каких случаях реально применяется в сколько-нибудь масштабных приложениях? следует, что даже приделывание простого индекса к базе требует весьма существенной переработки MUMPS-программы. В случаях когда предполагается что приложение будет меняться это обстоятельство учитывают и пишут себе небольшой нижний уровень. Большинство индексных структур допускают их использование в различных задачах. Поэтому сначала разработчик подумает, использовать ли специализированные индексы применимые в малом числе задач но работающие быстрее или более общие структуры и несколько функций-операций над индексами но работающие чуть медленнее. Потом проведет макетирование подходит ли выбранный метод под предъявленные требования по времени работы. Чем больше система тем обычно по структуре она ближе к таблицам похожим на sql таблицы. В SQL есть чисто языковые ограничения, например нельзя строить индекс не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса. Поэтому обычно ни SQL ни объекты в полной мере разработчиков не удовлетворяют. SQL и объектный доступ в каше реализованы на mumps. Это вроде описанных выше библиотек. Если в объектном доступе пишут в объектном синтаксисе, то в sql доступе пишут (так называемые) запросы, которые транслируются в те же вызовы нижнего уровня на mumps. В принципе, никто не мешает программисту написать свои библиотеки в своем видении проблемы. В том числе с ведением так называемых метаданных и автоматической корректировкой выполнения. Хоть QBE. Можно также написать свои классы которые будут реализовать свои стратегии хранения. Однозначного ответа на вопрос "как делают" наверно не смогу дать - в разных системах разработчики могут выбрать разные методы. Иногда проще потратить месяц-другой на свой нижний уровень чем два-три года морочить голову как реализовать эффективно на штатных средствах. Иногда более чем достаточно штатных средств. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 14:21 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Уже интересно ;-) Для начала вопрос насчет того, что "в SQL есть чисто языковые ограничения, например нельзя строить индекс не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса" - наложение индексов на view - это не то, что надо? Далее, насколько я понял основную суть ответа, - Вас не удовлетворяет подход к организации базы данных, заключающийся в использовании непроцедурного языка запросов - вместо этого Вы предпочитаете использовать процедурный язык, позволяющйи на низком уровне высокоэффективно копаться в отдельных данных, находящихся в базе? Тогда сразу вопрос - как соотносится процедурный язык с реализацией "клиент-сервер"? MUMPS-программа, реализующая интерфейс с пользователем, работает на машине клиента. Она сама лазает внутрь файла на сервере, в котором физически лежит база данных, или для этого есть серверная часть приложения? - Если есть серверная часть, то какой используется протокол обмена? - Если идет обращение к файлу, то какой же объем данных передается по сети при сколько-нибудь сложном поиске в базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 15:53 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilinналожение индексов на view - это не то, что надо? Это специфика имплементации. Sergey GladilinДалее, насколько я понял основную суть ответа, - Вас не удовлетворяет подход к организации базы данных, заключающийся в использовании непроцедурного языка запросов - вместо этого Вы предпочитаете использовать процедурный язык, позволяющйи на низком уровне высокоэффективно копаться в отдельных данных, находящихся в базе? Не совсем так. Меня удовлетворяет любой подход решающий задачу в том числе с учетом дальнейших перспектив изменений. А будет результат процедурным или нет - это вторично. Sergey GladilinТогда сразу вопрос - как соотносится процедурный язык с реализацией "клиент-сервер"? MUMPS-программа, реализующая интерфейс с пользователем, работает на машине клиента. Она сама лазает внутрь файла на сервере, в котором физически лежит база данных, или для этого есть серверная часть приложения? - Если есть серверная часть, то какой используется протокол обмена? - Если идет обращение к файлу, то какой же объем данных передается по сети при сколько-нибудь сложном поиске в базе? Нет. То что написано на mumps - это на стороне сервера. Программа не лазает внутрь файла, это делает интерпретатор, когда выполняет обращение к глобалам (то что начинается на ^). База также не обязана лежать на том же сервере где исполняется серверный процесс, данные могут быть там же, на другом сервере или часть там часть здесь (детали зависят от имплементации). Протокол обмена зависит от коннекта и вида клиентского приложения. Можно телнетом, можно вебом, можно частный поверх tcp/ip. Телнет очевидно не будет работать по http, а вебсервис по телнету, логично? Сколько передается по сети - опять же смотря что за приложение. Непример при работе по телнет по сети передаются байты соответствующие нажатию кнопок, а обратно от сервера - эскейп команды. Если это дельфи - клиент, то туда параметры запроса, оттуда - строки в грид например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey GladilinУже интересно ;-) Тогда сразу вопрос - как соотносится процедурный язык с реализацией "клиент-сервер"? MUMPS-программа, реализующая интерфейс с пользователем, работает на машине клиента. Она сама лазает внутрь файла на сервере, в котором физически лежит база данных, или для этого есть серверная часть приложения? - Если есть серверная часть, то какой используется протокол обмена? - Если идет обращение к файлу, то какой же объем данных передается по сети при сколько-нибудь сложном поиске в базе? например - у нас на клиентах нет MUMPS - только EXCEL+VBA (VBA - раз написан и не изменяется - у всех одинаковый) сетевой трафик = только запросы и готовые ответы притом ответы даже без элементов форматирования - одни цифры меньше этого трафика трудно представить все летает - но документы оформлены - красота многоязычно-многооконно-интерактивно автоподстройка перекодировочных таблиц на лету TCP/IP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
В Cache главное то - чего нет у других. Другие это те - с чем пытаются сравнивать Cache. Кстати, сравнивают совершенно безграмотно (с точки зрения Cache). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Это специфика имплементации Поясните, пожалуйста, что имеется в виду. Решает ли наложение индексов на view проблему построения индекса, который "не привязанный ни к одной таблице но по нескольким таблицам и вместо длинных join просто брать данные из индекса" ? Не совсем так. Меня удовлетворяет любой подход решающий задачу в том числе с учетом дальнейших перспектив изменений. А будет результат процедурным или нет - это вторично. Расскажите, пожалуйста, чем, кроме как процедурностью (в смысле возможности и необходимости самому выбирать от какого к какому узлу базы перейти и как таким образом организовать в базе поиск) M-системы отличаются от SQL-систем. База также не обязана лежать на том же сервере где исполняется серверный процесс, данные могут быть там же, на другом сервере или часть там часть здесь (детали зависят от имплементации) Т.е. внутри M-системы таки есть свой фиксированный протокол запросов между MUMPS-интерпретатором и собственно сервером? Можно ли его использовать, если клиент написан на MUMPS? Вопрос и к "ну я" и к MC--ALEX - запросы и ответы, передаваемые по сети, в Вашей системе насколько сложны? Действительно ли разработка своего языка/протокола запросов и ответов имеет преимущества перед использованием стандартного языка вопросов и ответов SQL? Сразу хотел бы также задать вопрос про производительность. Вот здесь: /topic/54920&pg=3#396080 "ну я" предлагает задачу, демонстрирующую случай, когда M-системы имеют значительное преимущество в производительности перед SQL. В ответах в той ветке я так и не нашел объяснений, почему это происходит. Можете ли Вы рассказать, каким образом в данной задаче можно организовать хранение данных в MUMPS и каким образом организуется поиск в этой структуре данных для обеспечения указанной производительности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
AlexKBВ Cache главное то - чего нет у других. Другие это те - с чем пытаются сравнивать Cache. Кстати, сравнивают совершенно безграмотно (с точки зрения Cache). Т.е. я неправ, считая наличие прямого доступа к иерархической структуре данных в базе основным отличием Cache от других систем? Расскажите, пожалуйста, какие отличия я забыл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Работая более 16 лет с М-технологией (MUMPS->Cache), мне до сих пор трудно сказать - что же в этой технологии является самым главным. Лучше сказать что для меня является важным. Например для меня важно то, что я могу напрямую связываться с внешними устройствами по Com портам, без всяких надстроек, напрямую из кода программы написанной на CacheObjectScript. Т.е. я могу писать свои драйвера устройств. Для меня важно, что я могу легко и просто перенаправлять входные и выходные потоки на различные стандартные устройства, причем на лету. Для меня важно, что я могу порождать различные фоновые процессы, и те, работая по довольно таки сложным мной определяемым алгоритмам (уровень С++, а может и выше) легко и просто обмениваются информацией между собой и интерактивными процессами. Кроме того, они сами (процессы) могут порождать себе подобные, координировать работу между собой и т.д. Для меня важно, что можно исполнять такие алгоритмы, которые в темпе поступающей входной информации ведут довольно таки сложную обработку этой поступающей информации, совместно со справочной информацией и той информацией, что была получена некоторое время назад (допустим вчера, месяц назад). При этом результаты обработки можно выкладывать в единые пакеты с поступающей информацией и отправлять дальше. А можно обработанную информацию выклодывать точно в то место, которое было занято полгода назад. И при этом я буду уверен, что моя обработка не притормаживает входной поток и не отражается на процессах записи надиск. Ну конечно это все в допустимых пределах, скажем десятки миллисекунд. Для меня важно, что на Cache можно строить управляющие системы, где основным компонентом, ядром, будет выступать сервер Cache, а не просто бочкой для накапливания. Для меня еще есть много чего важного. А сколько важных сторон находят для себя другие разработчики - не берусь судить. Скажу одно - нельзя рассматривать Cache только как сервер БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 18:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 и каким образом организуется поиск в этой структуре данных для обеспечения указанной производительности? Пока не могу, это составляет внутренние секреты некоторых компаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 18:32 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey GladilinСразу хотел бы также задать вопрос про производительность. Вот здесь: /topic/54920&pg=3#396080 "ну я" предлагает задачу, демонстрирующую случай, когда M-системы имеют значительное преимущество в производительности перед SQL. В ответах в той ветке я так и не нашел объяснений, почему это происходит. Можете ли Вы рассказать, каким образом в данной задаче можно организовать хранение данных в MUMPS и каким образом организуется поиск в этой структуре данных для обеспечения указанной производительности? Могу лишь сказать что mumps - это обычно не самоцель для адептов, а многофункциональный инструмент. Попробуйте решить эту задачу как таковую, а потом решение перепишите на mumps и sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 18:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
To "ну я": Про процедурность - под процедурным языком обращения к базе данных (не языком программирования, а просто языком обращения к базе данных) я подразумеваю язык, в котором обращение состоит из указаний, КАК в базе что-то найти - пойди туда, посмотри такое-то поле, если оно удовлетворяет такому-то условию, то сделай то-то, затем пойди туда - и т.д. Насколько я понимаю, MUMPS - именно такой язык. Альтернативой, на мой взгляд, являются непроцедурные языки запросов - SQL, XQuery. В них описывается, ЧТО достать из базы, но не описывается, как. Если я правильно понял, то Вас привлекает именно процедурность (в описанном выше смысле) MUMPS'а, т.к. как Вы считаете ограничения, появляющиеся из-за непроцедурности, слишком серьезными? Спасибо за остальные ответы - как осознаю - спрошу еще :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 20:38 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 кроме как функции простого хранилища данных? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 08:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Спасибо за интерес, если только он не поддельный. Приятно общаться с тем, кто умеет слушать. И, поверьте, не хотелось бы говорить с тем, кто заткнувши свои уши и глаза, пытается всех перекричать своим возгласом: "Я ВСЕХ ВАС НЕ СЛЫШУ". //----------------- В Вашем контрпримере видим PHP, СУБД(SQL) и UNIX, не считая возможных интерфейсов. А это все не только накладные работы системы, но еще и накладные работы НЕПРОДУКТИВНОГО ума программиста. Программисту все это разнородное необходимо объединять в одно целое. В моем примере это примерно так: set com="COM1" open com:("":"SI") use com set byte=^ARHIV("1996","Сентябрь","Кислородный цех","Расход пара") write byte close com quit Открыл порт, сделал его текущим устройством, взял из базы необходимые мне данные и отправил их другому абоненту. Написан этот код на CacheObjectScript (Это можно сказать следующий шаг развития MUMPS) (С и С++ для сравнения). По поводу того, а кому все это нужно: К большому возмущению большинства программистов пользователям на сегодняшний день все больше и больше именно это и нужно. Им уже мало того, что предлагает стандартное мышление и стандартные подходы. Пользователям уже нужно, наконец то, управление производством, а не просто голая статистика и отчеты. Вот примерное высказывание одного из директоров крупного металлургического предприятия: "Мы сейчас только подходим к уровню того объема производства продукции, когда всем учетом и статистикой занимались 100 бухгалтеров и экономистов, при этом основным инструментом у них были счеты. Теперь я имею огромный штат программистов и иже с ними, огромный парк компьютеров и другого дорогого оборудования, много умных и очень-очень умных. Сократить бухгалтеров и экономистов так и не удалось, наоборот пришлось взять на работу дополнительный штат. А сэкономил я только счеты?! " Вот и призадумайтесь, нужны ли подобные задачи на сегодняшний день, и все ли решаемо теми методами, которыми Вы обладаете. И нужно ли хотя бы знакомиться с возможностями других технологий, пусть даже нетрадиционных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey GladilinЕсли я правильно понял, то Вас привлекает именно процедурность (в описанном выше смысле) MUMPS'а, т.к. как Вы считаете ограничения, появляющиеся из-за непроцедурности, слишком серьезными? Это зависит от задачи. Для некоторых задач SQL хватает за глаза, зачастую даже голову ломать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
<<<<<<<<<Вопрос и к "ну я" и к MC--ALEX - запросы и ответы, передаваемые по сети, в Вашей системе насколько сложны? Действительно ли разработка своего языка/протокола запросов и ответов имеет преимущества перед использованием стандартного языка вопросов и ответов SQL? например запрос на создание сразу нескольких отчетов в нашей системе MX : - это строка, расположенная в одной ячейке EXCEL не более 255 символов - наподобие формулы EXCEL ответ - это сам отчет - голые бизнес-цифры без элементов оформления но с привязкой к координатной сетке EXCEL привязка увеличивает обьем ответа процентов на 10-20 (оформление уже сидит на клиенте и ждет цифр в подготовленые места) еще раз отмечу - сетевой трафик - минимальный ! разработка своего языка запросов имеет преимущества если : ориентирована на тиражируемый продукт, превосходящий аналоги, просматривается нехилый рынок сбыта, и будет гарантированная поддержка продукта несколькими хотя бы микро-фирмами на очень длительный период у нас это получилось и поддержка несколькими независимыми группами есть. трудозатраты были весьма значительны - десяток человеко-лет. тираж внедрения на данный момент - свыше сотни фирм - - затраты окупились делать свой язык запросов ради нескольких обьектов - невыгодно. лучше уж все плохонькое - но стандартное - типа SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
AlexKB set com="COM1" open com:("":"SI") use com set byte=^ARHIV("1996","Сентябрь","Кислородный цех","Расход пара") write byte close com quit Открыл порт, сделал его текущим устройством, взял из базы необходимые мне данные и отправил их другому абоненту. Пользователям уже нужно, наконец то, управление производством, а не просто голая статистика и отчеты. то бишь так видимо можно включить/выключить какой электрический клапан или насосом-дозатором управлять, или опрашивать датчик температуры наверно на MSSQL такое и не сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 17:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
На sql.ru, Sergey Gladilin, уже весьма подробно обсуждали все эти вопросы. У Вас не совсем правильное представление о "реляционных системах" раз Вы говорите о "подходах к организации данных, заключающихся в использовании непроцедурного языка запросов." В РМД, ради чистой математики, пришлось (вынужденно) отказаться от таких важнейших свойств баз данных, как идентификация, навигация и семантика. Взамен - "декларативный язык запросов". В MUMPS изначально используется одноименный интегрированный язык баз данных. И SQL, в течение 30 лет, вынужденно превращается в самый настоящий процедурный язык, чтобы стать вторым в истории интегрированным языком баз данных. Несмотря на то, что так и не появилось ни одной реляционной СУБД, пагубное влияние РМД проявляется, конечно, в существующих псевдореляционных СУБД ("Р"СУБД). Пользователи работают не с данными а с некими представлениями данных, и требуется постоянное программирование любых, даже самых простых, запросов. MUMPS не ориентирована ни на какую конкретную модель данных, а служит средой для разработки СУБД. Никто "на низком уровне" не "копается в отдельных данных". MUMPS, в частности, идеальная (просто единственная) среда для реализации классической объектной модели данных. Пользователи при этом работают непосредственно с данными (в рамках концептуальной схемы). Они сами создают запросы и отчеты, а оптимизаторы запросов как минимум не менее эффективны, чем в "Р"СУБД. Все разработчики баз данных стремятся меньше программировать. MUMPS легче всего приводит к такому результату (что не удивительно - ведь это единственная целостная технология баз данных). Все администраторы стремятся меньше администрировать. И здесь MUMPS (в данном контексте правильнее говорить уже о Cache) дает лучший результат. Странный Вы задаете вопрос: "Расскажите, пожалуйста, какие отличия я забыл?". Мне кажется нужно поглубже разобраться в теории и технологии баз данных, чтобы говорить об отличиях. "Доступно практически из любого языка программирования", "Мы вот на PHP написали...". Так что же Вы на SQL-то не написали. Значит Вы не понимаете что такое интегрированный язык баз данных ? Еще более странно про "типичные задачи". В одной из тем никто не смог привести ни одной "типичной задачи", для которой использование "Р"СУБД было бы разумнее, чем СУБД на MUMPS. Говорили только о "получении больших и сложных отчетов." Смешнее не придумаешь. Желаю Вам успехов в изучении теории и технологии баз данных, и в поиске отличий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 15:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Чернышев Андрей ЛеонидовичНа sql.ru, Sergey Gladilin, уже весьма подробно обсуждали все эти вопросы. Дадите ссылки? Те дискуссии, связанные с MUMPS, которые я нашел. как правило,быстро переходят в неуправляемй поток взаимных наездов. Чернышев Андрей ЛеонидовичВ РМД, ради чистой математики, пришлось (вынужденно) отказаться от таких важнейших свойств баз данных, как идентификация, навигация и семантика. Взамен - "декларативный язык запросов". Вот про это почитал бы с большим удовольствием, посоветуйте что-нибудь? Чернышев Андрей ЛеонидовичНесмотря на то, что так и не появилось ни одной реляционной СУБД, пагубное влияние РМД проявляется, конечно, в существующих псевдореляционных СУБД ("Р"СУБД). Вот это заявление - про псевдореляционные СУБД - я уже встречал на sql.ru, но, опять же, никогда ен видел объяснений, что значит "псевдореляционные" и почему они хуже гипотетических реляционных - что еще кроме идентификации, навигации и семантики они потеряли? Чернышев Андрей ЛеонидовичПользователи работают не с данными а с некими представлениями данных, и требуется постоянное программирование любых, даже самых простых, запросов. Постоянное программирование требуется во всех случаях или только тогда, когда таблица не есть простейшее отображение сущности? Здесь, на мой взгляд, очень хорошо бы пошел пример - что есть данные, что есть представление, в чем недостаток реляционной модели и ее псевдореляционной реализации SQL, в чем заключается работа MUMPS непосредственно с данными. Чернышев Андрей ЛеонидовичОни сами создают запросы и отчеты, а оптимизаторы запросов как минимум не менее эффективны, чем в "Р"СУБД. Тут я совсем запутался :-(. Я думал, что в MUMPS нет запросов, есть просто способ обращения к данным через глобали, выглядящие для программиста как переменные? Чернышев Андрей ЛеонидовичЗначит Вы не понимаете что такое интегрированный язык баз данных ? Пожалуй, не понимаю. Что посоветуте почитать? Чернышев Андрей ЛеонидовичЕще более странно про "типичные задачи". В одной из тем никто не смог привести ни одной "типичной задачи", для которой использование "Р"СУБД было бы разумнее, чем СУБД на MUMPS. Вот тут: /topic/54920&pg=12#2406070 предложены задачи, похожие на те, что мне иногда приходится решать в своей профессиональной деятельности. Из преиведенных там решений на MUMPS я вижу, что 1) они менее наглядны, содержат какие-то циклы, переменные и т.д. 2) по-моему, они длиннее по числу лексем (побайтово сравнивать, имхо, глупо, а вот по числу идентификаторов, ключевых слов, знаков операций - т.е. числу лексем - имхо, логично) 3) казалось бы, логичное действие - база выросла - пора прикрутить индексы - требует переписывания кода Получается, что для указанных задач SQL лучше. Что и логично. Не бывает технологий, абсолютно выигрывающих у других. Для каждого подхода должна найтись своя ниша... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 16:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Вы задаете очень странные (для меня) вопросы, именно по той причине, о которой я сказал. И делаете ошибочные выводы. "Псевдо", потому что не поддерживаются даже свойства отношения - базовой концепции РМД. Работа непосредственно с данными заключается в работе непосредственно с данными. Это обеспечивают ОСУБД на MUMPS, а не сама MUMPS. Я же ясно сказал: непосредственно в рамках концептуальной схемы. Это обеспечивается простым и универсальным интерфейсом объектного навигатора - важнейшего компонента, который как раз и сводит программирование к минимуму. Если разработчик "сказал", что Товар<-Хранится на/Хранит->Склад то пользователи именно с соответствующими данными непосредственно и работают. Вы не запутались, а просто игнорируете то, что я Вам говорю, и продолжаете рассуждать про "в MUMPS нет запросов, а есть просто способ...". Конечно же, в ОСУБД на MUMPS есть запросы и оптимизаторы (они есть и в ООСУБД на MUMPS от Intersystems, но эта СУБД построена на парадигме ООП, не имеющего никакого отношения к базам данных). Сообщения 2406070 и другие сообщения "про самолеты" не могут дать никакого представления о технологии БД. Когда эта "задача" будет внедрена на предприятии, в БД будет, например, 100 отношений в нормализованной РБД (или, соответственно, около 70-ти объектов в ОБД) и множество различных функций. Вот тогда и будете сравнивать. И Вы увидите, что в ОСУБД на MUMPS (а Вы опять ссылаетесь на чистый MUMPS): 1) решения более наглядны; 2) намного короче; 3) не требуют постоянного программирования "запросов", как в случае SQL. Думаю нужно почитать сначала Кодда, а потом Дейта (последнее издание "Введение в системы баз данных" и другие работы), так как Дейт наиболее последовательный сторонник РМД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 21:21 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
> Что же главное в Cache? Видите ли, Sergey, мы стали свидетелями мировой экспансии Google на просторах интернета. Их сервис в сети на 1000 компьютерах (в общем-то никто не знает сколько у их компьютеров). Это новая глобализация стала реальностью, наступает на нас, и мы пока проигрываем. Что же можно противопоставить Google? Такого плана вопросы не задают только ленивые. В техническом плане это похоже на Cache. Во всяком случае он похож на работающий инструмент. Немножко смущает другое, каким бы ни был хорошим Cache, на каком-то этапе он же должен разваливаться к примеру от юзеров. Не может же быть так, что в Google дураки – там 1000 компьютеров, а мы взяли 1 поставили туда Cache и нет проблем. Но в том то и дело, что это может быть именно так. А почему нет? То есть по-идее только длительные практические испытания покажут, когда Cache развалится или нет. А MSSQL видится слабее сразу, тут уж и испытания не особо требуются, хотя конечно задача должна определять инструмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 22:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Чернышев Андрей Леонидович"Псевдо", потому что не поддерживаются даже свойства отношения - базовой концепции РМД. Работа непосредственно с данными заключается в работе непосредственно с данными. Это обеспечивают ОСУБД на 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 невыгоден, с объяснением, какие ограничения реляционной или псевдореляционной БД в этом конкретно проекте становятся критическими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 18:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kvasovТо есть по-идее только длительные практические испытания покажут, когда Cache развалится или нет. А MSSQL видится слабее сразу, тут уж и испытания не особо требуются, хотя конечно задача должна определять инструмент. Во! Из двух Ваших последних предложений второе (а не первое) описывает мой вопрос - я хочу разобраться, для каких приложений мне стоит задуматься об использовании M-систем вместо более привычных мне SQL. Причем интересуют только те случаи, когда M-система даст ощутимый выигрыш. Хотелось бы увидеть конкретный пример (как можно более простой, разумеется), когда SQL затыкается в силу своей организации, а MUMPS дает результат (опять же в силу своей реализации как средства доступа к БД, а не в силу того, что в нем есть операции по чтению из COM-порта). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 18:13 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Я Вас очень хорошо понял, Sergey Gladilin. Но на кого-то демонстрация "страстного желания" изучить эти "М-системы", возможно, может произвести впечатление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 19:59 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Сергей, То что говорит ЧАЛ о Cache в целом верно. Представьте, что вам в MSSQL дадут не DDL с возможностью создавать таблицы, индексы и не DML с запросами, а библиотеку доступа на уровне "создать B+ дерево", пробежать по дереву, найти все узлы уровня N, блокировки узлов и т.д. Т.е. вы вместо того, чтобы решать прикладную задачу, сначала должны на mumps написать то, что ЧАЛ называет "ОСУБД на MUMPS" (никто правда не видел этого чуда). Собственно, SQL в Cache и есть реализация РСУБД на языке mumps (CREATE TABLE создаст глобал, а SELECT будет транслирован в код на mumps, который бегает по деревьям и ищет что нужно). Имплементация SQL и объекного доступа в Cache однозначно проигрывает любой коммерческой РСУБД - и работает медленнее и многие конструкции не поддерживаются - поэтому на это даже не стоит смотреть. Не исключено, что возможно написать на mumps ОСУБД, на которой можно будет решать задачи более эффективно, чем на РСУБД - но, к сожалению, такой СУБД в публичном доступе нет. Я бы сказал, что разработка системы на Cache оправдана, если ваше приложение имеет некую специфику, зная которую можно реализовать работу с данными гораздо эффективнее, чем в РСУБД. Например, в mumps нет понятия уровня изоляции транзакций. Если вам нужно получать только commited данные - нужно самому расставлять локи, следить за ними и т.п. Наверняка есть задачи, где частное решение будет работать более эффективно, чем реализация на все случаи жизни в РСУБД. Естественно, нужно понимать, что реализация такого рода потребует значительных ресурсов и в конце может все равно получиться менее эффективной, чем РСУБД - потому что mumps язык интерпретируемый и вы не добьетесь той же производительности при работе с деревьями, как на С. В общем, я бы ответил на ваш вопрос следующим образом: пытайтесь решить задачу на РСУБД. Если задача не решается и вы видите, что причиной этого является ограничения РСУБД ( решение плохо ложится на таблицы, скорости не хватает, потому что РСУБД написана универсально, а вы видите, что в вашем случае все можно сделать гораздо эффективнее, если пожертвовать универсальностью) - смотрите на Cache, но знайте, что путь этот будет тернист :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 23:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin я хочу разобраться, для каких приложений мне стоит задуматься об использовании M-систем вместо более привычных мне SQL. Причем интересуют только те случаи, когда M-система даст ощутимый выигрыш. любой бизнес формулируется просто – найди формулу, которая работает и просто следуй ей. (по большому счету, формула нужна в одном единственном числе, чтобы какой-то бизнес состоялся, потом достаточно ее просто повторять и не париться) Одна формула – один запрос – один бизнес. Это преамбула. Далее просто детали. Если Cache теоретически может сделать «один запрос» в 10 раз быстрее, чем к примеру на sql - то ничего более от него может и не потребоваться по большому счету. Что будет с sql при 200 запросах/секунду ? А ведь веб-технологии это не только sql, а еще html, javascript, веб-сервер и пр. А в Cache это как-то компактно. Set ^KuKu=”Счастливая находка ученых” write “<span>#(^KuKu)#</span>” т.е. не в COM-порт посылаешь байт, а дебитуешь юзера html ответом во всяком случае в теории выглядит просто, понятно, производительно. (раньше были датчики, а теперь к ним добавились веб-юзеры - логика системы потоковой обработки данных сохранилась) да может все веб-юзеры Америки дают столько запросов, сколько дает какой-нибудь свитч сетевых пакетов в магазине на 20 компьютеров, а мумпс вроде умеет на лету трафик писать и расшифровывать, видимо он для этого и придумывался когда-то, но это домыслы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 00:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin kvasovТо есть по-идее только длительные практические испытания покажут, когда Cache развалится или нет. А MSSQL видится слабее сразу, тут уж и испытания не особо требуются, хотя конечно задача должна определять инструмент. Во! Из двух Ваших последних предложений второе (а не первое) описывает мой вопрос - я хочу разобраться, для каких приложений мне стоит задуматься об использовании M-систем вместо более привычных мне SQL. Причем интересуют только те случаи, когда M-система даст ощутимый выигрыш. Хотелось бы увидеть конкретный пример (как можно более простой, разумеется), когда SQL затыкается в силу своей организации, а MUMPS дает результат (опять же в силу своей реализации как средства доступа к БД, а не в силу того, что в нем есть операции по чтению из COM-порта). Сергей ни в коем случае не утверждаю что MUMPS - наилучшее средство, но во многих случаях он показал себя превосходно - например, как платформа для тиражируемой "1-С" -подобной системы или - чисто для любопытства - пример работы M-кода - вариант решения задачки Эйнштейна - код занимает 5 строк, время = 1 секунда. для сравнения - запрограммируйте решение на любом другом языке и почуствуйте разницу как в обьеме, так и в скорости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 09:49 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Традиционный совет еще от одного секретного специалиста по "Р"СУБД: 1) пытайтесь на "Р"СУБД; 2) если не получится, пишите на С, чтобы "не терять производительность". Правильный, надо сказать, совет для недоучек. Все-таки, MUMPS предназначен для весьма узкого круга специалистов в области баз данных. Проще пользоваться ширпотребными "Р"СУБД. Ни одну реальную задачу, конечно, не решишь без программирования на других, "дополнительных" языках (пока из SQL не сделают MUMPS). А многие не решишь даже и программируя на других языках из-за узкого места - "РБД". Но ведь "как у всех". Всегда спокойнее быть в большинстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 11:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Чернышев Андрей ЛеонидовичТрадиционный совет еще от одного секретного специалиста по "Р"СУБД: 1) пытайтесь на "Р"СУБД; 2) если не получится, пишите на С, чтобы "не терять производительность". Правильный, надо сказать, совет для недоучек. Все-таки, MUMPS предназначен для весьма узкого круга специалистов в области баз данных. Проще пользоваться ширпотребными "Р"СУБД. Ни одну реальную задачу, конечно, не решишь без программирования на других, "дополнительных" языках (пока из SQL не сделают MUMPS). А многие не решишь даже и программируя на других языках из-за узкого места - "РБД". Но ведь "как у всех". Всегда спокойнее быть в большинстве. для увлекающихся консалтингом - "как надо программировать", рекомендую раскручивать MSAccess adp проекты + MSSQL. это прекрасные инструменты ( http://www.orc.ru/~zgrad/am/avtomagik1.JPG ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 14:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Чернышев Андрей Леонидович А многие задачи не решишь даже и программируя на других языках из-за узкого места - "РБД". Ну вот опять, Андрей Леонидович, Вы пишете "многие задачи" и не приводите ни одного конкретного примера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 20:57 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin Ну вот опять, ..., Вы пишете "многие задачи" и не приводите ни одного конкретного примера? Представьте себе технологический цикл, состоящий из нескольких переделов. Входные потоки сырья поступают в разные переделы, кроме того, выходной поток одного передела является входным для последующего. На выходе некоторых переделов идут потоки отходов и побочной продукции. На выходе технологического цикла идет выходной поток продукции и поток брака. Для анализа влияния составляющих на выходной поток готовой продукции необходимо в реальном времени наблюдать график выходного потока и графики сырьевых и других потоков, приведенных ко времени выходного потока. Время каждого передела отличается от времени других переделов, да еще и зависит от количественных и качественных показателей входного потока(по отношению к нему же), и от ряда других параметров. Только совмещая во времени на одном графике кривые различных потоков можно выполнять оперативный анализ исполнения технологического процесса. Таким образом, часть информации вынимается из БД, а часть информации берется из входного потока. При этом эти данные подвергаются непрерывной аналитической обработке, для того чтобы вычислять фактическое время запаздывания входных потоков в переделах для коррекции запросов к БД. Вот Вам один из немногих жизненных примеров. Если ничего подобного Вам еще не встречалось, то это просто ВАМ не встречалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 14:06 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
AlexKBТаким образом, часть информации вынимается из БД, а часть информации берется из входного потока. При этом эти данные подвергаются непрерывной аналитической обработке, для того чтобы вычислять фактическое время запаздывания входных потоков в переделах для коррекции запросов к БД Спасибо за ответ, но, к сожалению, я все равно не понял. Что из сформулированного мешает использовать реляционную СУБД? То, что одного SQL в данной задаче не хватит - понятно, ну будет написан кусок анализа на java, С++ или еще каком языке. Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 15:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin AlexKBТаким образом, часть информации вынимается из БД, а часть информации берется из входного потока. При этом эти данные подвергаются непрерывной аналитической обработке, для того чтобы вычислять фактическое время запаздывания входных потоков в переделах для коррекции запросов к БД Спасибо за ответ, но, к сожалению, я все равно не понял. Что из сформулированного мешает использовать реляционную СУБД? То, что одного SQL в данной задаче не хватит - понятно, ну будет написан кусок анализа на java, С++ или еще каком языке. Но дело же не только в этом? Почему данные в данной задаче выгодно хранить в MUMPS-глобалях, а не SQL-таблицах? Я опускаю тот момент, что будут использованы не одна а ряд технологий для реализации такой задачи. Но мне нужно точно знать что в аналитический блок попадут данные которые поступили сейчас (0 секунд назад) и те которые поступили ровно 346 (786) секунд назад. a(0)=b(-0) + c(-346) * d(-786) Это самое простое аналитическое выражение. Индексы означают запаздывание от момента текущего времени. Запаздывания не статичны. Выражений вычисляется одновременно от десятков до сотен. Все они разные и оперируют с некоторым количеством разных переменных (скажем 300). Результаты работы будут складываться в БД и будут извлечены либо сразу же, либо по истечении какого-то времени. Все обработки должны быть пакетированы, т.е. до приема следующей порции информации необходимо выполнить всю аналитическую обработку, передать результаты в БД, выдать обработанные пакеты в систему отображения, заполнить протокол реального времени (построчная печать) и выдать в процесс печати, на сновании обработанных данных выдать управляющие воздействия во внешние устройства. Все это должно происходить строго 5 раз в секунду (а в моем случае это было 20 раз в секунду) и в строгой последовательности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 17:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Так решайте, Sergey Gladilin, на "Р"СУБД, если все у Вас решается! Я то отказался от "реляционной теории" давным-давно из-за плохой формализации РМД, отсутствия идентификации, навигации, семантики, бессмысленности "ключей" и "функциональных зависимостей" и т.д. А Вы, как я понимаю, чистый практик. Решается? Решайте! Не решается - не решайте. Хотите изучить теорию и технологию баз данных - изучите. Не хотите - не изучайте. Установка (внедрение) любой "информационной системы" на предприятии (заказчика) не должна отличаться от установки телевизора в квартире. И те средства и технология, о которых я Вам сообщал, способствуют достижению этой цели. А "Р"СУБД - не способствуют, даже когда "решается". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 17:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Простите, совсем забыл 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 это уже неявный цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 20:14 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Господа, всем добро дня и ночи! Просьба тезисно пояснить где, в каких случаях и каких предметных областях я могу эффективно использовать CACHE (по сравнению с РСУБД)??? Просьба привести примеры Есть ли в России реальные бизнес-приложения , использующие CACHE? Я слышал в МИФИ повально его пользуюут, но о практической реализации не слышал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 23:22 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Чернышев Андрей Леонидович И те средства и технология, о которых я Вам сообщал, способствуют достижению этой цели. А "Р"СУБД - не способствуют, даже когда "решается". Ссылку в студию на средства или хотя бы их документацию можно? А то все как-то теоретически. Может у вас и достигаемые цели теоретические? AlexKB А то тут некоторые все возмущаются по поводу циклов и ничего не говорят о том что SELECT это уже неявный цикл. Если по времени построен B+ Tree индекс, то выбор записи будет осуществлен проходом по дереву без всяких циклов - также как и в Cache. 1. А вообще для таких задач действительно есть другие языки и средства. Использование только mumps не есть преимущество, если рассмотреть количество опытных специалистов на рынке. Молодые специалисты тоже не бегут - приобретенный опыт может быть применен в десятке компаний на всю Москву. 2. Используя mumps вы отказываетесь от хороших средств разработки, отладчика, profiler-а, встроенного контроля версий, нормального ООП - либо вынуждены писать сам всяческие плагины для IS Studio. 3. При создании нормального Win32 GUI ( если вы уж хотите в реальном времени что-то отображать) mumps заканчивается и все равно начинается использование других технологий. А вот их интеграция с mumps при использовании глобалов - это еще та радость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 07:30 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
CACHE_LAMER2000Господа, всем добро дня и ночи! Просьба тезисно пояснить где, в каких случаях и каких предметных областях я могу эффективно использовать CACHE (по сравнению с РСУБД)??? Просьба привести примеры Есть ли в России реальные бизнес-приложения , использующие CACHE? Я слышал в МИФИ повально его пользуюут, но о практической реализации не слышал... примеры по Латвии система - по функциям примерно как русская "1-с" но под европейские правила : -- транспортные предприятия -- строительно-монтажные -- швейные -- судоверфь -- порты -- рыболовство и рыбопереработка -- металлообработка -- металлургический завод - 1 000 000 тонн проката в год -- деревообработка -- морской и медицинский колледж -- полиция -- пожарные службы -- муниципальные учреждения -- метрологические -- торговля более 100 внедрений за 2 года при том что на латвийском рынке предлагается аж 50 аналогов (на 2 миллиона населения) начиная от "1-с-Латвия" (кстати "1с" - наш главный конкурент) выигрываем по : - скорости работы приложений - на порядок - удобству перенастройки и простому обслуживанию - простоте обучения программированию на MUMPS - легкой интеграции с другими системами - низкой себестоимостью разработок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 09:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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) // показать фамилию текущего оператора установки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 09:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
AlexKBДа, действительно очень сложно прикладному программисту написать Set Form1.TextBox.Text=^Arhiv(data,smena,operator) // показать фамилию текущего оператора установки. А поясните пожалуйста, что имеется в виду? То, что MUMPS позволяет реализовывать Win32 GUI или то, что MUMPS легко интегрировать в другие технологии? Если второе, то как это реализуется? Из каких языков могут быть доступны глобали MUMPS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 13:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin А поясните пожалуйста, что имеется в виду? То, что MUMPS позволяет реализовывать Win32 GUI или то, что MUMPS легко интегрировать в другие технологии? Если второе, то как это реализуется? Из каких языков могут быть доступны глобали MUMPS? Я работал с реализациями MUMPS, которые имели встроенный Win32 GUI, также знаю что разработчики пользовательского уровня писали свои собственные инструментальные средства и легко их интегрировали с MUMPS. Но в данном случае показана интеграция Cache с Win32 GUI на уровне ООП (SMWrap). Win32 GUI занимается отдельный графический проигрыватель (Браузер можно сказать), методы в данном случае исполняется на Cache. Способ довольно-таки нетрадиционный, у него много противников. Но именно этот способ позволил достичь тех результатов, о которых я вкратце упомянул. Параллельно решались эти же задачи на других средствах (три-пять технологий), и до сих пор решаются, но к результатам достигнутым описанным выше способом они так пока и не подошли. Хотя все у них впереди и я не берусь сказать что это невозможно, правда уровень квалификации их группы выше, чем той у которой результаты уже есть налицо. Доступ к глобалам Cache возможен, по моему, из всех традиционных языков программирования (VB, VBA, С++...), которые поддерживают стандартные интерфейсы. Более того, доступ возможен к программам, функциям, переменным. Вот только пользоваться нужно этим разумно, не искать способ найти плохое, его всегда можно найти в любой системе, среде, языке программирования, а искать нужно способ расширить свой кругозор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 14:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
латышвыигрываем по : - скорости работы приложений - на порядок - удобству перенастройки и простому обслуживанию - простоте обучения программированию на MUMPS - легкой интеграции с другими системами - низкой себестоимостью разработок Так, давайте по порядку. Скорость - имеется в виду на клиенте или на сервере? На порядок - это в 10 раз, я так понимаю? Удобство перенастройки и обслуживания - о чем вообще речь? Перенастройка - это ведь не правка исходников? Она в конфигурационных файлах осуществляется? Какая разница, на чем система написана? Легкая интеграция - это преимущество Cache или Вашей реализации? В чем конкретно и с какими системами обеспечивается легкость интеграции? Низкая себестоимось разработок и простота программирования на MUMPS - вот этого я вообще понять не могу. Синтаксис у MUMPS весьма необычен - выпускнику ВУЗа со знанием Си или VisualBasic этот синтаксис будет казаться странным. Откуда данная простота и дешевизна? MUMPS с Вашей точки зрения действительно настолько приятный язык? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 15:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin MUMPS с Вашей точки зрения действительно настолько приятный язык? Чертовски приятный ;-) Кем-то было сказано "На нем можно запрограммировать даже ветер в голове". Правда, эта медаль имеет обратную сторону, слишком много возможностей полезно для дисциплинированного ума, и вредно для неокрепшего. А если еще вспомнить понятие "косвенность", команду XECUTE, то у программиста, привыкшего к традиционным языкам, крыша может поехать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 15:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
LittleCat Sergey Gladilin MUMPS с Вашей точки зрения действительно настолько приятный язык? Чертовски приятный ;-) Кем-то было сказано "На нем можно запрограммировать даже ветер в голове". Правда, эта медаль имеет обратную сторону, слишком много возможностей полезно для дисциплинированного ума, и вредно для неокрепшего. А если еще вспомнить понятие "косвенность", команду XECUTE, то у программиста, привыкшего к традиционным языкам, крыша может поехать. Что такого в косвенности? Есть в любом современном интерпретируемом языке, имхо. В PHP, например. Только толку с нее довольно ограниченно - часто ведет к непонятному коду. Оператор XECUTE, применяемый к данным полученным от пользователя, и вовсе небезопасен. Вообще, беглый просмотр руководства по MUMPS не изменил меня в мысли, что необычное в MUMPS - это именно глобали. Есть еще сокращение опетатора до одной буквы, но оно уж больно сильно вредит читаемости кода, по-моему, а объем программ сейчас экономить вроде бессмысленно... А кто-нибудь в цифрах сравнивал затраты на обучение программистов и/или себестоимость разработки на MUMPS по сравнению с другими языками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 18:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin А кто-нибудь в цифрах сравнивал затраты на обучение программистов и/или себестоимость разработки на MUMPS по сравнению с другими языками? Хороший вопрос, я бы сам с удовольствием на такие цифры посмотрел :-) Утверждается, что сильно быстрее и дешевле, но в виде аксиомы. Вот комплекс автоматизации предприятия, написанный на М и отработавший 10 лет (и продолжающий работать) видел своими глазами. Только технику меняли, да с MSM на Cache перешли, практически ничего не переписывая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 18:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Можно я отвечу на ряд вопросов. Sergey GladilinТак, давайте по порядку. Скорость - имеется в виду на клиенте или на сервере? На порядок - это в 10 раз, я так понимаю? На этот вопрос ответа конкретного Вам никто не даст, все очень относительно. Единственно что могу сказать, что обработку программист может распараллелить по разным процессам на сервере, а если и клиент написан на Cache, то выполнив специфическую подготовку данных на сервере клиент быстрее выполнит окончательную обработку. Можно выполнять окончательную обработку предварительно подготовленных данных по мере навигации по данным. Sergey GladilinУдобство перенастройки и обслуживания - о чем вообще речь? Перенастройка - это ведь не правка исходников? Она в конфигурационных файлах осуществляется? Какая разница, на чем система написана? На самом деле конфигурация осуществляется в глобалах и это, естественно, вызывает особое удобство и в конфигурировании и в обслуживании. Кроме того, можно генерить исходники (править) по ходу исполнения технологического процесса, потом перекомпилировать и дальнейшую обработку выполнять с помощью уже обновленной копии. Причем все это на ходу, без остановки приложения. Кстати это не бред, таким образом можно повышать производительность системы. Sergey GladilinЛегкая интеграция - это преимущество Cache или Вашей реализации? В чем конкретно и с какими системами обеспечивается легкость интеграции? Легкая интеграция - это особенность Cache. Мне доводилось интегрировать с различными SCADA-системами, средами программирования. Вот правда обобщенной выгоды по целуму ряду показателей, а не по одному, я не ощутил. Ну а в чем конкретно - предствьте себе, что Вы легко и просто общаетесь с объектами базы данных, заметьте хранимыми объектами, а не существующими в контексте С++ процесса. При этом к объектам обеспечен множественный доступ. Sergey GladilinНизкая себестоимось разработок и простота программирования на MUMPS - вот этого я вообще понять не могу. Синтаксис у MUMPS весьма необычен - выпускнику ВУЗа со знанием Си или VisualBasic этот синтаксис будет казаться странным. Откуда данная простота и дешевизна? MUMPS с Вашей точки зрения действительно настолько приятный язык? Совсем не нужно искать дорогостоящих программистов высокой квалификации для разработки и сопровождения. По поводу синтаксиса - если выпускник учил только Си или VisualBasic, то синтаксис HTML будет куда более чем странным по сравнению с MUMPS -> Cache. Те программисты, которые позже начинают программировать на MUMPS, чем на других языках, переучиваются очень легко, потому что необычных всего где-то пяток команд и пяток функций. Самое главное требование к таким программистам элементарная порядочность. Чтобы не спекулировали на этом вопросе. Те программисты которые начинают прграммировать с MUMPSа, переучиваются с других профессий, очень сильно удивляются почему дипломированные программисты так не любят этот язык. А еще больше они удивляются почему это у дипломированных всегда какие-то вопросы, проблемы, нестыковки с конечным ЗАКАЗЧИКОМ и тому подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 18:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Странный Вы, Sergey Gladilin: "Есть в любом современном...". Те или иные элементы MUMPS появились, конечно, в других (современных) языках. Что-то есть "в PHP, например". Но аналога MUMPS никогда не было и нет. Мне Рефал очень нравился, другие языки. Но на Рефале нельзя было создавать приложения баз данных. И на SQL, как правило, нельзя создавать приложения баз данных. MUMPS - единственный язык, на котором можно создавать приложения баз данных. Что значит "все как-то теоретически", mumps-ист ? Я же не коммерсант. Если кто-то говорит, что он что-то создал на "Р"СУБД, я же не говорю "ссылку в студию". Я говорю: и хорошо, молодец ! Пытайся и дальше. Не получится - пиши на С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 19:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin латышвыигрываем по : - скорости работы приложений - на порядок - удобству перенастройки и простому обслуживанию - простоте обучения программированию на MUMPS - легкой интеграции с другими системами - низкой себестоимостью разработок Так, давайте по порядку. Скорость - имеется в виду на клиенте или на сервере? На порядок - это в 10 раз, я так понимаю? Удобство перенастройки и обслуживания - о чем вообще речь? Перенастройка - это ведь не правка исходников? Она в конфигурационных файлах осуществляется? Какая разница, на чем система написана? Легкая интеграция - это преимущество Cache или Вашей реализации? В чем конкретно и с какими системами обеспечивается легкость интеграции? Низкая себестоимось разработок и простота программирования на MUMPS - вот этого я вообще понять не могу. Синтаксис у MUMPS весьма необычен - выпускнику ВУЗа со знанием Си или VisualBasic этот синтаксис будет казаться странным. Откуда данная простота и дешевизна? MUMPS с Вашей точки зрения действительно настолько приятный язык? спасибо коллегам - ответили за меня именно то что и я бы сказал - полностью присоединяюсь по скорости могу добавить - на сервере пример : зарплата завод 2500 чел с перерасчетом-коррекцией назад на глубину 6 месяцев - все налоги - удержания - счет за 15 сек думаю это даже быстрее чем на порядок клиент - на ms office - но благодаря разным спецметодам тоже работает достаточно быстро кстати, все конфигурационно-настроечные файлы в нашей системе это таблицы в ЕХСЕЛ с раскраской - validat - комментариями и прочими удобными штучками - понятно даже бухгалтерам :) естественно, они отображаются в M-глобали - но "настройщику" это не обязательно знать (благодаря особенностям MUMPS удалось создать на M-сервере "виртуальный EXCEL" - синхронизированый с реальными многооконными интерактивными EXCEL-клиентами) по применению оператора косвенного выполнения Xecute : атомная бомба - но управляемая термоядерная реакция - очень даже полезна в энергетике у нас "X" используется более чем активно - под жестким контролем (не все разрешено) хотя теоретически уязвимость от злого умышленника остается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 09:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
LittleCat Sergey Gladilin MUMPS с Вашей точки зрения действительно настолько приятный язык? Чертовски приятный ;-) Кем-то было сказано "На нем можно запрограммировать даже ветер в голове". Правда, эта медаль имеет обратную сторону, слишком много возможностей полезно для дисциплинированного ума, и вредно для неокрепшего. А если еще вспомнить понятие "косвенность", команду XECUTE, то у программиста, привыкшего к традиционным языкам, крыша может поехать. если есть под рукой листок бумаги можно распечатать основные команды MUMPS - это 99 % любого м-кода обучение с нуля займет от силы день ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 09:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
По поводу времени, необходимого для обучения М . Насчет одного дня не соглашусь. По опыту - средний программист начинает писать в нормальном рабочем темпе через две - четыре недели по существующей структуре данных. Для того, чтобы мог проектировать структуру, нужно еще с полгода. До этого будет продолжать мыслить таблицами и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey GladilinА кто-нибудь в цифрах сравнивал затраты на обучение программистов и/или себестоимость разработки на MUMPS по сравнению с другими языками? Время обучения примерно около 2 недель. После чего пишут нормальный рабочий код. Считается, естественно, что программист прошел собеседование на вменяемость и наличие логического мышления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
velmarПо поводу времени, необходимого для обучения М . Насчет одного дня не соглашусь. По опыту - средний программист начинает писать в нормальном рабочем темпе через две - четыре недели по существующей структуре данных. Для того, чтобы мог проектировать структуру, нужно еще с полгода. До этого будет продолжать мыслить таблицами и т.д. уточняю: один день - надо на изучение основных команд MUMPS (те что на прилагаемом ранее листке формата A4 ) согласен - чтобы ездить - мало знать правила движения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:49 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ничего там не слышно, нигде бизнес-инкубаторы с Cache не открываются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 00:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Судя по форуму cache_ru, обсуждается идея бизнес-колумбариев... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 10:30 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
zdiСудя по форуму cache_ru, обсуждается идея бизнес-колумбариев... Ну да, агрессивная финансовая политика InterSystems вполне может до этого довести (агрессивная по отношению к потребителю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 11:21 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
В создании БИ неясны некоторые юридические аспекты. Если Фирма А к примеру уже купила Cache (мульти-серверную версию). Приходят в А предположим предприниматели и говорят – вы даете ваш Cache, как вклад в уставной капитал в будущую фирму Б, которой по сути еще нет, и при этом у А будет доля, к примеру 10%, в уставном капитале фирмы Б. А не несет ответственности за деятельность Б, как акционер не несет ответственности за деятельность ао. А не имеет расходов и ждет дивидентов. Этим А просто развивается, растет, выступая в роли БИ. Из неясных вопросов – у InterSystem к А могут быть какие-то юридические претензии и возможно ли это технически? ( к слову, если InterSystem сам захочет стать БИ, это круче, тогда по идее IS может давать Cache вместе с типовыми учредительскими документами фирмы Б. И стал бы InterSystem крутым ПИФ-ом, паевым инвестиционным фондом венчурных компаний, не имея никаких по-сути доп.расходов, сверх того бизнеса что уже есть сейчас и при желании с минимальными рисками, то есть версия Cache для БИ проекта должна быть самой лучшей, но видимо с ежегодной пролонгацией для подстраховки) ну не знаю, как-то так, это взгляд со стороны как говорится, все бедные дают советы как вести мильенные бизьнесы :-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 14:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
латышкстати, все конфигурационно-настроечные файлы в нашей системе это таблицы в ЕХСЕЛ с раскраской - validat - комментариями и прочими удобными штучками - понятно даже бухгалтерам :) естественно, они отображаются в M-глобали - но "настройщику" это не обязательно знать (благодаря особенностям MUMPS удалось создать на M-сервере "виртуальный EXCEL" - синхронизированый с реальными многооконными интерактивными EXCEL-клиентами) Будьте добры, подскажите, где почитать, как конкретно такие вещи (синхронизация MUMPS с Excel) организованы изнутри? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 16:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin латышкстати, все конфигурационно-настроечные файлы в нашей системе это таблицы в ЕХСЕЛ с раскраской - validat - комментариями и прочими удобными штучками - понятно даже бухгалтерам :) естественно, они отображаются в M-глобали - но "настройщику" это не обязательно знать (благодаря особенностям MUMPS удалось создать на M-сервере "виртуальный EXCEL" - синхронизированый с реальными многооконными интерактивными EXCEL-клиентами) Будьте добры, подскажите, где почитать, как конкретно такие вещи (синхронизация MUMPS с Excel) организованы изнутри? это наша разработка права зарегистрированы описание системы пока только для внутреннего пользования дальнейший разговор через mx@enters.eu ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 16:50 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Господа специалисты по Cache', объясните пожалуйста почему в терминале (и во всех остальных приложениях) команда "Write 2+2/2" выдает ответ "2", и как это можно исправить? Проверялось на версиях 5.0.12 и 5.0.18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 09:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 10:03 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
MX -- ALEXпредставь что ты на калькуляторе распечатал. приклеил к монитору. думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 14:13 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Maxim A. Epishin MX -- ALEXпредставь что ты на калькуляторе распечатал. приклеил к монитору. думаю. не надо думать с нами тот кто все за нас решит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 14:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Maxim A. EpishinГоспода специалисты по Cache', объясните пожалуйста почему в терминале (и во всех остальных приложениях) команда "Write 2+2/2" выдает ответ "2", и как это можно исправить? Проверялось на версиях 5.0.12 и 5.0.18. 1. Почему. Потому что в мампсе нет приоритета операций. Все выполняется слева направо если порядок не задан явно скобками. 2. Как исправить. Не надо исправлять. Все программисты рассчитывают на соблюдение стандарта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 15:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Sergey Gladilin MX -- ALEXm-server считает все на виртуальном встроенном многопользовательском EXCEL используя все Ваши написанные м-проги в том числе и выкладывает данные в виде EXCEL клиентам Вашей сети - многооконые интерактивные документы Честно говоря, странно слышать этот ответ (всегда примерно один и тот же) в половине тредов про М. Подобной технологией (прозрачное отражение EXCEL на некоторую структуру данных на сервере, только без М-команд в ячейках) я бы обзавелся, но 1) насколько я осознал, никакого отношения она к М не имеет. М подходит Вам по ряду причин (короткие имена операторов позволяют влезать в ограничение длины строки 255 символов в EXCEL при хранении М-команд в ячейках), но на его месте мог бы быть и другой язык 2) данная технология не является частью М-системы, а является Вашей собственной разработкой - поэтому презентовать ее как возможное решение для других программистов странно - дарить Вы ее не собираетесь, а написать самому что-то подобное трудно (Вы утверждали, что это потребовало существенных трудозатрат) 3) безопасность технологии, при которой любой желающий может ввести в ячейку любую М-команду вызывает сомнения 1)) мог бы быть и другой язык - но какой ? - подскажите ! 2)) 100 EUR 3)) вариант - после отладки двоиник-эталон-EXCEL-листа на сервере закрывается на замок далее все команды из ячеек сверяются с эталонными на точное совпадение (но пользователь может менять оформление документа) или даже просто пароль на изменения EXCEL-листа клиента за 5 лет проблем с этим не было без м-команд в ячейках EXCEL технология MX теряет весь узюм - выразительность и ясность - в каком месте документа или формы что происходит - и нельзя будет сшить новый документ нарезая кусками от других ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 14:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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-ы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 01:57 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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) вложенными селектами? Рукотворный бермудский треугольник? И какое это имеет отношение к вышеприведенному примеру чтению и записи значений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 12:14 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. ну я, Вы написали, что Select - это неявный цикл. Для трансляции запросов SQL лучше использовать рекурсивные алгоритмы, т.к. они проще в реализации и отладке, но хуже в исполнении. В этом смысле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 22:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievУв. ну я, Вы написали, что Select - это неявный цикл. Для трансляции запросов SQL лучше использовать рекурсивные алгоритмы, т.к. они проще в реализации и отладке, но хуже в исполнении. В этом смысле. Ув. al veliev. Вы приписываете первое что Вам приходит в голову каждому кто с Вами общается? Вы действительно писали машинку исполнения select, чтобы судить что лучше а что нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 23:58 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. al veliev, Вы действительно считаете, что языки Mumps и sql как-то коррелируют на самом деле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 00:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
mumps-ист... "ОСУБД на MUMPS" (никто правда не видел этого чуда)... Видел... Притормаживает в некоторых местах... Правда, само собой, псевдо-объекты, но реализация оч. грамотная, может даже гениальная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 12:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Привет всем присутствующим. Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет. Не смог найти ни одного мало мальски достойного подтверждения что это лучше чем к примеру Oracle. Во всех сравнительных анализах стоит либо прямая ссылка на intersystems. либо эта ссылка в числе прочих в списке литературы. Но позвольте, это же то же самое что спрашивать что лучше, Cache' или Oracle на oracle.com. 99% людей работающих с Cache и MUMPS расхваливают его на все лады. (Как сейчас помню, как у моего знакомого появился линукс дома, один из первых в моем городе, и как он его потом расхваливал.. уши вяли). В многомерности не увидел ни одного преимущества, наоборот - Двумерные таблицы приучают, на мой взгляд, к дисциплинированности чем всю базу представлять единым n - мерным массивом. Возможность обращаться напрямую к портам... Но простите, разве нельзя написать хранимку в оракле на java. В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся. Я знаю компанию, монополиста в моем и близлежащих регионах, которая перешла на оракл с Cache' Дело вот в чем. Мне не жалко потратить время на плотное изучение ее. Но не хотелось бы тратить время на ерунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2008, 19:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
>Перелопатил кучу инфы. Приобрел кучу бесполезных знаний +100 Думаю, что выражу общее мнение, если скажу, что каше это не ерунда ;-) Если предполагется возможность работы с каше, то однозначно стоит ее изучать. "Просто так" без цели и без смысла вообще ничего не стоит изучать. Чтобы выяснить что лучше, не надо читать пропагандисткие тексты IS, у меня работа их маркетологов вызывает отвращение. Да и вообще, подозреваю, что вопрос "что лучше" не имеет смысла, иначе можно было бы оставить одну "хорошую" СУБД, а остальные списать в утиль. Каше просто немного иная, чем тот же оракл (который я не знаю совсем) Чтобы понять преимущества каше, с ней нужно работать. Причем не пытаться перенести свои знания с оракла, а приобретать навыки заново, иначе, если писать на каше как на оракле - никаких преимуществ не получите. >В многомерности не увидел ни одного преимущества Я не вижу преимущества для описания простейшей ситуации лепить 20 реляционных таблиц и искусственно калечить мозг запихивая модель в реляционной схему. В каше проще - хотите таблицы - вот вам таблицы. Не хотите - используйте прямой доступ или объекты. Согласен, расхолаживает и провоцирует плохой стиль программирования. >всю базу представлять единым n - мерным массивом. Какой ужас! Конечно нет. У нас хранение в таблицах - так проще и универсальней. Для более-менее сложной обработки данных они вкачиваются в глобалы и обрабатываются там. >Возможность обращаться напрямую к портам... Не используем. Это вообще наследие тех времен, когда каше сильно применялась для управления медицинским оборудованием. >В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся. Зря смеялись. Я скорее сравнил бы язык чистый М с ассемблером. А в целом каше действительно можно сравнить с С++ - в нем тоже можно делать ассемблерные вставки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2008, 19:59 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Скажу так. М технолигии существуют с незапамятных времен. Еще и меня на свете небыло, а они уже развивались. И раз находятся люди, которые считают что с использованием хранимых многомерных массивов удобнее решать некоторые задачи, то этоже не спроста. На личном опыте применяю прямой доступ тогда, когда нужно реализовать сложную логику данных (при помощи таблиц конечно тоже можно но угробишь кучу времени, да и еще, если условия поменяются, перепроектировать эту дисциплинированную структуру данных со всеми связими - мрак (однажды наступил на эти грабли)). Таблички и SQL запросы к ним, хороши для создания отчетов. Создавать отчеты, используя прямой доступ, ну очень сложно для меня (тоже личный опыт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 11:22 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
DorsajПривет всем присутствующим. Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет. А вы сделайте проще - скачайте однопользовательскую версию, и попробуйте сделать какое-нибудь несложное упражнение, типа Object QuickStart, потом можно пару туториалов пройти,в том числе посвященных работе прямого доступа, если интересует не только объектное и реляционное представление. Займет это у вас один вечер, от силы, вместе с экспериментами. Для того, чтобы понять, нравится оно вам, или нет - это самый быстрый способ, и уж точно быстрее, чем читать многостраничные изыскания в сети, или холивары на форумах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 18:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. ну я, я действительно неудачно выразился, приписав Вам то, что Вы процитировали. Сам это заметил, когда уже выставил пост. Так что если я Вас обидел - извините. А реализация SQL-доступа на М действительно у меня есть в виде шаблона (это всего лишь 18 комманд на М). Концепция описана у меня на сайте http://www.cgi2m.net.ua в статье M in WEB (ориентирован под Gecko броузеры). Ведь никто не мешает мыслить декларативно на процедурном языке. Чем меня М и привлекает - из него можно изваять что угодно. Если Вы решите использовать этот пример для построения Select ... (Where Select ...), то Вы увидите рекурсию воочию. Создатели Пролога прямо заявляли, что реализации поиска в их языке - рекурсивные. Дело в том, что реализация с использованием циклов затруднена из-за одновременного использования данных на разных уровнях программного стека (слизывание крема с разных слоёв пирожного :) ) и требует более сложных алгоритмов. Впрочем, всё это хорошо описано в специальной литературе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 21:10 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ну яУв. 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 этого включения не предусматривает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 21:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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, вынужден огорчить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2008, 00:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. ну я, безусловно, реализация разрешения запросов SQL разработчиком на физическом уровне будет протекать гораздо более развитыми средствами. Наверняка используется общий пул с хешированием данных и т.д. Но в конце концов оба пути, учитывая внутреннюю обработку на М, будут во многом похожи. С другой стороны ведь и не ставил задачу писать SQL - решатель. Моя задача была гораздо скромнее - облегчить переход с SQL на M при необходимости. Как Вы наверняка заметили, процесс этот при необходимости можно автоматизировать. Что и не удивительно - SQL ведь первоначально и создавался для системных аналитиков и постановщиков задач. Относительно Вашего замечания по Прологу хочу заметить, что он оперирует с базой знаний (база данных+правила вывода), т.е. объектом более сложным, чем просто база данных, и у него есть свои реализации и сторонники. У меня лично библия И.Братко по Прологу - настольная книга. Замечательная вещь. Как он мыслит!!!! Кстати, У меня к Вам будет просьба, если Вы не будете против и у Вас есть такая возможность, протестируйте мой пример из сайта на простые числа (статья Why M из сайта. Программа example ) на Cashe,- к сожалению, я не имею такой возможности. Я буду Вам очень признателен - у этого примера просто шикарный выход на многопоточную обработку . А относительно используемой алгебры отношений не могу не заметить, что "перелив" из одной алгебры в другую - больше дело знаний и умений того, кто это делает. Ведь получилось же у Вас. И ставить забор, там где его нет - вредно. С одной стороны, реляционные отношения - вырожденная иерархия, а с другой, любая иерархия - это реляционное отношение на уровне (объект) <-> (его множество - его алгебра). Так что всё зависит от Вас... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2008, 02:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Борис ЕгоровА вы сделайте проще - скачайте однопользовательскую версию, и попробуйте сделать какое-нибудь несложное упражнение Могу предложить еще один вариант т.с. "для проведения сравнения" СУБД... - Придумать задачку - Попросить ее реализовать разным СУБДшникам Если задачка будет интересна - обязательно предложат несколько вариантов решения. Поскольку "новичек" не сможет на все 100% реализовать возможности любой СУБД... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2008, 10:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievКстати, У меня к Вам будет просьба, если Вы не будете против и у Вас есть такая возможность, протестируйте мой пример из сайта на простые числа (статья Why M из сайта. Программа example ) на Cashe,- к сожалению, я не имею такой возможности. Я буду Вам очень признателен - у этого примера просто шикарный выход на многопоточную обработку . Миллион job? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2008, 11:18 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
DorsajПривет всем присутствующим. Сегодня потратил целый день на выяснение, что лучше РСБУД или ОСУБД. Перелопатил кучу инфы. Приобрел кучу бесполезных знаний, но так и не понял. Мне важно понять. Имеет ли смысл уделять знакомству с Cache' много времени или нет. Не смог найти ни одного мало мальски достойного подтверждения что это лучше чем к примеру Oracle. Во всех сравнительных анализах стоит либо прямая ссылка на intersystems. либо эта ссылка в числе прочих в списке литературы. Но позвольте, это же то же самое что спрашивать что лучше, Cache' или Oracle на oracle.com. 99% людей работающих с Cache и MUMPS расхваливают его на все лады. (Как сейчас помню, как у моего знакомого появился линукс дома, один из первых в моем городе, и как он его потом расхваливал.. уши вяли). В многомерности не увидел ни одного преимущества, наоборот - Двумерные таблицы приучают, на мой взгляд, к дисциплинированности чем всю базу представлять единым n - мерным массивом. Возможность обращаться напрямую к портам... Но простите, разве нельзя написать хранимку в оракле на java. В этом самом топике прочитал что COS это язык низкого уровня как "С++ и даже глубже", долго смеялся. Я знаю компанию, монополиста в моем и близлежащих регионах, которая перешла на оракл с Cache' Дело вот в чем. Мне не жалко потратить время на плотное изучение ее. Но не хотелось бы тратить время на ерунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2008, 21:31 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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. Сейчас не те времена. Продолжайте шаманить, так как это хороший, в коммерческом отношении, путь): ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2008, 22:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бред, Я с огромным удовольствием читаю Ваши статьи. В них всегда нахожу много интересного, полезного, наконец умного. Ну их всех тех тащусиков, не тратьте свои силы на их перевоспитание - бесполезно. Как говорится, горбатого могила выправит. Лучше пишите поучительные статьи нам, тем кто умеет слушать. Если есть где почитать Ваши мысли, обзорные статьи и т.п. дайте в ответе ссылку, пожалуйста. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2008, 14:11 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. ну я, я тестировал эту задачу на GT.M на своём ноутбуке HP/Compaq-NC8000(1700MHZ/512ram/40GB hdd). Процесс протекал "рывками", в общей сложности более 36 мин. Максимальное количество заданий - более 300, база данных выросла до 0.5 Гбайт (У Вас может быть и меньше). Задача эта лежала у меня под спудом более 2-х лет, так как я сомневался в способности М-трансляторов провести точно обработку данных с таким количеством заданий в таком потоке. Для того, чтобы запустить её, понадобилось общение с K.S.Bhaskar. Идея задачи родилась после повторного прочтения книги И. Братко по Прологу (Гл.16, пример по нахождению наибольшего общего делителя. Просто супер! Арифметическая задача без вычислений!). Я буду очень рад, если она сработает и на другом достаточно большом числе - важна проверка работоспособности алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 22:27 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Александр, я протестировал вашу программку (нахождения всех простых чисел от 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=0 вся работа проделывалась в главной программе, без запуска Job'ов. Результат меня особо не удивил: для оптимальной производительности кол-во параллельных процессов должно быть близко к кол-ву процессоров/ядер, и это если повезет и задача хорошо распараллеливается. При этом не забываем о том, что в Cache всегда присутствует минимум еще один параллельный процесс - демон записи (WRTDMN), это при условии, что БД не расширяется и глобалы не журналируются. С таким алгоритмом, как у Вас, по кр. мере в Cache однопоточный вариант оказался явным лидером. Тем не менее, результат меня не обрадовал, что привело к появлению несколько другого подхода к распараллеливанию работы в задаче. На том же компе удалось достичь 7 сек на 4 Job'ах, на 1 Job'e - 10 сек. Разница невелика, но все-таки она есть. Кто быстрее? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2008, 15:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Считается сумма первого миллиона простых чисел. JobCount=2 - сколькими процессами считать На Intel Core2Duo 2.33 МГц в 2 процесса 74 секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2008, 18:11 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Заполнение глобала ^mtemp("s","l") простыми числами <= 1000000 на том же железе (Intel Core2Duo 2.33 МГц) в 2 процесса <2.4 сек. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2008, 18:25 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Хочу заметить, что в моем алгоритме выставлять значение JobCount больше чем число процессоров*ядер не имеет смысла, так как каждый процесс cache грузит "свой" процессор по максимуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2008, 18:34 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievУв. ну я, я тестировал эту задачу на GT.M на своём ноутбуке HP/Compaq-NC8000(1700MHZ/512ram/40GB hdd). Процесс протекал "рывками", в общей сложности более 36 мин. Максимальное количество заданий - более 300, база данных выросла до 0.5 Гбайт (У Вас может быть и меньше). Задача эта лежала у меня под спудом более 2-х лет, так как я сомневался в способности М-трансляторов провести точно обработку данных с таким количеством заданий в таком потоке. Для того, чтобы запустить её, понадобилось общение с K.S.Bhaskar. Идея задачи родилась после повторного прочтения книги И. Братко по Прологу (Гл.16, пример по нахождению наибольшего общего делителя. Просто супер! Арифметическая задача без вычислений!). Я буду очень рад, если она сработает и на другом достаточно большом числе - важна проверка работоспособности алгоритма. al-veliev С днем Рождения ! и успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 01:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Мои средние результаты (на той же установке, на большом числе прогонов): Код: plaintext 1. Код: plaintext 1. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 14:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 14:24 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
MaWr, спасибо :) Скорость моей проги можно поднять ~ на 10%, если заполнять глобал так: f i=1:1:Lim s ^a(i)="" но это, конечно, не принципиально. Пока что можно констатировать, что Ваша 2-поточная прога быстрее моей однопоточной на Core2 Duo, а на Dual-Core AMD - все наоборот. Разница еще и в том, что я строю глобал простых чисел (^a) в текущей области, поэтому существенно, чтобы журналирование глобалов в БД было отключено. Было бы здорово, если для полноты картины Вы указали $zv и версию ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 14:48 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Попробовал заменить в программе Алексея Маслова "простые" глобалы на ^mtemp(индекс) - результат ухудшился. Переделал свою программу на "простые" глобалы. Получил результат 2.25с Выходит процессоры от Intel деление производят быстрее, чем от AMD :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 14:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 Скорость не поменялась.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 14:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov: А Вас в системе 2 2-х ядерных процессора. Запуск моей программы 4-мя потоками какой результат покажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 14:58 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov Скорость Вашей проги еще можно поднять, если заполнять глобал так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 16:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Вот более удачная реализация распараллеливания решета Эратосфена: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 2 потока: 1.594853 все равно разница не велика.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 17:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 17:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 18:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Уважаемые друзья! Вчера у меня был день рождения. Зайдя сегодня на форум, я и представить не мог такого отклика на представленную задачу. Это для меня огромный и неожиданный подарок от МУМПС-сообщества. Спасибо огромное Вам всем, здоровья и удачи на жизненном пути! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 20:29 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov Код: plaintext 1. 2. 3. 4. 5. С другой стороны, возможно, выборка простых чисел <1 000 000 слишком мала... Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Вечером с http://iron.intersys.com/wrc/Distribution.csp скачаю cache-2008.2.0.526-win.exe и тогда завтра попробую на ней погонять примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 09:38 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
MaWr, можно вопрос: что нужно сделать, чтоб получить сюда http://iron.intersys.com/wrc/Distribution.csp доступ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 10:38 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ceshkaMaWr, можно вопрос: что нужно сделать, чтоб получить сюда http://iron.intersys.com/wrc/Distribution.csp доступ? Это лучше узнать у представителей InterSystems :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 10:50 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
А вот решето Аткина на конфигурации тоже хорошо распараллеливается: Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. А если убрать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 11:48 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
упс... Читать так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 11:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Намудрил я с Аткином - параллельный режим работал неверно. Вот правильный вариант: Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 18:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. коллеги! Вот и мне есть что сказать...:) Ведь у нас в М такие замечательные циклы! Силу этого цикла Код: plaintext 1. Код: plaintext 1. 2. 3. Увлеченный вашим примером, я также протестировал однозадачный вариант первоначальной задачи. Поскольку в GT.M Job запускает системные процессы, а не задания М, в выигрыше оказался многозадачный вариант (сегодня он протекал на 5% быстрее, чем многозадачный). Также хочу сообщить, что в этой связи время исполнения несколько "пляшет", но тенденция остаётся. Персонально to Alexey Maslov хочу сообщить размер базы данных : 93949К - вдвое больше Caсhe. Так получилось, что первоначально я запускал другую подобную задачу, которая просто заполняла базу данных рядами(проверял многопоточность), а потом ту, которую просил попробовать в Caсhe. Чувствуя, что её размер должен быть меньше, я написал это в скобках, а на момент написания поста не имел возможности повторно перезапустить задачу с новой базой данных (не было 36 мин:). Надеюсь, что не причинил этим особых неудобств... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 23:34 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. коллеги! Вот и мне есть что сказать...:) Ведь у нас в М такие замечательные циклы! Силу этого цикла Код: plaintext 1. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 00:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-veliev Код: plaintext 1. 2. 3. Все-таки, наверное, вот так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 09:49 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Протестировал все приведенные выше алгоритмы на Код: plaintext 1. CPU: Intel Core2Duo 2,33 ГГц 2 ГБ ОЗУ кэш бд выставлен вручную 1536 МБ Журналирование базы USER отключено, база предварительно расширена до 3 ГБ В агоритмах цикл Код: plaintext Код: plaintext 1. 2. Результаты: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 10:36 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievПоскольку в GT.M Job запускает системные процессы, а не задания М, в выигрыше оказался многозадачный вариант (сегодня он протекал на 5% быстрее, чем многозадачный).В Cache аналогично: Job запускает системные процессы. "Задания М" остались в далеком прошлом (MSM, DTM). Выигрыш 5% может быть в пределах погрешности. У меня получался даже больший выигрыш (см. начало дискуссии), который впоследствии не подтвердился. Думаю, это в природе Linux: скорость записи на диск не вполне предсказуема, т.к. на нее влияет много факторов, поэтому полностью согласен с MaWr'ом: чтобы уменьшить случайные флуктуации, имеет смысл тестировать на бОльших интервалах. Предложение (к MaWr'у): если не трудно, выложите здесь последний вариант исходников, чтобы была уверенность, что все мы запускаем одно и то же. Мне кажется, интересно было бы протестировать их и в GT.M, но пока у меня нет такой возможности. Столь значительный проигрыш в скорости в GT.M (пусть и на относительно слабом ноуте) по сравнению с Cache, который получил Ал. Велиев, продолжает казаться мне странным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 11:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovСтоль значительный проигрыш в скорости в GT.M (пусть и на относительно слабом ноуте) по сравнению с Cache, который получил Ал. Велиев, продолжает казаться мне странным.Имелся в виду проигрыш однозадачного варианта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 12:03 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 13:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
MaWr, спасибо, запланирую запуск на вечер (чтоб поменьше побочных эффектов :). Результатами поделюсь завтра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 13:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
А к чему все-таки пришли, скорость удовлетворительная или нет? Или это были "шахматные этюды"? "Быстрее, выше, сильнее"-лозунг на стадионе. "МАМПС-это сила, а сила есть-ума не надо"-высказывание одного МАМПСиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 15:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Спасибо за информацию о способе запуска в Cache. Вы совершенно правы, говоря о значительном влиянии ОС на скорость протекания задачи. У меня также сложилось устойчивое впечатление, что у меня слишком тихий HDD . В процессе наблюдал "зависания" из-за процессов чтения-записи на диск в разные моменты времени. Также могу сказать с уверенностью, что чем б о льший максимум запущенных процессов, тем хуже результат. Для полноты сравнения с GT.M - можно его запустить без инсталляции . В Linux необходимы только 3 файла: mumps, libgtmshr.so и shell-скрипт для его запуска (около 2 Мбайт). Я Вам смогу этот набор выслать по e-mail в архиве - сейчас под рукой нет. Также я несколько улучшил алгоритм и завтра выложу усредненные результаты и свой код. Алгоритм с решетом Аткина пока перевариваю... Новая для меня функция $i - в GT.M её нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 20:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Наметился явный лидер среди алгоритмов для нахождения ряда простых чисел для 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. Получил следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 10:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Результаты из предыдущего поста были получены на 5.0.20 На 2008.2 результаты следующие: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 10:16 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-veliev, да, там и $LB() нету, очень, очень жаль, но, может появится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 10:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Вот результаты вечернего прогона. Гонял только самые быстрые варианты (Аткина и Эратосфена от Мавра), по десять раз с каждым набором параметров. Сегодня ночью погоняю новый вариант "решета Мавра" (от Зратосфена там уже почти ничего, кроме идеи решета, не осталось :). Код: 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. Меня давно интересуют параллельные вычисления. Были случаи удачного применения их в работе. Но об общих закономерностях говорить пока рано (даже применительно к Cache - как к наиболее знакомому мне серверу БД/приложений). Все решает, в конечном счете, эксперимент. Предварительные соображения есть, но пока на уровне предположений. Например, в решете Эратосфена частые Kill 'ы в активно читаемый глобал приводят к его "перетряске", устареванию блоков в кэше, и кол-во ядер уже не спасает: процессы банально ждут, пока закончится цикл работы WRTDMN - а он (демон записи) в Cache один. Но почему-то (почему?) не менее частые команды set ^l(n)='$g(^l(n)) в решете Аткина оказываются меньшим злом.al-velievЯ Вам смогу этот набор выслать по e-mail в архиве - сейчас под рукой нетСпасибо, скачать GT.M для меня не проблема - проблема, чтобы руки дошли :). К тому же Вы немного не в курсе: $increment() в GT.M появился достаточно давно - посмотрите на SourceForge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 11:22 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Эратосфена забыл вставить. Вот: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 11:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 13:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Принял к сведению :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 13:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
AlexKBИли это были "шахматные этюды"? У меня чисто практический интерес. Хочу в связи с этим рассказать историю. Захожу как-то к товарищу, а он чёрный как туча около своего компьютера. Оказывается, что в базе данных сайта, который он разрабатывал, хранились протоколы сессий - того требовал характер обработки данных. Очистка мусора была "зацеплена" на админку. Так вышло, что на неё долго никто не заходил, и накопилось очень много таких "хвостов". В результате они начали "топить" обработку. Мой товарищ оказался в сложной ситуации - броузер выделяет на ответ 300 миллисекунд, сервер загружается одним запросом по полной, защита сервера срабатывает по подозрению в fork bomb (метод взлома, основанный на бесконечном вызове процессом самого себя или съедания памяти подобным образом. После перезагрузки системы неопытным администратором остаётся ловить пользовательские пароли) и обрезает ему квоту до минимума. Броузер, не дождавшись ответа, разрывает соединение, и ответ получить не удаётся. Ему пришлось потратить весь вечер и всю ночь, чтобы очищать по малюсенькому кусочку базу данных. Если бы у него в руках на тот момент был подобный механизм, он потратил бы час-два, и сайт не бездействовал бы весь вечер и всю ночь. Во избежание необоснованных обвинений в некомпетентности, расхлябанности и т. д. сайт, имена и фамилии не называю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 20:10 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Хочу продолжить тему с fork bomb применительно к нашей с Вами теме. Пришел вчера домой. Подумал. Отключил антивирус и сетевую поддержку. Скорость и стабильность прохода задач резко выросли. В среднем прогон задачи шел около 3-х минут (Рост более чем в 2 раза). Если не считать одного случая с явным вмешательством ОС в процессы вычислений, то отклонения не превышали 10 сек., количество процессов колебалось в пределах 40-60. Но, говоря о нестабильности результатов в Linux, Вы абсолютно правы - сегодня днём цифры были немного больше. К концу следующей недели-середине месяца я запущу GT.M под Windows в режиме эмуляции, чтобы исключить этот фактор. Спасибо за информацию об $i , а то начал уже огород городить с пользовательской функцией. Говоря об её отсутствии, я ориентировался на документацию. Похоже, она слегка устарела. Кстати, увидев H 0.1 я порадовался за то, что в Cache сделали более точный механизм задержек. Преисполненный радужных надежд, я направился в онлайн-документацию по Cache, надеясь увидеть такой же прогресс в командах Read, Open и Use, но был разочарован. Как Вы выходите из ситуации, когда нужно более точно реагировать при использовании этих комманд(скажем, с точностью до миллисекунд)? Алгоритм Аткина меня порадовал более аккуратной работой с диском - таково первое впечатление. Хорошо Вам провести выходные! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 20:36 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Привожу усредненные результаты (в секундах). Делалось по 10 прогонов с каждым набором параметров. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2008, 11:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslovно есть подозрение, что Аткин масштабируется лучше. В алгоритме Аткина больше вычислений и меньше обращения к глобалам. Это особенно сильно скажется на рядах таких размеров, когда глобал перестанет помещаться в кэш глобалов целиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2008, 13:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Решил напоследок погонять в тяжелых условиях, когда глобал в кэш не влезает. Гонялись те же два лидера, что и прошлый раз. Собиралась статистика (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. Для меня это лишнее подтверждение необходимости "нагрузочного" тестирования. По поведению программы в ситуации, когда все глобалы помещаются в кэш, выводы о качестве алгоритма/кода делать рано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 12:21 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Забыл упомянуть, что размер кэша специально был уменьшен до 64Мб. Размер глобала простых чисел составил около 170Мб, до какой степени глобалы "пухли" во время работы, я не знаю, знаю только, что расширения 8Гб базы не было :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 17:21 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Смог минимизировать воздействие ОС - запустил решето Эратосфена в режиме single user . Сразу почувствовал результат - задача стала стабильнее и быстрее работать, HDD сразу стал себя нормально вести. Результат таков: время выполнения ~= 160+-1 сек, количество процессов~=10(мин=8, макс=15). Пробовал прогонять Ваши задачи. К сожалению, длительность периода послезаписи (задача заканчивает свою работу, а обращения к диску ещё продолжаются) при числах, больших 1000000 сводит на нет ценность результата. HDD придется поменять... Alexey MaslovНикак не выходим :) Наверное, мы просто не решаем таких задач. Кстати, и в случае Hang точность примерно 0.5 сек: Решил проверить, как все-таки работает HANG 0.1 при помощи такой программки: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 22:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov Для меня это лишнее подтверждение необходимости "нагрузочного" тестирования. По поведению программы в ситуации, когда все глобалы помещаются в кэш, выводы о качестве алгоритма/кода делать рано. Согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2008, 09:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Может быть, есть смысл уменьшить тайм-аут до 0.01 сек на малом количестве (1000000) и посмотреть результат? Дело в том, что разница у Вас на Аткин в большинстве прогонов не превышает 0.22 сек (по одному ожиданию в каждом цикле синхронизации), а number имеет два значения - число и номер (целое). Так что вполне может быть, что HANG реагирует на ближайшее действительное число. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2008, 20:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-veliev, Алексей Маслов и другие А Вы могли бы обобщить результаты Ваших исследований и в качестве рекомандаций выложить на форум, лучше на форум ИнтерСистемс. Ведь Вы проделали большую работу, и сделали для себя ряд выводов, поделитесь, пожалуйста, теперь уже общими соображениями. "Не пропадет Ваш скорбный труд ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2008, 10:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. AlexKB, спасибо Вам за Ваше предложение. Я это обязательно сделаю, но пока ещё не полностью готов. Кстати, у меня к Вам просьба - если не затруднит и есть такая возможность, проверить HANG 0.1 в Cache(программка в одном из предыдущих постов). Для меня это достаточо важно, так как затрагивает достаточно большой пласт задач, ранее не решавшихся, а Вы сможете также внести свою лепту в общее дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 18:06 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
H 0.1 проверял на Cahe' 5.2 под Win XP, результат зависит от нагрузки на систему (запущенные другие задачи Windows). Получалось в среднем где-то около 0,23 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 09:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 мсек. Почему не знаю, разбираться не стал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 12:14 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Спасибо Вам за Ваши ответы. Со своей стороны могу сообщить пока только то, что Linux с GT.M ведут себя более-менее прилично до Hang 0.1 , т.е. тайм-аутам от 1 сек до 0.1 сек можно вполне доверять. А относительно повышения точности у меня большие сомнения, т.к. K.S. Bhaskar в документации по команде View прямо указал на предел реагирования ОС в 0.001 сек. И к чему эти Гигагерцы ??))) Вообще меня, честно говоря, очень удивляет тот факт, что в других командах ( Open , Read и Use ) тайм-аут настолько грубый и нет возможности его подправить. Особенно для систем, которые позиционируются как медицинские. Как-то не верится, что с 1969 года никто из медиков не попросил давление померять, пульс посчитать, объём легких вычислить, показания приборов проконтролировать и т. п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2008, 18:53 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 мсек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2008, 09:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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. Hang GT.M при значениях тайм-аута менее 0.1 сек начинает врать, но в бОльшую сторону. Но исходя из написанного в документации можно предположить, что такой порог тоже должен быть. Возможно в версии 5.3 по другому, надо посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2008, 21:24 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-veliev, Ой нет, по GT.M я не в теме. Поднимаю руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2008, 10:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув AlexKB, я привел Вам всю цитату только для одной строки - где K.S. Bhaskar обрисовал проблему с точки зрения таймера ОС, где теряется точность за счёт округления сверхмалой величины и описал её (тайм-аут менее 1 мкс округляется системой до нуля, о потом даже миллион итераций длительностью 1 с равен нулю). Я далек от мысли агитировать Вас за тот или иной транслятор. Единственное, что мог бы сказать в этом плане - это предложить Вам попробовать Cache в Linux single user (это что-то наподобие DOS с поддержкой многозадачности), может быть там результат окажется чуть-чуть лучше. Сообщение с вопросом насчет "точности" Open Use, Read я выставил сегодня на comp.lang.mumps. Посмотрим, что янки скажут на этот счёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2008, 19:36 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. AlexKB, Уже есть первая ласточка по теме. Оказывается , стандартом тайм-аут не фиксируется до целых секунд, т.е. у нас есть шансы получить в будущем адекватное решение вопроса. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2008, 19:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievу нас есть шансы получить в будущем адекватное решение вопросаУв. Ал. Велиев, представители разработчиков мне в свое время заясняли, что для появления какой-либо новой "фичи" фирма должна чувствовать некий финансовый стимул (прямой или косвенный). Вот сумели бы Вы заинтересовать, к примеру, фирму Fidelity реализовать в полной мере (фактически, перевыполнить) данное требование Стандарта? (например: вы такую супер-пупер систему на GT.M разработаете, что и у Вас, и у них продажи резко возрастут, одного вам для этого не хватает: дробного времени ожидания). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 12:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov, лучше подбить их добавить $LB(), самим небось понравится))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 12:30 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ceshkaлучше подбить их добавить $LB()Подбить их добавить что-либо, как показал наш опыт, весьма сложно, даже при условии, что разработку берете на себя. А сами они добавляют новые фичи лишь при наличии коммерческого интереса. Впрочем, не только они, альтруистов на рынке нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 14:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov, интересно пролучается: у ИС интерес в $LB() есть, а у них нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 15:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
$LB() в позднем OpenM/раннем Cache появились, когда фирма взялась за переписывание своего SQL-движка с добавлением объектной функциональности, т.е. во второй половине 90-x. Очевидно, кто-то решил, что так будет лучше (понятнее, удобнее, производительнее...) реализовать новую стратегию хранения Cache Storage. Каковы были коммерческие мотивы такого решения, думаю, каждый может домыслить сам :) Ну а Fidelity/Sanchez в своем SQL-движке (который лишь недавно обрел статус отдельного продукта) как-то обошлась без столь радикальных мер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 15:50 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslovдля появления какой-либо новой "фичи" фирма должна чувствовать некий финансовый стимул (прямой или косвенный) Позиционирование продукта на новом сегменте рынка - разве не достаточный стимул для саморазвития? Тем более, что технических усилий для этого нужно не так много. Остальное, конечно, сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 22:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievПозиционирование продукта на новом сегменте рынка - разве не достаточный стимул для саморазвитияУв. Al.Veliev, я-то не против, Вы их (разработчиков) попробуйте убедить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 12:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ув. Alexey Maslov, вот ответ от FNFIS: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 22:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Александр (не ошибаюсь? :), нововведение обычно предлагает тот, кто считает его актуальным по тем или иным причинам - так уж повелось :) Пишите в m_ru - лист рассылки открыт для всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 10:43 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievА ув. Е.Каратаев не будет против внедрить такую "фичу" в свой miniM в будущем? На M_RU я встечал Вашу фамилию и потому осмеливаюсь предположить, что если Вы не против, то может быть, предложите там такое нововведение, хотя бы до 0.1 сек? Мне это сделать несколько неудобно, т.к. я не уверен, что смогу этот miniМ запустить в Linux и получится, что предложение делает "вдруг откуда ни возьмись" и неизвестно зачем да ещё не видевший продукта в глаза. В MiniM все таймауты принимаются интерпретатором до миллисекунд. Другое дело что при отработке самого таймаута будет погрешность исполнения. В погрешность входят по меньшей мере: аппаратное разрешение, переключение контекста операционкой, накладные расходы на отработку интерпретатором. Было бы интересно узнать, заработал ли MiniM в линухе под Wine. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 13:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
В MiniM все таймауты принимаются интерпретатором до миллисекунд. Другое дело что при отработке самого таймаута будет погрешность исполнения. В погрешность входят по меньшей мере: аппаратное разрешение, переключение контекста операционкой, накладные расходы на отработку интерпретатором. Не могу это определить иначе как победой здравого смысла. Было бы интересно узнать, заработал ли MiniM в линухе под Wine. Если Вас устроит, в августе смогу этим заняться. О результатах сообщу на форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2009, 22:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Самое неприятное, что есть в Cache, это невозможность найти работу, зная его :( Самое приятное, это WRC, который работает и решает любые проблемы в считанные часы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2009, 14:57 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Dmitry V. LiseevСамое неприятное, что есть в Cache, это невозможность найти работу, зная его :( это типа удар ниже пояса?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2009, 15:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Dmitry V. LiseevСамое приятное, это WRC, который работает и решает любые проблемы в считанные часы. :) Также приятно, что Московские консультанты всегда стараются помочь, лично мне они очень помогают, спасибо им за это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2009, 16:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Найти работу в глубинке действительно сложно, собственно из-за этого и переехал в Москву, тут кое-где вроде как еще требуются программисты каше да WRC, это хорошо бывает, что при отсутствии московских из поддержки, спецы с европы сами переводят с русского и пытаются помочь _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2009, 16:16 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
DAiMor да WRC, это хорошо бывает, что при отсутствии московских из поддержки, спецы с европы сами переводят с русского и пытаются помочь Точно, мне как-то один коллега из Испании помогал, А еще из Германии писали. Жаль что очередной админ их из почты поудалял - не помню имен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2009, 16:22 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
DAiMorНайти работу в глубинке действительно сложно, собственно из-за этого и переехал в Москву, тут кое-где вроде как еще требуются программисты кашеНу, если для Cache город Санкт-Петербург - это глубинка... Я в Питере не мог работу найти, несмотря на 7 лет опыта программистом и архитектором только в Cache. Вот тема: "А в Питере программист Каше никому не нужен?" . Вот резюме: "Резюме Project Manager/Team Leader/Architect/Analyst (Питер)" . Если хотите развить это тему, могу еще рассказать, как шарахались от меня в компаниях, где я был на собеседованиях. Так что упоминание о Cache из резюме пришлось просто вычеркнуть, а на вопрос: "Чем занимались последние 7 лет?", - лучше было отвечать "ничем", вместо "Проектировал архитектуру корпоративных систем на Cache". Ибо у работодателей крайне негативное впечатление о Cache. Почему так происходит? Не знаю. Вероятно, какие-то недочеты в маркетинге InterSystems. Центр разработки в SolidWorks-Russia прекратил свое существование в связи с моим увольнением. Это, кстати, жирный минус в использовании Cache и для компании: увольнение единственного сотрудника ставит крест на успешном и процветающем бизнесе, в который вложены миллионы $$$. А фраза "кое-где вроде как" точно характеризует ситуацию в Москве: требуется Ведущий разработчик Cache (Москва) . Проблема не в том, что технология неудачная, а в неудачной политике продвигающих ее компаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2009, 13:46 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
У меня опыта работы значительно меньше, всего 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2009, 13:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Справка: Центр разработки SolidWorks Russia работает по сей день. Используя технологию от Intersystems выпустил еще несколько версий основного продукта. http://www.solidworks.ru/products/swr-pdm/product_history/ При этом Cache стоит признать устойчивой технологией и к смене персонала, и к "просадкам" по сервису (действующие установки системы оказались очень устойчивыми, в чём, несомненно крупная заслуга основного архитектора-проектировщика Лисеева Д.В. Другим работодателям дал бы рекомендцию - можно поручать ответсвенные проекты, где нужно делать тщательную проработку архитектуры.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2009, 17:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Холин М.Г.Центр разработки 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 вернуться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2009, 20:03 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ну я Было бы интересно узнать, заработал ли MiniM в линухе под Wine. Под Вине в линуксе MiniM не заработал. Очевидно, нужен WMWare. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2009, 21:58 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 вернуться. А может нет там искали, ребята? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2009, 22:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievА может нет там искали, ребята?В частности, вот тут искали: Много в Питере разработчиков на Cache? И вакансии вывешивали. В первую очередь необходим был саппорт, т.е. умение поставить и отконфигурить сервер, посмотреть и проконтролировать логи сервера и проконсультировать сисадмина заказчика. Это легко можно сделать по электронной почте, даже, если сисадмин заказчика ничего не понимает в Cache. Учитывая, что серверная часть продукта поставлялась в исходниках, понимание архитектуры Cache и знание основ ObjectScript позволяет сопровождать предыдущую версию решения, пока разработчики занимаются следующей. А в ситуации, когда есть сотни заказчиков и кроме разработчика никто в системе ничего не понимает, сразу после выпуска версии разработчик начинает заниматься ее сопровождением, решением технических проблем инсталляции, консультированием и т.д. На разработку следующей версии времени уже не остается. Тем не менее, календарных план-графиков и сроков производства никто не отменял. В итоге, в рабочее время надо заниматься саппортом, а по ночам гнать план, поскольку разработчику платят за реализацию новых фич, а не за то, что уже реализованные фичи у заказчиков работают без сбоев. Все это очень грустно, учитывая, что можно легко найти сколько угодно студентов в любом регионе страны, которые смогут поставить и отконфигурить Oracle, MS SQL, MySQL и написать пару запросов. В итоге, при резком развитии бизнеса и расширении клиентской базы единственный разработчик не становится узким местом. И у него не болит голова, какое аппаратное обеспечение у каждого из сотни заказчиков, какая версия СУБД, правильная ли лицензия установлена, осталось ли сободное местное место на дисках, правильно ли бэкап делается и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2009, 00:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Если кому-то интересно, я могу рассказать, какие задачи эффективнее всего решаются на Cache, поскольку в SolidWorks Russia проводились очень серъезные исследования и сравнения разных технологий. И если с точки зрения рынка труда все печально, то с точки зрения технологий именно Cache позволил еще в 2001 году сразу прорваться на занятый конкурентами рынок. Возможность реализации сложной серверной логики в короткие сроки, беспрецендентная производительность и масштабируемость позволила выгодно отличаться от конкурирующих решений на реляционных СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2009, 00:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ну в общем я полагаю, что самым правильным способом, будет обучать своих специалистов самим, т.е. искать просто способных студентов, и обучать их азам, т.е. вы сделаете и себе и тем самым студентам лучше, хотя все это в зависимости от студентов, но просто думаю нужно уметь правильно подобрать тем более для организаций занимающихся разработками я думаю это нормальный подход, да к тому же это привлечение в наши ряды все больше людей _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2009, 01:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Нельзя сказать, что очень просто найти готового разработчика или администратора по СУБД 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 человек. Так что регламентные работы настроить обязательно нужно, но много времени на администрирование, как правило, не уходит. Вот такие комментарии. Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2009, 14:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
DAiMorну в общем я полагаю, что самым правильным способом, будет обучать своих специалистов самим При наличии у Вас неограниченного количества денег и времени. DAiMorт.е. искать просто способных студентов, и обучать их азам И только через пару лет тренировки на заказчиках они станут специалистами. DAiMorт.е. вы сделаете и себе и тем самым студентам лучше Если Вы будете платить этим студентам существенно больше, чем платят за такую-же работу с другими технологиями. DAiMorтем более для организаций занимающихся разработками я думаю это нормальный подход Мне кажется, для таких организаций профильный бизнес - разработка. Обучение - бизнес совсем других организаций. Обучение сотрудников под себя - очень дорого. Такие вещи могут позволить себе монстры вроде люксофт, рексофт, епам и т.д. Но как раз там Cache и не используют, к сожалению. DAiMorда к тому же это привлечение в наши ряды все больше людей Для этого нужно, чтобы InterSystems поддерживал опен-сорс комьюнити. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2009, 21:03 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
я лично стал программистом Cache\', просто придя работать программистом при том учете что опыта работы программистом у меня не было, да и весь опыт это 6 лет работы на заводе рабочим, и учеба заочно в институте по специальности прикладной информатики, за год до окончания института я устроился программистом, там научился и получил опыт, причем научился я этому довольно быстро, и быстро стал работать наравне с остальными программистами в отделе, отдел на 7 программистов включая начальника ("krvsa"), плюс постановщики и документатор а как еще можно стать программистом Cache\' _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2009, 23:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
DAiMorа как еще можно стать программистом Cache'А зачем это нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2009, 00:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Dmitry V. LiseevDAiMorа как еще можно стать программистом Cache'А зачем это нужно? А зачем нужно дышать, Дмитрий? Ведь и Вы вряд-ли в будущем будете без исключительных обстоятельств заниматься чем-то другим, не правда ли? Впрочем, я рад и признателен Вам всем, что сорвавшуюся в сердцах в моём предыдущем посте фразу не сделали почвой для "а МЫ на ВАС" и т.д., а сделали темой для обсуждения серьезной проблемы. А написав эту фразу, я хотел выразить ту мысль, что почему-то между соискателем и работодателем - огромная пропасть. И пропасть эта практически везде и во всех отраслях деятельности. Именно поэтому я сейчас даже и не пытаюсь что-либо искать, а пишу исключительно для души. И вроде иногда неплохие вещи получаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2009, 00:06 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Это я не для саморекламы писал. И ещё хочу сказать Вам, Дмитрий, что со временем Вы поймете, какая это радость, что сделанное Вашими руками работает и нужно людям после того, как Вы уже занимаетесь чем-то другим. И да минует Вас горькая чаша топить свои работающие проекты. Удачи Вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2009, 00:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Александр здравствуйте !!! Как насчет установки MV1 (aka MUMPS) V 1.50 под Linux ? Вам удалось запустить его ? И еще, у них работа сокетов не очень отличается от стандартных (остальных MUMPS реализаций) ? Мне бы очень хотелось попробовать этот продукт - легкий и простой в использовании. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2009, 06:32 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievЭто я не для саморекламы писал. И ещё хочу сказать Вам, Дмитрий, что со временем Вы поймете, какая это радость, что сделанное Вашими руками работает и нужно людям после того, как Вы уже занимаетесь чем-то другим. И да минует Вас горькая чаша топить свои работающие проекты. Удачи Вам. Надо сказать, что система SWR-PDM/Workflow, в разработке которой самое активное участие в свое время принимал Дмитрий, отлично работает, развивается и все в ней замечательно. Об этом на этой странице написал руководитель разработки Михаил Холин. Система успешно внедрена у крупных заказчиков. Я лично общался с несколькими заказчиками и они очень довольны этой системой. Так что Дмитрию есть чем гордиться. Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2009, 12:53 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 можно:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2009, 18:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Valeriu, sorry -> http://cgi2m.net.ua/m150.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2009, 18:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте все! К моему очередному дню рождения хостер подготовил подарок - мой сайт перевели на линукс. Теперь я имею счастливую возможность показать, как М в связке с высокодинамичным HTML Triton работает в Сети на более-менее реальных объемах (я взял для примера 400Кбайт). Это мой Gedit - утилита наподобие PHP MyAdmin. Также есть новый интересный материал на моём сайте cgi2m.net.ua , часть статей уже переведена на русский язык, и процесс перевода в активной фазе. Сайт пока в черновом виде, извините за мелкие недоделки, просто уже про новое содержание напечатали в других местах. Добро пожаловать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 00:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
вы бы на сайте хотя бы кодировку указали, а то меню не читаемо _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 11:16 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-veliev , такое выставлять, нужно быть ооочень самоувереным... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 20:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Мои соображения по поводу языка MUMPS. Язык М процедурный язык этим он похож на остальные языки типа С, явы, паскаля. Но М отличается от них несколькими принципиальными моментами: 1. Управление задачами. Язык М единственный имеет встроенное средство порождения задачи. Это команда JOB. Можете сравнить это с созданием класса потока в других языках. 2.Управление данными. Переменная возникает в момент ее использования. Локальная переменная так же может быть создана командой NEW. Я считаю что это минимальный и гибкий механизм управления данными хотя он с моей точки зрения недостаточно изолирует локальные переменные. 3.Описание данных. Оно в М отсутствует это принципиальное отличие языка . Благодаря этому в М отсутствуют ссылочные данные и связанные с ними ошибки. Из моего опыта 80% ошибок в программе на других языках это обращение к несуществующим данным. В результате сколько нибудь большые проекты на этих языках практически не отлажены. В М таких ошибок вообще не бывает. Основной ошибкой в М программах неопределенная переменная. Эта ошибка легко локализуется и исправляется. Программы на М поэтому легко и быстро отлаживаются. Описание переменных в других языках создает для них же колосальные трудности которые они затем героически преодолевают. В Паскале огромная библиотека программ многие из которых отличаются только типом передаваемых параметров либо возвращаемых значений. В М по сравнению с Паскалем библиотечных функций совсем мало но они функционально полнее библиотеки Паскаля. После встроенных функций языка М библиотеки на других языках оставляют впечатление сумбурной кучи бессвязных программ. 4. Переменные в М являются деревьями. Это значит что это готовые структуры данных. Дерево является частью языка М. Другие языки встроенных структур данных неимеют вообще. А примитивные структуры реализованы в виде библиотеки классов. Такими классами в яве являются списки, карты,очереди. Нет необходимости говорить что возможности дерева значительно шире и работать с ним намного проще. Большая часть кода в проектах занимается работой со структурами данных и во многих случаях мне вообще не важно знать тип данных. Тип данных становится важным в основном при вводе и проверке данных а это незначительная часть кода приложения да и тип данных мне в этом случае мало помогает. Получается что я выполняю описание переменных не для себя а для транслятора. Благодаря этим особенностям язык MUMPS является компактным, мощным и надежным языком программирования и ему нет равных среди других языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 18:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_sharМои соображения по поводу языка MUMPS. ... Благодаря этим особенностям язык MUMPS является компактным, мощным и надежным языком программирования и ему нет равных .... Те, кто хорошо знает mumps все это понимают, а те, кто с ним не знаком, никогда не поймут.. С этим придется смириться, mumps не преподают в вузах:) А IS из коммерческих соображений делает ставку скорее на SQL, чем на mumps. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 20:48 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Те, кто хорошо знает mumps все это понимают, а те, кто с ним не знаком, никогда не поймут.. С этим придется смириться, mumps не преподают в вузах:) А IS из коммерческих соображений делает ставку скорее на SQL, чем на mumps. Посмотрите на новую технологию Java eXTreme в Cache' 2010.2. Вот маркетинговое описание на русском языке . Из программы на Java можно работать непосредственно с глобалами и очень быстро... Это нужно для специализированных задач и там где они есть, мы рассказываем про "прямой" доступ к данным. Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2010, 19:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Да слова Вадима подтверждают высказывание предыдущего оратора, что IS ориентируется не на МИМПС а на другие технологии. С точки зрения коммерции может быть это и оправдано, но с точки зрения технологии МИМПС безусловно нет. Они свели МИМПС к языку базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 17:16 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
В Caché используется Caché ObjectScript , а не MUMPS, хотя между ними и есть связь: Relationship with ANSI Standard M misha_sharДа слова Вадима подтверждают высказывание предыдущего оратора, что IS ориентируется не на МИМПС а на другие технологии. С точки зрения коммерции может быть это и оправдано, но с точки зрения технологии МИМПС безусловно нет. Они свели МИМПС к языку базы данных. Мне кажется, что InterSystems ориентируется прежде всего на своих клиентов, а не на MUMPS или технологии. В WRC для этого есть специальный тип запроса на новую функциональность или её улучшение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 19:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Сейчас меня, наверно, заплюют, но мне кажется, что чистый М далеко не шоколад. Это довольно древний язык, со своими тараканами - глобальная видимость локальных переменных. Забыл сделать new - и в твоем цикле переменные будет менять подпрограмма неизвестно какого уровня. В каше сделали procedureblock (правда свои "фичи" приколы в реализации) - модульность на уровне процедур. Ну в наше время это просто капец. В каше есть классы. - крайне тяжелая модифицируемость программ. Не представляю, как можно в большой программе дорабатывать структуры хранения. В каше при изменении классов автоматически компилируются связанные, sql меняет план запроса при изменении индексов. Работу со специфичными структурами можно закрыть методами классов и менять их не меняя интерфейс. В каше большая библиотека классов, SQL, встроенный CSP и многое другое. Фишка М - в том что это "ассемблер", язык низкого уровня для СУБД. Те же B-деревья используются в других СУБД, но там они обрамлены кучей дополнительных действий, ограничений и т.д., что считает нужным сделать разработчик СУБД., и только М из (известных мне) работает со структурами данных настолько на низком уровне Я считаю, М в чистом виде для создания больших систем малопригоден, но он может быть основной для других СУБД. Intersystems сделала Cache, причем оставив преимущества М. Правда, я считаю, на М (или каше) можно создать что-то совершенно новое, прорывное. Интерсистемс во многом делает то, что уже в каком-то виде реализовано в других СУБД. Где-то подсознательно это разочаровывает, хочется большего, но я не знаю, чего ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 20:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Да, с другими системами, где есть М, кроме каше не работал. Так что это из области "не читал, но осуждаю" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 20:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_sharИз моего опыта 80% ошибок в программе на других языках это обращение к несуществующим данным. Тут на самом деле ситуация не настолько хороша - ибо помимо UNDEFINED есть еще и SUBSCRIPT - а это ошибка куда неприятнее будет. misha_shar4. Переменные в М являются деревьями. Это значит что это готовые структуры данных. Дерево является частью языка М. Это несомненный плюс... с точки зрения языка и алгоритмов обработки, но с точки зрения хранения глобалов это, как не странно, еще и ахиллесова пята - ибо ряд задач - например последовательная выборка большого объема - на деревьях работает медленнее. В итоге в чисто реляционных СУБД - запрос вида SELECT TOP 20000 * FROM SomeTable работает быстрее чем в Каше - но они, слава богу, в реальных задачах встречаются достаточно редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 07:46 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Отсутствие необходимости определять переменные, кстати, не такой уж несомненный плюс. Были случаи, когда программист из-за опечатки присваивал значение другой переменной. А вот отсутствие типов переменных меня после С++ шокировало, но сейчас нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 09:49 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Отсутствие необходимости определять переменные, кстати, не такой уж несомненный плюс. Были случаи, когда программист из-за опечатки присваивал значение другой переменной. А вот отсутствие типов переменных меня после С++ шокировало, но сейчас нравится. Как раз в C изначально не было типов. Но потом появились:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 19:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ну начнем по порядку. На форум мнения выносятся для обсуждения. А не для оплевывания. Оговорюсь речь идет о чистом Мампсе. Никаких объектов и 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 09:13 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_sharЯ их написал и отправил в комитет по развитию языка, в ИнтерСистем, в GTM, MIniMИнтересно будет почитать ответы вендоров, если Вы продублируете их здесь. ИМХО, остановка в развитии MUMPS еще не является признаком его скорой смерти: многие языки не развиваются, начиная с 90-х, тем не менее на них пишут и еще долго будут писать. Прежде чем реализовать какое-либо новшество, вендор задает себе вопрос: сколько я на этом заработаю? (это уже из личного опыта общения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 13:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Misha_shar, много написали, не смогу ответить, не зарывшись в деталях и не потеряв нить. - С и М Непонятно, почему сравниваете М с С, ведь на С уже практически никто не пишет, а стандартом программирования стал С++, который имеет принципиально другую идеологию? (Просьба фанатам других объектноориентированных языков воздержаться, это непринципиально ) - По поводу модифицируемости, инкапсуляции и т.д. На самом деле в итоге в том же С++ инкапсуляция, наследование, полиморфизм и прочее в итоге преобразуются в ассемблерный код. Т.е. эти понятия существуют только в сознании программиста и чисто технически то же самое можно получить тот же результат с помощью С или даже ассемблера. Попробую провести аналогию. Вот у вас есть квартира, и вы хотите в ней закрыться и общаться с помощью телефона, аськи, скайпа и пр. Но у вас не только нет двери, но и сквозь стены можно пройти. Тогда вы начинаете всячески внушать окружающим, что стены у вас железобетонные в метр толщиной, двери железные и заварены и т.д. Возможно, вы этого добьетесь. Т.е. это тот случай, что вы добились инкапсуляции в М. Теоретически это возможно при наличии очень серьезной внутренней дисциплины, на практике маловероятно. Задача не в том, что инкапсуляция и др. дают какие-то новые возможности, их цель как раз ограничить(дисциплинировать) сознание программиста. - по поводу проблем с SQL Возможно, вы просто не умеете его готовить. В том же Каше SQL просто чудесно дополняет объектную модель. Сборка данных из нескольких классов буквально в одно движение. - по поводу ошибок и отладки Ошибки вообще можно поделить на разные типы, каждый следующий тип на порядок сложнее в исправлении: 1. ошибки компиляции 2. ошибки выполнения (undefined и subscript т.д.) 3. ошибки логики выполнения (когда программа отрабатывает, но работает неправильно, причем это не всегда заметно) 4. ошибки постановки задачи Так вот, ошибки 2го типа вообще говоря это не то, о чем есть смысл спорить, они исправляются буквально через несколько тестовых запусков. Ошибки логики выполнения уже сложнее, и они зависят от того, насколько прозрачен язык. И пока я не уверен, что М самый простой в восприятии. - по поводу доработок М большинство производителей М побоятся отойти от стандарта. Те доработки, которые вы предлагаете, на мой взгляд, слишком слабые, чтобы ради них кардинально ломать формат языка. Да и вообще, формат языка вряд ли будут менять, так как язык не находится в стадии развития. Интерсистемс в этом смысле исключение, т.к. она сама себе стандарт. Про локальные переменные: в каше есть ProcedureBlock Кстати, DO (D) ENDDO (END), IF (I) ENDIF (END) зачем нужны? чем не нравится синтаксис в фигурных скобках? Разбор выражения глобальной ссылки: в каше есть $QSUBSCRIPT Время в командах ожидания должно задаваться в милисекундах а не в секундах. - Абсолютно согласен. Непозволительно в наше время считать время в секундах. Чем не нравится объектно-классовая модель каше? Она значительно мощнее того, что вы предлагаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 18:25 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
VadimFБредятина Те, кто хорошо знает mumps все это понимают, а те, кто с ним не знаком, никогда не поймут.. С этим придется смириться, mumps не преподают в вузах:) А IS из коммерческих соображений делает ставку скорее на SQL, чем на mumps. Посмотрите на новую технологию Java eXTreme в Cache' 2010.2. Вот маркетинговое описание на русском языке . Из программы на Java можно работать непосредственно с глобалами и очень быстро... Это нужно для специализированных задач и там где они есть, мы рассказываем про "прямой" доступ к данным. Вадим Это хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 22:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Я считаю, М в чистом виде для создания больших систем малопригоден, но он может быть основной для других СУБД. mumps - это инструмент для создания СУБД. Это вроде общеизвестно:) Блок А.Н. Intersystems сделала Cache, причем оставив преимущества М. Правда, я считаю, на М (или каше) можно создать что-то совершенно новое, прорывное. Интерсистемс во многом делает то, что уже в каком-то виде реализовано в других СУБД. Где-то подсознательно это разочаровывает, хочется большего, но я не знаю, чего ... Нужна другая модель данных:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 22:38 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
По поводу моих предложений мне пришло 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 сейчас не входит создание чего-то нового и экспериментального. Если вносить что-то, какие-то изменения, то мне придется их документировать, приводить примеры, соответственно мне надо всю внутреннюю кухню понимать детально как никто другой. Кроме того, это все большая работа и для нее должны быть основания. Пока ничего такого не вижу. Может, предложите обсуждение где-то на публичном ресурсе? С уважением, Евгений Каратаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 11:24 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
{ - По поводу модифицируемости, инкапсуляции и т.д. На самом деле в итоге в том же С++ инкапсуляция, наследование, полиморфизм и прочее в итоге преобразуются в ассемблерный код. Т.е. эти понятия существуют только в сознании программиста и чисто технически то же самое можно получить тот же результат с помощью С или даже ассемблера. } Полностью согласен но все же я пишу на МИМПСЕ а не на Асемблере. Я речь веду о свойствах языка. Есть ли в нем определенные конструкции и насколько они удобны для пользователя. В стандартном МИМПСЕ нет объектов их нет и в МиниМ хочу предложить вспомогательные программы, которые позволят писать в объектном стиле в МиниМ. Аналогичные программы могут быть использованы и в Каше хотя не поворачивается язык предлогать им это. Вот эта программа %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 ----------------------------------------------------------------- Не скажу что все отлажено но идея должна быть ясна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 11:46 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
{ - по поводу проблем с 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 без аргументов прекрасно справляется с этими функциями. { Чем не нравится объектно-классовая модель каше? Она значительно мощнее того, что вы предлагаете } Представте себе что не нравится и очень сильно. Никакой мощности в ней нет. А вот лишней мороки сколько угодно. Язык М мягко намекает не надо описаний переменных. А класс это обыкновенная переменная созданная пользователем. В традиционных языках Класс состоит из описания и блока реализации. Так вот описания вообще не нужно достаточно блока реализации. А описание полько порождает лишнюю работу и больше ничего не дает. Не считая не нужного описания класса Интерсистем еще и зафиксировало структуру классов. И структура данных в результате была потеряна. А это очень принципиальный момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 12:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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** года - бред сивой кобылы, извините. Косвяночка смотрится той самой каплей "шанеля" в щщах ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 13:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesovКосвяночка смотрится той самой каплей "шанеля" в щщах ;) Ну что ты прям так сразу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 16:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Misha_star, во-первых, почему вы используете такой странный способ цитирования? Мне он кажется гораздо менее удобным, чем принятый здесь. Во-вторых, ответ Ed Demoel хоть и слегка циничный "комитет не собирался 12 лет и в будущем собраний не ожидается", но по сути очень правильный. Чем он вас не устраивает? В-третьих, мы с вами находимся в разных вселенных, и никогда не сможем прийти к одному мнению, если вы называете М простым и понятным языком и приводите те образцы кода, которые приводите, Вы говорите, "описания вообще не нужно достаточно блока реализации". Вы работали в команде? Сколько человек работало с вами? Какого объема проекты были реализованы? Что вообще значит "Структура данных была потеряна, после того, как была зафиксирована"?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 16:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesov, косвяночку по-первой лучше подавать полностью, обильно приправленной комментариями, благо в Студии есть hotkey Ctrl+E и подсветка ;) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 16:52 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
{ во-первых, почему вы используете такой странный способ цитирования? Мне он кажется гораздо менее удобным, чем принятый здесь. } Не знаю как вставить цитату. Текст готовлю отдельно в блокноте а потом перенашу через буфер обмена. Чтобы сохранить переписку для себя. { Во-вторых, ответ Ed Demoel хоть и слегка циничный "комитет не собирался 12 лет и в будущем собраний не ожидается", но по сути очень правильный. Чем он вас не устраивает? } Меня все ответы устроили. Меня не устроили без ответа. Это демонстрирует положение с развитием языка М. Значит спасение утопающих дело рук самих утопающих. В Англицком я не силен но он по моему написал что мои предложения еще куда то в 2 адреса направил куда я не понял. { В-третьих, мы с вами находимся в разных вселенных, и никогда не сможем прийти к одному мнению, если вы называете М простым и понятным языком и приводите те образцы кода, которые приводите, } Насчет вселенных вы может быть и правы. У меня такое впечатление что я нахожусь в другой вселенной чем остальные. Образец кода я привел для не демонстации образца программирования а совсем по другому поводу. Эти программы должны были продемонстрировать как можно работать с объектами на М. Косвенность и команда Х создают проблему понимания особенно если не понятно что программа делает. Но это очень мощный механизм и без него язык много потеряет. Надо придумать языковые конструкции которые позволят избавится от косвенности. Я думал над этой проблеммой. Если изменить синтаксис языка в части имен переменных то можно обойтись без косвенности. Например: имя VAL[1,2,3,"ac"] заменить на [VAL,1,2,ac] то это позволит в большинстве случаев отказаться от коссвенности. Это предложение я не включил в свои Предложения из за опасения что меня сочтут совсем графоманом. Если интересно то я могу подробно прокоментировать программы. { Вы говорите, "описания вообще не нужно достаточно блока реализации". } Да я это говорю и привел в доказательство этого программы. Это утверждение реализовано. { Вы работали в команде? Сколько человек работало с вами? Какого объема проекты были реализованы? } Как я понял сомневаетесь в моей квалификации. Я с 85года работаю либо сам либо еще содним человеком который помогает мне продумывать модель приложения. А прграммирую толькоя сам. Проектов несколько но основной это бух.учет. В 80годах я на ДИАМСЕ написал зарплату которую ставили в Москве, Ухте , Донецке и Свердловске. Сейчас мы работаем в основном в Казахстане. Как вы хотите что бы я оценил объем? { Что вообще значит "Структура данных была потеряна, после того, как была зафиксирована"?! } Объект с КАШЕ я не могу привязать к любой вершине и теряю в результате индекс переменной. КАШЕ сам строит структуру хранения объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 07:38 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Не знаю как вставить цитату. Текст готовлю отдельно в блокноте а потом перенашу через буфер обмена. А ты: - нажми на ссылку "Цитировать" под нужным сообщением - скопипасть себе текст целиком - потом разбей на куски, что собираешся цитировать - напиши свои коментанрии под цитатами - это все выкладывай тут Примеры текста с цитированием можно посмотреть у любого сообщения с цитированием если нажать описаную выше ссылку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 08:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Misha_star Для тестирования возможностей форума даже есть отдельный подфорум . Как мне оформить свое сообщение? PS: на чём пишете клиент (Pascal,C,Java,.NET,Web,etc.)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 09:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit Misha_star PS: на чём пишете клиент (Pascal,C,Java,.NET,Web,etc.)? То приложение которое сейчас в эксплуатации клиент написан на Delphi Новую версию пишу на Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 09:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar А какие технологии доступа используете для Java (Java Binding, JDBC, Hibernate, другое)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 10:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar А какие технологии доступа используете для Java (Java Binding, JDBC, Hibernate, другое)? TCP/IP канал. Асинхронный и синхронный способ обмена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 10:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Misha_star, В-третьих, мы с вами находимся в разных вселенных, и никогда не сможем прийти к одному мнению, если вы называете М простым и понятным языком и приводите те образцы кода, которые приводите, Часть предложени как раз направлена на улучшение читабельности языка. Это предложение по вводу команд конца блоа END и отказаться от использования пробела в качестве разделителя команд. А ввести другой символ конца команды например точку с запятой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 10:52 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Спасибо за ответ. Как я понимаю, Вы не используете стандартную объектную модель в Caché и SQL, наверное, тоже. Каким образом разработчики клиентских приложений у Вас получают описание интерфейсов методов/программ, структур данных, примеры использования на своём языке/технологии (особенно, если не знают Caché)? Ведь использование Caché Documatic в данном случае неприемлемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 10:57 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar Спасибо за ответ. Как я понимаю, Вы не используете стандартную объектную модель в Caché и SQL, наверное, тоже. Каким образом разработчики клиентских приложений у Вас получают описание интерфейсов методов/программ, структур данных, примеры использования на своём языке/технологии (особенно, если не знают Caché)? Ведь использование Caché Documatic в данном случае неприемлемо. Разработчиком клиетского приложения являюсь я сам. Сначала разрабатываю протокол обмена. Какие запросы посылает клиент серверу. И какие команды отправляет сервер клиенту. Это обыкновенные текстовые сообщения. Например: Заходит новый клиент он посылает запрос серверу в котором его идентификация. Далее запрашивает меню для своего клиента. Сервер находит этого клиента и отправляет ему содержание этого меню. Все компоненты приложения уникальным образом идентифицированы. Когда клиент запрашивает он сообщает какой компонент делает запрос. Сервер в ответе указывает компонент и что с ним надо делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 11:24 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar Спасибо за ответ. Как я понимаю, Вы не используете стандартную объектную модель в Caché и SQL, наверное, тоже. Объектную модель и SQL я не использую пишу только на МИМПСЕ. Я не понимаю как через SQL наладить Асинхронный обмен. Отчет может формироваться до нескольких минут и висеть клиенту на запросе не корректно. У меня клиент посылает запрос на формирование отчета и не ждет ответа. Сервер готовит отчет и посылает его клиенту в его ответе указывается какие компоненты чем должны быть заполнены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 11:30 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar TCP/IP канал. Асинхронный и синхронный способ обмена. Какой API сервер используется на стороне MUMPS ? Ваша разработка или что-то стандартно ? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 11:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Ещё раз спасибо за Ваши ответы. Если Вам интересны другие способы работы с Caché из Delphi (в том числе и асинхронный обмен), есть соответствующая статья . Для комфортного чтения советую её интегрировать в стандартную документацию Caché (инструкции в конце статьи). При работе с Java Binding в генерируемые СУБД Caché java-файлы попадают, наряду с прототипами классов, запросов и методов, также и комментарии к ним, что существенно облегчает процесс разработки. Вышеперечисленное относится и к .NET Binding . PS: обмен информацией у Вас между клиентским приложением и Caché поддерживает шифрацию и/или целостность передаваемых данных по Kerberos, SSL или что-то другое используете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 13:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Misha_star, я сомневаюсь не в вашей квалификации, а в том, что ваш подход переносим на реальность других программистов. Мне показалось, что ваши условия несколько специфичны и, в общем, я угадал. По вопросам документации, могу утверждать, что вы в корне не правы. Ситуация, когда разработкой занимается один человек - не является типичной. Иногда одним проектом занимаются разные команды (полностью сменяющие друг друга) или над системой одновременно работают несколько человек, некоторые из них новички. В этом случае очень плохо не иметь зафиксированной документации. И система документирования классов каше очень хорошо позволяет преодолевать проблему, ненавязчиво побуждая в ходе разработки программисту документировать свой проект. По поводу косвенности, это мощный инструмент, позволяющий сделать вещи, которые другим способом сделать нельзя, но не хотел попасться врачу, которые все мои болезни будет решать несомненно мощным инструментом - скальпелем Так получилось, что соседствовало с тезисом о простоте и понятности языка М. По поводу классов Каше - вы поверхностно к ним подходите. Во-первых, вы можете вообще не делать хранимые классы, а просто-классы - оболочки для своих структур данных со своим интерфейсом. Правда sql и объекты работать не будут. Во-вторых, вы можете не использовать стандартную схему хранения. В принципе я "натягивал" класс на уже существующие глобалы. Слишком сложный глобал можно покрыть системой классов. В-третьих, вы можете использовать стандартную схему хранения, но использовать индексы. При некотором навыке бегать по индексам вполне удобно (в тех случаях, когда использование объектов или sql не оправданно) Преимущество классов каше в том, что вы можете избавиться от большого количестве рутинной работы, и там где нужно - использовать все тот же М. По поводу синтаксиса - это все-таки во многом дело вкуса и привычки. Я соглашусь на изменение синтаксиса, если это мне даст какие-то преимущества. Но пока я не вижу значительных преимуществ от ваших предложений по синтаксису. Помогли бы примеры задач, где вы приводите постановку, и решение в старом и новом синтаксисе. Если в новом синтаксисе оно будет короче, читабельней, или давать новые возможности - да, это будет интересно. Но пока не очевидно. По поводу асинхронности и SQL - как связано холодное с кислым? С помощью SQL вы решаете те же задачи, что с помощью обхода глобалов, разница в том, что собираемые данные, условия выборок, агрегирование вы декларируете в SQL-запросе, а большую часть рутинной работы делает за вас каше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 16:10 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Valeriumisha_shar TCP/IP канал. Асинхронный и синхронный способ обмена. Какой API сервер используется на стороне MUMPS ? Ваша разработка или что-то стандартно ? Спасибо. Используется обыкновенная М программа. В документации по КАШЕ описан сервер который каждого клиента обрабатывает в отдельном потоке.Его и использую. Заходишь в документацию и ищешь TCP IP и попадаешь на описание TCP IP сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 19:11 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar Ещё раз спасибо за Ваши ответы. Если Вам интересны другие способы работы с Caché из Delphi (в том числе и асинхронный обмен), есть соответствующая статья . Для комфортного чтения советую её интегрировать в стандартную документацию Caché (инструкции в конце статьи). При работе с Java Binding в генерируемые СУБД Caché java-файлы попадают, наряду с прототипами классов, запросов и методов, также и комментарии к ним, что существенно облегчает процесс разработки. Вышеперечисленное относится и к .NET Binding . PS: обмен информацией у Вас между клиентским приложением и Caché поддерживает шифрацию и/или целостность передаваемых данных по Kerberos, SSL или что-то другое используете? Статью посмотрел. Но надо разбираться более внимательно. Обмен у меня не поддерживает ни шифрацию ни целостность. Так как обмен не стандартный что то разобрать в нем проблематично. То идет служебная информация(команды) то отрывочные данные. Обмен используется пока только в локальной сети и потерь данных не было. Протокол TCP сам по себе поддерживает целостнось данных и я посчитал что этого достаточно в моем случае. Я всегда нахожусь в жестком цейкноте и познакомиться с альтернативными технологиями у меня не хватает времени. Потом я не всегда осознаю что мне могут дать новые технологии а разобраться опять же нехватает времени. Хотя у меня возникает легкое подозрение что я не всегда прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 19:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Misha_star, я сомневаюсь не в вашей квалификации, а в том, что ваш подход переносим на реальность других программистов. Мне показалось, что ваши условия несколько специфичны и, в общем, я угадал. Ну что же делать жить то как то же надо. Я нашел для себя такую нишу и живу в ней. Насколько это типично я не берусь судить но как я понял это не вашь случай. Блок А.Н. По вопросам документации, могу утверждать, что вы в корне не правы. Ситуация, когда разработкой занимается один человек - не является типичной. Иногда одним проектом занимаются разные команды (полностью сменяющие друг друга) или над системой одновременно работают несколько человек, некоторые из них новички. В этом случае очень плохо не иметь зафиксированной документации. И система документирования классов каше очень хорошо позволяет преодолевать проблему, ненавязчиво побуждая в ходе разработки программисту документировать свой проект. Кто вам запрещает в модуле реализации класса потребовать делать подробное документирование в комментариях. Это скорее вопрос Административного управления а не программирования. Но я не применяю классы Каше даже не поэтому. У меня объекты зафиксированы классификатором. Каждый раздел классификатора имеет свой набор атрибутов и они еще динамически изменяются клиентом и я заранее не знаю этот перечень атрибутов. Это не позволяет мне зафиксировать описание класса. Получается что на обыкновенной глобали без классов мне работать удобней. Может это и специфика приложения но в данном случае классы мне не понадобились. А создавать классы ради классов мне зачем. При программировании клиента на Java я работаю только с классами там в этом есть необходимость. Блок А.Н. По поводу косвенности, это мощный инструмент, позволяющий сделать вещи, которые другим способом сделать нельзя, но не хотел попасться врачу, которые все мои болезни будет решать несомненно мощным инструментом - скальпелем Тезис не понял. Если есть возможность писать без косвенности то я так всегда и поступаю. Но к моему большому сожалению у меня не всегда есть такая возможность. Блок А.Н. Так получилось, что соседствовало с тезисом о простоте и понятности языка М. По поводу классов Каше - вы поверхностно к ним подходите. Во-первых, вы можете вообще не делать хранимые классы, а просто-классы - оболочки для своих структур данных со своим интерфейсом. Правда sql и объекты работать не будут. Да я знаю в Delpi есть такое понятие сериализация класса. Опять же у меня все упирается в осознание необходимости использования классов. Блок А.Н. Во-вторых, вы можете не использовать стандартную схему хранения. В принципе я "натягивал" класс на уже существующие глобалы. Слишком сложный глобал можно покрыть системой классов. В-третьих, вы можете использовать стандартную схему хранения, но использовать индексы. При некотором навыке бегать по индексам вполне удобно (в тех случаях, когда использование объектов или sql не оправданно) Да я согласен. Блок А.Н. Преимущество классов каше в том, что вы можете избавиться от большого количестве рутинной работы, и там где нужно - использовать все тот же М. Я не совсем понимаю какую рутинную работу за меня выполняют классы. Блок А.Н. По поводу синтаксиса - это все-таки во многом дело вкуса и привычки. Я соглашусь на изменение синтаксиса, если это мне даст какие-то преимущества. Но пока я не вижу значительных преимуществ от ваших предложений по синтаксису. Помогли бы примеры задач, где вы приводите постановку, и решение в старом и новом синтаксисе. Если в новом синтаксисе оно будет короче, читабельней, или давать новые возможности - да, это будет интересно. Но пока не очевидно. Замечание по существу верное. Надо попробовать. Но с моей точки зрения должна улучшиться читабельность. Блок А.Н. По поводу асинхронности и SQL - как связано холодное с кислым? С помощью SQL вы решаете те же задачи, что с помощью обхода глобалов, разница в том, что собираемые данные, условия выборок, агрегирование вы декларируете в SQL-запросе, а большую часть рутинной работы делает за вас каше. Так он делает не то что мне надо. Вся проблемма в том что свою выборку я не могу выразить с помощью SQL запроса. Поэтому то что мне надо я оформляю в виде программы и вместо формирования SQL запроса обращаюсь к этой программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2010, 20:07 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar В данном случае под целостностью данных подразумевалась проверка того, что кто-либо не перехватил и не подменил или испортил данные, которыми обмениваются клиент и сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2010, 08:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar В данном случае под целостностью данных подразумевалась проверка того, что кто-либо не перехватил и не подменил или испортил данные, которыми обмениваются клиент и сервер. Ну это маловероятно в локальной сети. Потом среди моих команд серверу нет команд создать целый документ. Документы создаются разобщенными и перемешанными с другими не относящимися к документу командами. Разобраться как Клиент создает документ только по протоколу очень тягостно. Надо иметь клиента. Но если бы у меня стояла такая проблемма. То я скорее всего воспользовался ZIP или каким то другим мало известным архиватором возможно с паролем. На Delphi я встречал подобные компоненты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2010, 10:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Блок А.Н. Преимущество классов каше в том, что вы можете избавиться от большого количестве рутинной работы, и там где нужно - использовать все тот же М. Я не совсем понимаю какую рутинную работу за меня выполняют классы. Блок А.Н. С помощью SQL вы решаете те же задачи, что с помощью обхода глобалов, разница в том, что собираемые данные, условия выборок, агрегирование вы декларируете в SQL-запросе, а большую часть рутинной работы делает за вас каше. Так он делает не то что мне надо. Вся проблемма в том что свою выборку я не могу выразить с помощью SQL запроса. Поэтому то что мне надо я оформляю в виде программы и вместо формирования SQL запроса обращаюсь к этой программе. Понимание преимущества классов несколько затруднено из-за смешения понятий ООП (не имеющего никакого отношения к базам данных) и моделей данных. К тому же в Cache несколько моделей данных, что еще больше запутывает:). Вам лучше использовать понятия классической объектной модели данных: объект (вместо класс) и экземпляр (вместо объект) [такие понятия используются, в частности, в X.Magic]. Объекты (как и, теоретически, "классы") используются для моделирования (в стиле, похожем на ER-модель) и управления данными. То есть, программист (как и в случае SQL) не обращается к глобалам, а получает/добавляет/обновляет/удаляет экземпляры объектов и экземпляры связей. Это "похоже" на чистый mumps, то есть, никаких проблем ("так он делает не то что мне надо") у Вас не будет. Польза SQL, действительно, не очевидна. Я уже говорил о том, что в сложной OLTP системе БОЛЬШИНСТВО запросов сводится к чтению/обновлению характеристик экземпляра, получению эземпляров объекта B, связанных с конкретным экземпляром объекта A, обновлению их характеристик. Очевидно, что никакой пользы от SQL здесь нет (а вред есть:)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2010, 23:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Понимание преимущества классов несколько затруднено из-за смешения понятий ООП (не имеющего никакого отношения к базам данных) и моделей данных. К тому же в Cache несколько моделей данных, что еще больше запутывает:). Вам лучше использовать понятия классической объектной модели данных: объект (вместо класс) и экземпляр (вместо объект) [такие понятия используются, в частности, в X.Magic]. Мне кажется что проблеммы не понимания существа классов возникает из за терминологии Классы , Объекты Экземпляры. Я считаю что то что называют экземпляром или объектом является переменной созданной пользователем, а класс это тип этой переменной. ИС скрестили класс с глобалью и получили ублюдка которого ни в одном другом языке не существует и назвали его хранимым классом. Он вроде бы класс и вроде бы какое то множество с непонятными свойствати но это не переменная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2010, 16:14 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar, Лучше, по моему, класс - это множество, с описанием свойств и методов для всего множества и для его экземпляров (если есть). А объект - экземпляр этого множества. Все равно для проектирования прикладных систем это низкий уровень (как и глобал и таблица). Нужно хотя бы ченовскую модель сущности - связи реализовать с поддержкой целостности данных, а так опять все ручками и намеками в комментариях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2010, 16:57 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ИС не скрестили класс с глобалью, а создали еще один уровень представления. В Каше абсолютно нормальные классы, с абсолютно нормальным поведением. Ублюдочность, как вы выразились, будет проявляться, если их искусственно в рамках одного процесса объекты "скрещивать" с глобалами и SQL, и еще желательно работать для полного эффекта через разные слои представления с одними и теми же данными. Здесь уж нужно выбирать. Точно такая же ублюдочность возникнет, если в С++ работать напрямую с регистрами - смешение уровней доступа чревато перекосом логики приложения. анекдотДоктор, мне больно, когда я так делаю. - А вы так не делайте! misha_starи получили ублюдка которого ни в одном другом языке не существует и назвали его хранимым классом. Он вроде бы класс и вроде бы какое то множество с непонятными свойствати но это не переменная. Вам совершенно напрасно кажется, что вы говорите очевидные вещи. Вы говорите не только не очевидные вещи, и не только вещи, с которыми можно спорить, но даже и такое, что непонятно, о каких вещах вы говорите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2010, 17:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Мне кажется что проблеммы не понимания существа классов возникает из за терминологии Классы , Объекты Экземпляры. Терминология имеет первостепенное значение, когда есть непонимание. А оно явно есть:) misha_shar Я считаю что то что называют экземпляром или объектом является переменной созданной пользователем, а класс это тип этой переменной. Не правильно считаете. Потому что, когда используется пара терминов класс/объект, экземпляр тоже есть, и это вовсе не объект:) Видите как важна терминология:) Но в целом, относительно понятия "переменная", Вы, конечно, правы. Но в этом нет ничего необычного. См. понятие "переменная отношения" в РМД. misha_shar ИС скрестили класс с глобалью и получили ублюдка которого ни в одном другом языке не существует и назвали его хранимым классом. Он вроде бы класс и вроде бы какое то множество с непонятными свойствати но это не переменная. Конечно, как Вы сами же сказали - это "тип переменной":) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2010, 23:29 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Кстати да, если уже придираться к терминам, то в С++ возможна такая команда: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. То есть ее тип переменной и то что она содержит отличаются. Если с таким подходом посмотреть на каше, то тут переменные неопределенного типа содержат oref объекта. Сами объекты существуют где-то в недоступном месте. Кстати, на один объект могут указывать несколько переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 06:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Вам совершенно напрасно кажется, что вы говорите очевидные вещи. Вы говорите не только не очевидные вещи, и не только вещи, с которыми можно спорить, но даже и такое, что непонятно, о каких вещах вы говорите. Да критику объектов мне надо прекращать, а то недалеко и до перехода на личности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 07:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Кстати да, если уже придираться к терминам, то в С++ возможна такая команда: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. То есть ее тип переменной и то что она содержит отличаются. Если с таким подходом посмотреть на каше, то тут переменные неопределенного типа содержат oref объекта. Сами объекты существуют где-то в недоступном месте. Кстати, на один объект могут указывать несколько переменных. Указатель на другую переменную такая же переменная, а то что она является указателем не имеет значения до момента ее использования. И содержит она ссылку а не объект. На МИМПСЕ это видно более очевидно. Set A=1,b="A",c="A" W @b,!,@c,! А из вашего утверждения вытекает что b и c это А. А это просто указатели на А. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 07:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Почему же, можно критику объектов и продолжить. Просто у вас цепочка "какие-то известные факты"->("рассуждения, личный опыт")->"выводы". И вот второе звено вы часто пропускаете или неприлично сокращаете, приходится за вас думать, как вы пришли к такому решению. И как раз попытка воссоздать чужую логику логику, и мало того - угадать, на основании какого опыта собеседник пришел к такому выводу, - это и вызывает у меня раздражение. А вовсе не критика объектов или других концепций каше. В вашем примере b и с b переменные и ни разу не указатели. Они содержат имя переменной, а не ссылку. Это другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 07:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. По вашей логике v - это указатель на переменную x ? Что же тогда с ? Указатель на команду? Ну бред же! Указатели это указатели, а косвенность это косвенность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 07:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shumisha_shar, Все равно для проектирования прикладных систем это низкий уровень (как и глобал и таблица). Нужно хотя бы ченовскую модель сущности - связи реализовать с поддержкой целостности данных, а так опять все ручками и намеками в комментариях. Целостность данных это отдельная песня и она связана не с моделью объектов. А с моделью баз данных хотя в КАШЕ все это свалено в кучу. Как реализуется целостность в КАШЕ я не знаю, но подозреваю что ведутся прямые и обратные ссылки. Я пытался использовать стандартные механизмы высокого уровня но ни разу это мне не удалось в основном по соображениям эффективности. Если используешь такие механизмы то теряешь ими управление за тебя все делает КАШЕ. Но природа и организация конкретных данных всегда имеет свои особенности которые можно использовать для оптимизации приложения, а используя стандартые механизмы заложенные в хранимых классах КАШЕ такой оптимизации добиться нельзя. При проектировании приложения я всегда начинаю с проектирования основных данных и уделяю этому основное внимание. Все эксплуатационные характеристики приложения зависят от основных структур данных. Когда у меня уже есть структуры данных я начинаю проектировать их связи и обеспечение целостности и этому уделяю очень много внимания. Как это делается в конкретном случае я поясню на примере. Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки. Ссылки на коды в классификаторе есть и в документах и в проводках. Документы и Проводки также завязаны между собой на уровне ссылок. В проводках есть ссылки на номера документов которые их породили. Целостность между Документами и Проводками я обеспечиваю следующим образом. Корректировка Проводок пользователем закрыта к ним по записи прямого доступа он не имеет. И проблемы целостности для этой структуры нет. С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов. С классификаторами дело обстоит еще сложнее их коды присутствуют и в документах и проводках. От обратных ссылок я отказался. Проверять всю входимость в Документах и Проводках тоже очень накладно. Я проверяю программно входимость кодов в Проводки оставляя не проведенные документы без проверки. Я считаю что для данного случая это обеспечение целостности оптимально. Я вообще стараюсь избегать построения обратных ссылок. У меня был печальный опыт построения завязанных таким образом баз. Как бы я не старался нарушение целостности происходило и мне приходилось переодически проверять целостность и в случае необходимости ее восстанавливать. А это связано еще и с ведением архивов удалений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 08:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Код: plaintext 1. По вашей логике v - это указатель на переменную x ? Что же тогда с ? Указатель на команду? Ну бред же! Указатели это указатели, а косвенность это косвенность. По моей логике указатель это переменная, а ее особенность возникает только в момент ее использования в качестве указателя. В приведенном вами примере v строковая переменная, как и с. В данном случае v не используется в качестве указателя , а вот в выражении Set @v="x", она используется именно как ссылка на переменную. Команда Х в качестве аргумента предполагает строку и в вашем случае ей и подается строка c_v. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 08:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_star, вы самоучка? Ваша задача элементарно решается в терминах sql на уровне определений (без кодирования) Попробуйте нарушить целостность данный через объекты или sql? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. авторЯ вообще стараюсь избегать построения обратных ссылок. Мы ведь говорим о Каше? Используйте индексы авторА это связано еще и с ведением архивов удалений.Мы отказались от удалений. Однажды созданный объект должен жить вечно. На уровне пользователя "удаление" может быть, на уровне бд - нет. Впрочем, для решения специфических задач, удаление, конечно, можно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 08:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.misha_star, вы самоучка? Ваша задача элементарно решается в терминах sql на уровне определений (без кодирования) Попробуйте нарушить целостность данный через объекты или sql? Я самоучка. От того что вы описываете а не кодируете никаких чудес не происходит. Обратные ссылки всеравно строятся но только самой системой. А я хотел вообще избежать построения обратных ссылок как таковых потому что из 3-х случаев в одном целостность вообще не нужна, а во втором она вынесена с уровня кодов на уровень их агрегатов. Нарушение целостности обнаружить и у меня вы бы не смогли оно могло проявиться раз в год, а могло и раз в несколько лет. Блок А.Н Мы ведь говорим о Каше? Используйте индексы Я их и использую. Связи строю на основе ассоциации индексов. Блок А.Н. Мы отказались от удалений. Однажды созданный объект должен жить вечно. На уровне пользователя "удаление" может быть, на уровне бд - нет. Прекрасное решение. Я им обязательно воспользуюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2010, 09:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shu Лучше, по моему, класс - это множество, с описанием свойств и методов для всего множества и для его экземпляров (если есть). А объект - экземпляр этого множества. Все равно для проектирования прикладных систем это низкий уровень (как и глобал и таблица). Точнее, это не имеет отношения к проектированию:) А имеет отношение к программированию. ser_shu Нужно хотя бы ченовскую модель сущности - связи реализовать с поддержкой целостности данных, а так опять все ручками и намеками в комментариях. Об этом и речь. Только модель Чена была изначально ориентирована на создение (в конечном счете) РБД. К сожалению. Так что реализация связей может быть основана только на ясном понимании связи. Здесь не годятся "ссылки", не "внешние ключи" и т.п. Если уж идентификатор экземпляра объекта (по Чену - сущности) не является просто одной из характеристик объекта, то идентификаторы экземпляров других объектов и подавно не могут быть характеристиками объекта:) Впрочем, все уже давно реализовано.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 00:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Целостность данных это отдельная песня и она связана не с моделью объектов. А с моделью баз данных хотя в КАШЕ все это свалено в кучу. Целостность - один из трех важных аспектов модели данных (наряду со структурой и манипулированием). Поскольку модель данных Саche точно не известна, определенная путаница, конечно, есть:) misha_shar При проектировании приложения я всегда начинаю с проектирования основных данных и уделяю этому основное внимание. Все эксплуатационные характеристики приложения зависят от основных структур данных. Когда у меня уже есть структуры данных я начинаю проектировать их связи и обеспечение целостности и этому уделяю очень много внимания. Вы просто вынуждены уделять этому очень много внимания:) Так как поддерживаете целостность данных на уровне приложения (впрочем, структуру тоже). Это весьма трудоемкий путь.. misha_shar Как это делается в конкретном случае я поясню на примере. Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки. Ссылки на коды в классификаторе есть и в документах и в проводках. Документы и Проводки также завязаны между собой на уровне ссылок. В проводках есть ссылки на номера документов которые их породили. Целостность между Документами и Проводками я обеспечиваю следующим образом. Корректировка Проводок пользователем закрыта к ним по записи прямого доступа он не имеет. И проблемы целостности для этой структуры нет. С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов. С классификаторами дело обстоит еще сложнее их коды присутствуют и в документах и проводках. От обратных ссылок я отказался. Проверять всю входимость в Документах и Проводках тоже очень накладно. Я проверяю программно входимость кодов в Проводки оставляя не проведенные документы без проверки. Я считаю что для данного случая это обеспечение целостности оптимально. Очень не оптимально. И структура (этот подход и в 1с), и специфическая поддержка целостности. Очевидно, что намного удобнее иметь возможность корректировать "документы" (то есть, исправлять ошибки в совершенных операциях). misha_shar Я вообще стараюсь избегать построения обратных ссылок. У меня был печальный опыт построения завязанных таким образом баз. Как бы я не старался нарушение целостности происходило и мне приходилось переодически проверять целостность и в случае необходимости ее восстанавливать. А это связано еще и с ведением архивов удалений. Нужно поддерживать настоящие связи а не "обратные ссылки". То есть, нужно сначала написать нормальную СУБД (для чего и предназначен mumps), а уж потом разрабатывать приложения:) А Вы работаете как 40 лет назад работали. Впрочем и тогда люди создавали Fileman и другие СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 00:50 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. авторЯ вообще стараюсь избегать построения обратных ссылок. Мы ведь говорим о Каше? Используйте индексы Не лучшая, мягко говоря, идея - использовать индексы (?) для организации связей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 00:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Возможно, я неправильно понял задачу misha_star? В классе А есть ссылка на класс В, это поле индексируется. По сути индекс будет "обратной связью" из класса В в класс А. Так вроде реализуется связь "один ко многим". Или речь о чем-то другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 07:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Мы отказались от удалений. Однажды созданный объект должен жить вечно. На уровне пользователя "удаление" может быть, на уровне бд - нет. Впрочем, для решения специфических задач, удаление, конечно, можно использовать. Это работает для фактографических ИС, где 99% данных заносятся в БД и даже не корректируются. В задачах планирования, диспетчеризации обратная ситуация - большая часть данных уже никому не нужна и нет смысла все это хранить в БД. Например, бюджет на следующий год, новое штатное расписание, план работ на следующие сутки... Хранятся только несколько вариантов (чаще один), сотни промежуточных предложений и расчетов не имеют смысла. Обеспечение целостности данных в ИС для псевдоудаленных данных (помеченных как удаленные) тоже отдельная песня - не работают стандартные уникальные индексы, все запросы (и из внешних систем) должны знать о наличии псевдоудаленных данных. Это замечание Мише - есть большие подводные камни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 14:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Но хотя бы такие объекты документы или пользователей бесследно удалять нельзя, иначе систему перекосит. Требование уникальности полей мы ставим с осторожностью. Если объект критичный, то все равно верификацию его делает отдельная программа при записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 16:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Но хотя бы такие объекты документы или пользователей бесследно удалять нельзя, иначе систему перекосит. Если у пользователя нет ни одной связи, его можно удалить, систему не перекосит :) Вопрос в описании структурных и смысловых связей в системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 19:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Возможно, я неправильно понял задачу misha_star? В классе А есть ссылка на класс В, это поле индексируется. По сути индекс будет "обратной связью" из класса В в класс А. Так вроде реализуется связь "один ко многим". Или речь о чем-то другом? Дело не в задаче misha_star. А в понимании что такое связь. И в ее реализации, основанной на таком понимании. 1) Связь не может быть свойством объекта (по Вашему класса). Дом, в котором я живу, не является моим свойством:) Таким образом, ни "ссылки", ни "обратные ссылки", ни "индексы", ни "внешние ключи" не являются правильным способом реализации связей. В частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи". 2) Связь - это принципиально не объект (не класс в Вашем понимании). То есть, связь многие-ко многим НЕЛЬЗЯ ПРЕДСТАВИТЬ С ПОМОЩЬЮ КЛАССА. 3) У связи нет никаких характеристик (подобных характеристикам объекта). Это формально следует из 2). 4) Связь всегда бинарная и двусторонняя. Не бывает никаких триарных и т.п. связей. Обычно за n-арные связи выдают события. А событие, наряду с сущностью - это просто разновидность объекта (по Вашему - класса), но никак не связь. 5) Все связи, независимо от их мощности, следует реализовать одинаково. Кстати, Дейт рекомендует представлять все связи с помощью отдельных отношений ("и не только потому, что связь один-ко-многим может со временем преобразоваться в связь многие-ко-многим"), но, формально, это сделать просто невозможно в РМД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 21:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина, действительно с понятием связь что-то туго... Но другое слово на ум не приходит. Да и модель сущности-связи Чена зацепил, так что слово не выбросишь. Побродил по интернету, такое впечатление, что 25 лет назад обсуждение этой модели было совсем другое, сейчас действительно только реализация для РБД, прямоугольники, ромбики, вилки, лапы... Но даже в тех статьях, которые нашел, связь - это не структурные ссылки. - - - - - Модель "сущность-связь" – шаг к единому представлению о данных http://citforum.ru/database/classics/chen/ - каждый кортеж сущностей, [e1, e2,...,en], является связью (relationship). - Заметим, что связи также имеют атрибуты. - Рассмотрим множество связей PROJECT-WORKER (ИСПОЛНИТЕЛЬ-ПРОЕКТА) (рис. 3). Атрибут PERCENTAGE-OF-TIME (ПРОЦЕНТ-ВРЕМЕНИ), представляющий долю времени, выделенную конкретному служащему на конкретный проект,– это атрибут, определенный на множестве связей PROJECT-WORKER. Он не является ни атрибутом сущности EMPLOYEE, ни атрибутом сущности PROJECT, так как его смысл зависит и от служащего, и от проекта. Понятие атрибута связи важно для понимания семантики данных и определения функциональных зависимостей между данными. - - - - - То есть в примере misha_shar: Вот я разрабатываю бух.учет. У меня 3 основные структуры Классификаторы, Документы и Проводки. Классификаторы - это сущности. Документы и Проводки - это связи. В документах и проводках есть ссылки на сущности (классификаторы) и на другие документы и проводки (связи) и имеются свои атрибуты. Дальше мои термины, чтобы не путаться, (хотя опять слово связь...). Для обеспечения целостности данных в ИС строятся и поддерживаются (на уровне описания\реализации модели, а не ручками и комментариями) - структурные связи, это ссылки - логические связи, это алгоритмы и правила Тогда для поддержания целостности данных в ИС при записи\корректировке\удалении сущности или связи нужно проверить, чтобы не нарушались структурные связи и логические связи. В примере с проводками: - структурные связи - ссылки на документы - логические связи - вычисляемые остатки на начало года, месяца (алгоритмы), обеспечение хронологической последовательности, запрет записи\удаления\корректировки ранее последней такой же по типу проводки (правила). При таком подходе можно получить модель ИС, а не набор таблиц или классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 01:38 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shu, Документы и проводки - это сущности. Но связь проводки с документом, ее породившим - это связь. Бредятина, Это все понятно, когда мы говорим об астрактной СУБД в вакууме. Но что нам делать на земле? Реализовывать связь один ко многим через поле таблицы или класса? Если говорить про абстрактную СУБД, то связь это вещь совершенно другая, чем сущность, и в тех же таблицах их хранить как-то неправильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 06:33 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.ser_shu, Документы и проводки - это сущности. Но связь проводки с документом, ее породившим - это связь. Я имел в виду модель сущности-связи в ченовском представлении. Документы и проводки не являются независимыми сущностями (организация - сущность). Бухгалтерские документы не существуют независимо. Например, документ платежное поручение не существует само по себе, документ является связью для сущностей Плательщик (организация), Получатель (организация) и имеет атрибуты Дата, Номер, Сумма. Без сущностей этот документ в ИС не может быть помещен. Платежное поручение (класс, таблица, кортеж, глобал...) это свяэь в модели сущности-связи Чена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 07:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Возможно, Вам будет интересно почитать книгу СУБД Caché 5: работа с объектами . Автор: Труб И.И. Оглавление к ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 09:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
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 Дальше мои термины, чтобы не путаться, (хотя опять слово связь...). Для обеспечения целостности данных в ИС строятся и поддерживаются (на уровне описания\реализации модели, а не ручками и комментариями) - структурные связи, это ссылки - логические связи, это алгоритмы и правила Тогда для поддержания целостности данных в ИС при записи\корректировке\удалении сущности или связи нужно проверить, чтобы не нарушались структурные связи и логические связи. В примере с проводками: - структурные связи - ссылки на документы - логические связи - вычисляемые остатки на начало года, месяца (алгоритмы), обеспечение хронологической последовательности, запрет записи\удаления\корректировки ранее последней такой же по типу проводки (правила). Опять у Вас какие-то "ссылки". Вместо нормальных связей. И потом, "остатки" могут быть и хранимыми, а не вычисляемыми, но ведь они не могут быть "структурными связями" (ссылками). Они будут объектами, а не связями... Мне кажется, напрасно Вы запутываете ситуацию со связями:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 17:06 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Это все понятно, когда мы говорим об астрактной СУБД в вакууме. Но что нам делать на земле? Реализовывать связь один ко многим через поле таблицы или класса? Если говорить про абстрактную СУБД, то связь это вещь совершенно другая, чем сущность, и в тех же таблицах их хранить как-то неправильно? Да, связь не нужно хранить "в тех же таблицах". И все это давно реализовано. Конкретно, а не абстрактно. Но нужно двигаться дальше:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 17:10 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar Возможно, Вам будет интересно почитать книгу СУБД Caché 5: работа с объектами . Автор: Труб И.И. Оглавление к ней. Да, чего там мелочиться со связями. Будем сразу "работать с метасвязями":) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 17:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаДа, связь не нужно хранить "в тех же таблицах". И все это давно реализовано. Конкретно, а не абстрактно. Но нужно двигаться дальше:) Я прошу у вас конкретики: где реализовано, чтобы связь была не атрибутом таблицы/объекта и не была записью отдельной в таблице/объектом. Ведь это разные вещи: либо связь существует в каком-то виде в среде работы системы, либо она существует только в нашем воображении. Если связь 1-много реализована в виде атрибута, а связь много-много существует в виде отдельной таблицы, то с точки зрения системы нет никаких связей - есть сущности с атрибутами и есть отдельная сущность, с атрибутами в виде ссылок на другие сущности. И нет никаких связей - это все лукавство и наше воображение. И куда нужно двигаться дальше? Меня эта загадочность как-то напрягает. Либо вы говорите о конкретной СУБД, где все это реализовано, и мы будем разговаривать в терминах этих СУБД, и сравнивать эти СУБД, либо мы будем разговаривать в абстрактных понятиях, не касаясь реальных СУБД. Просто пока наблюдается асимметричность - мы говорим о чем-то реальном, имеющем определенные ограничения и недостатки, а вы говорите о чем-то таком виртуальном, не имеющем недостатков. Все-таки виртуальность без недостатков соорудить несколько проще, чем реальность с недостатками! Ни в коей мере не хотелось бы умалять важность теоретического подхода. Просто хотелось бы определенности - о чем мы сейчас говорим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 17:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Я прошу у вас конкретики: где реализовано, чтобы связь была не атрибутом таблицы/объекта и не была записью отдельной в таблице/объектом. Я уже несколько раз написал: например, в X-Magic:) Разве не так? Наверное, и в других СУБД, которых много было написано в среде mumps. Но другие я не упоминаю, так как не уверен как именно там реализованы связи. Блок А.Н. Если связь 1-много реализована в виде атрибута, а связь много-много существует в виде отдельной таблицы, то с точки зрения системы нет никаких связей - есть сущности с атрибутами и есть отдельная сущность, с атрибутами в виде ссылок на другие сущности. И нет никаких связей - это все лукавство и наше воображение. Абсолютно точно. Блок А.Н. И куда нужно двигаться дальше? Меня эта загадочность как-то напрягает. Либо вы говорите о конкретной СУБД, где все это реализовано, и мы будем разговаривать в терминах этих СУБД, и сравнивать эти СУБД, либо мы будем разговаривать в абстрактных понятиях, не касаясь реальных СУБД. Просто пока наблюдается асимметричность - мы говорим о чем-то реальном, имеющем определенные ограничения и недостатки, а вы говорите о чем-то таком виртуальном, не имеющем недостатков. Я говорю о вполне реальном, имеющем недостатки. Так как считаю, что у связи нет никаких характеристик (см. выше в предыдущих сообщениях). В X-Magic: 1) наряду с настоящими связями поддерживаются и ссылки (тип характеристики); 2) у связей есть характеристики. Я считаю, что это не корректно. И предлагаю двигаться дальше. Мне кажется, все предельно конкретно:) Блок А.Н. Ни в коей мере не хотелось бы умалять важность теоретического подхода. Просто хотелось бы определенности - о чем мы сейчас говорим? О моделях данных, я думаю. И их реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 17:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Уточню: X.Magic. Так была переименована СУБД Информ Икс, насколько я помню, по договоренности с IS, поскольку как же в СУБД Cache может быть еще какая-то СУБД:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 18:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ок, спасибо :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 18:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Сам впервые увидел "теоретическую статью":) library.mephi.ru/data/scientific-sessions/2007/t2/1-1-5.doc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 18:07 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Очень не оптимально. И структура (этот подход и в 1с), и специфическая поддержка целостности. Очевидно, что намного удобнее иметь возможность корректировать "документы" (то есть, исправлять ошибки в совершенных операциях). Почему не оптимально? По какому критерию? -по минимальному объему данных, -по скорости выполнения, -по объему программирования, -по понятности кода? Документы конечно же корректируются. Но предварительно удаляются проводки относящиеся к данному документу. Бредятина Нужно поддерживать настоящие связи а не "обратные ссылки". То есть, нужно сначала написать нормальную СУБД (для чего и предназначен mumps), а уж потом разрабатывать приложения:) А Вы работаете как 40 лет назад работали. Впрочем и тогда люди создавали Fileman и другие СУБД. Что за настоящие cвязи вы предлагаете поддерживать? Какие СУБД нормальные: -реляционные, -иерархические, -объектные. Может какие то еще есть. Почему МАМПС не является нормальной СУБД? 40 лет назад это 70г прошлого века. Я в это время еще не программировал и если речь об СССР то никакого МАМПСА тогда и в помине не было. И работать так как работали тогда я наврядли смогу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:11 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Не лучшая, мягко говоря, идея - использовать индексы (?) для организации связей. Очень сомнительное высказывание. Абсолютное большенство ссылок строится на основе индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:16 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Возможно, я неправильно понял задачу misha_star? В классе А есть ссылка на класс В, это поле индексируется. По сути индекс будет "обратной связью" из класса В в класс А. Так вроде реализуется связь "один ко многим". Или речь о чем-то другом? В моем приложении обратных ссылок как раз нет.Нет и отношения один ко многим. В классе А есть ссылка на класс В,а в классе В это поле индексируется. Бредятина Дело не в задаче misha_star. А в понимании что такое связь. И в ее реализации, основанной на таком понимании. 1) Связь не может быть свойством объекта (по Вашему класса). Дом, в котором я живу, не является моим свойством:) Таким образом, ни "ссылки", ни "обратные ссылки", ни "индексы", ни "внешние ключи" не являются правильным способом реализации связей. В частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи". 2) Связь - это принципиально не объект (не класс в Вашем понимании). То есть, связь многие-ко многим НЕЛЬЗЯ ПРЕДСТАВИТЬ С ПОМОЩЬЮ КЛАССА. 3) У связи нет никаких характеристик (подобных характеристикам объекта). Это формально следует из 2). 4) Связь всегда бинарная и двусторонняя. Не бывает никаких триарных и т.п. связей. Обычно за n-арные связи выдают события. А событие, наряду с сущностью - это просто разновидность объекта (по Вашему - класса), но никак не связь. 5) Все связи, независимо от их мощности, следует реализовать одинаково. Кстати, Дейт рекомендует представлять все связи с помощью отдельных отношений ("и не только потому, что связь один-ко-многим может со временем преобразоваться в связь многие-ко-многим"), но, формально, это сделать просто невозможно в РМД. Все я потерял смысл высказывания. Попробую объяснить как я все понимаю. -Связь- взаимотношение объектов реального мира. Которое осознано программистом и заложено им либо в логику программ либо в структуры описаний которые потом превращаются опять же в логику программ только на уровне либо Базы данных либо языка программирования. Следовательно в любом случае это логика программы. -Ссылка это данные которые помогают осуществлять связи. Ссылки могут быть самые различные. Для глобалов МИМПСА это либо поля данных, либо поля индексов. Для объектов КАШЕ это это внутренние бинарные поля которые строятся КАШЕ по описанию объекта. -Индексы, внешние ключи, поля таблиц Баз данных,внутренние бинарные поля все это реализация ссылок. Ссылки это вспомогательный механизм для организации связей. Связь может быть осуществлена вообще без ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:49 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
servit misha_shar Возможно, Вам будет интересно почитать книгу Труб И.И. Эта книга у меня есть. Правда никак не могу дочитать ее до конца. В се нет времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shu Это работает для фактографических ИС, где 99% данных заносятся в БД и даже не корректируются. В задачах планирования, диспетчеризации обратная ситуация - большая часть данных уже никому не нужна и нет смысла все это хранить в БД. Например, бюджет на следующий год, новое штатное расписание, план работ на следующие сутки... Хранятся только несколько вариантов (чаще один), сотни промежуточных предложений и расчетов не имеют смысла. Обеспечение целостности данных в ИС для псевдоудаленных данных (помеченных как удаленные) тоже отдельная песня - не работают стандартные уникальные индексы, все запросы (и из внешних систем) должны знать о наличии псевдоудаленных данных. Это замечание Мише - есть большие подводные камни. Сережа я понял. Этот механизм я обдумывал. И возможно появится случай когда он будет Эффективно работать. Тут возможно частичное применение этого метода. Например не удалять коды из классификатора, а раз в год запускать утилиту обслуживания с очисткой неиспользуемых кодов. Но это существенно зависит от срока жизни кодов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 20:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Почему не оптимально? По какому критерию? -по минимальному объему данных, -по скорости выполнения, -по объему программирования, -по понятности кода? Документы конечно же корректируются. Но предварительно удаляются проводки относящиеся к данному документу. Думаю, что по всем этим критериям:) "С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов." Теперь оказывается, что не закрываете:) И все равно не оптимально. Ведь проводки делаются по операциям, а в "документе", видимо, множество операций. Зачем же удалять проводки по всем операциям, если корректируется одна, например. Тем более, что проводки, видимо, нельзя удалять в закрытом периоде, а операцию-то нужно откорректировать:) misha_shar Какие СУБД нормальные: -реляционные, -иерархические, -объектные. Может какие то еще есть. Почему МАМПС не является нормальной СУБД? Здесь Вы довольно серьезно заблуждаетесь. mumps вообще не СУБД, так как в ней нет никакой модели данных. И это замечательно! misha_shar 40 лет назад это 70г прошлого века. Я в это время еще не программировал и если речь об СССР то никакого МАМПСА тогда и в помине не было. И работать так как работали тогда я наврядли смогу. mumps тогда была, и работаете Вы именно так. В общем-то так можно работать. Но это не перспективно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 21:52 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_sharБредятина Не лучшая, мягко говоря, идея - использовать индексы (?) для организации связей. Очень сомнительное высказывание. Абсолютное большенство ссылок строится на основе индексов. Что же здесь сомнительного. Ведь ссылки это не связи. Стройте себе на здоровье ссылки на основе индексов, хотя что это означает понять невозможно, так как индексы обычно применяют для повышения производительности (только в классической объектной модели данных индексы можно рассматривать, как структурный элемент модели), а вовсе не для "построения ссылок". В случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 22:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Все я потерял смысл высказывания. В этом и заключается проблема:) Я не потерял смысл Ваших высказываний. misha_shar Попробую объяснить как я все понимаю. -Связь- взаимотношение объектов реального мира. Которое осознано программистом и заложено им либо в логику программ либо в структуры описаний которые потом превращаются опять же в логику программ только на уровне либо Базы данных либо языка программирования. Следовательно в любом случае это логика программы. Серьезная ошибка. По такой логике объекты (а не только связи между ними) программисту достаточно осознать и заложить в логику программ:) И никакие модели данных, при таком подходе, конечно, не нужны. misha_shar Ссылка это данные которые помогают осуществлять связи. Ссылки могут быть самые различные. Для глобалов МИМПСА это либо поля данных, либо поля индексов. Прежде, чем "осуществить связи с помощью данных" их нужно описать с помощью метаданных. Разве это не очевидно? misha_shar Ссылки это вспомогательный механизм для организации связей. Отлично! А каков ОСНОВНОЙ механизм? misha_shar Связь может быть осуществлена вообще без ссылок. Замечательно! Как бы Вы ее осуществили вообще без ссылок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 22:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаВ случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается На каком-то логическом уровне может не быть индексов. Но где-то они все равно есть. Либо есть что-то, не называющееся индексом, но выполняющее эту роль :-) В конце концов, в М по сути все данные хранятся индексированными Глобал(ключ)=значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 05:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Думаю, что по всем этим критериям:) "С документами уже хуже пользователь имеет доступ к документам поэтому я закрываю доступ по записи на уровне отдельного документа для проведенных документов." Теперь оказывается, что не закрываете:) И все равно не оптимально. Ведь проводки делаются по операциям, а в "документе", видимо, множество операций. Зачем же удалять проводки по всем операциям, если корректируется одна, например. Тем более, что проводки, видимо, нельзя удалять в закрытом периоде, а операцию-то нужно откорректировать:) Конечно в документе множество операций. А делается это для упрощения логики. Если период закрыт то никаких корректировок этим периодом быть не может , отчеты уже сданы. А если все таки надо корректировать то период открывается, документ сторнируется и изменяется. Но выполнить все это может только работник которому это вменено в обязанности. Бредятина Здесь Вы довольно серьезно заблуждаетесь. mumps вообще не СУБД, так как в ней нет никакой модели данных. И это замечательно! А вот здесь вы заблуждаетесь. Модель данных есть и она довольно совершенная. Она иерархическая. Модель данных есть в любой организации данных даже в обыкновенном текстовом файле. Только свойства этих моделей разные. Бредятина mumps тогда была, и работаете Вы именно так. В общем-то так можно работать. Но это не перспективно. Хорошо что перспективу оценивает рынок, а не вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 09:52 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Что же здесь сомнительного. Ведь ссылки это не связи. Стройте себе на здоровье ссылки на основе индексов, хотя что это означает понять невозможно, так как индексы обычно применяют для повышения производительности (только в классической объектной модели данных индексы можно рассматривать, как структурный элемент модели), а вовсе не для "построения ссылок". В случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается. У нас возникли терминологические трудности. Я ранее написал что я чем называю. Сначала напишите мне какие термины вы применяете вместо моих или вы не согласны с моими представлениями? Ссылки конечно не связи. Связи как я уже писал это логика программ. Связи можно строить на чем угодно. Хоть на том что из вашего сообщения следует что вы меня не поняли и связи между моим сообщением и вашим ответом нет. Индексы могут применяться для чего угодно это не лишает их возможности служить основой для построения связи. Чтобы судить о производительности надо переходить к обсуждению конкретной СУБД, а в ощем случае это не верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_sharser_shu Обеспечение целостности данных в ИС для псевдоудаленных данных (помеченных как удаленные) тоже отдельная песня - не работают стандартные уникальные индексы, все запросы (и из внешних систем) должны знать о наличии псевдоудаленных данных. Это замечание Мише - есть большие подводные камни. Сережа я понял. Этот механизм я обдумывал. И возможно появится случай когда он будет Эффективно работать. Тут возможно частичное применение этого метода. Например не удалять коды из классификатора, а раз в год запускать утилиту обслуживания с очисткой неиспользуемых кодов. Но это существенно зависит от срока жизни кодов. Мозгопудренство это называется. Экземпляр в классе остался. И все его связи в ИС остались. Но его "никто" "не видит". Поэтому про УДАЛЕНИЕ речь не идет. "Просто" в большинстве запросов, отчетов, методов в ИС нужно будет учитывать признак "псевдоудаленности" экземпляров некоторых классов. Клиента "псевдоудалили", а пять его платежек в ИС осталось. Что делать с оборотками? А очистка неиспользуемых кодов классификатора вообще не имеет к "псевдоудалению" никакого отношения. У этих кодов нет связей в ИС, пусть удаляются без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 11:43 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина В этом и заключается проблема:) Я не потерял смысл Ваших высказываний. Терминология должна помогать понять смысл высказывания, а не мешать это делать. Если применяется специальный термин то его Бредятина Серьезная ошибка. По такой логике объекты (а не только связи между ними) программисту достаточно осознать и заложить в логику программ:) И никакие модели данных, при таком подходе, конечно, не нужны. Конечно это так и есть. Модели данных безусловно нужны. Это уровень абстракции который позволяет связать логику приложения со структурами данных. Модель данных для приложения в информационной системе строится всегда. И какую модель ты построишь зависит только от тебя. Бредятина misha_shar Ссылка это данные которые помогают осуществлять связи. Ссылки могут быть самые различные. Для глобалов МИМПСА это либо поля данных, либо поля индексов. Прежде, чем "осуществить связи с помощью данных" их нужно описать с помощью метаданных. Разве это не очевидно? Совсем не очевидно. Метаданные это часть логики программы ими можно пользоваться можно вообще не пользоваться. Метаданные существуют независимо от баз данных. Почти из любой программы можно извлечь ее структуру в виде дерева это и будут метаданные и с их помощью построить обработку. Бредятина misha_shar Ссылки это вспомогательный механизм для организации связей. Отлично! А каков ОСНОВНОЙ механизм? ОСНОВНОЙ механизм это логика программы, базы данных и языка программирования. Бредятина misha_shar Связь может быть осуществлена вообще без ссылок. Замечательно! Как бы Вы ее осуществили вообще без ссылок? Ну например на основе запроса пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 11:59 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.БредятинаВ случае реализации связей нет никаких "индексов", но на производительности это никак не сказывается На каком-то логическом уровне может не быть индексов. Но где-то они все равно есть. Либо есть что-то, не называющееся индексом, но выполняющее эту роль :-) В конце концов, в М по сути все данные хранятся индексированными Глобал(ключ)=значение В рамках терминологии mumps, разумеется. Но в рамках традиционного понимания индекса для СУБД индексов, все-таки, нет при реализации связей. Например, в X.Magic данные объекта, включая индексы, хранятся в одной глобали: идентификатор объекта_D [спустя пять лет такая-же "конструкция" была использована и в СУБД Cache:)] а все связи объекта в другой глобали: идентификатор объекта_E Из двух возможных способов хранения значений характеристик объектов IS (1997 год) выбрала первый: ^...D(идентификатор экземпляра)=строка со значениями характеристик а разработчики X.Magic (1992 год) второй: ^...D(идентификатор экземпляра, идентификатор характеристики)=значение характеристики кторый принципиально снимал ограничение на количество характеристик объекта (другими словами, на количество "колонок" в "таблице") и обладает другими преимуществами, и, конечно, недостатками:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 12:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Конечно в документе множество операций. А делается это для упрощения логики. Если период закрыт то никаких корректировок этим периодом быть не может , отчеты уже сданы. А если все таки надо корректировать то период открывается, документ сторнируется и изменяется. Но выполнить все это может только работник которому это вменено в обязанности. Например, в Икс, созданной на X.Magic, операции корректируются в закрытых периодах (я видел даже корректировки операций за позапрошлый год :)) И все нормально с бухгалтерией:) misha_shar А вот здесь вы заблуждаетесь. Модель данных есть и она довольно совершенная. Она иерархическая. Модель данных есть в любой организации данных даже в обыкновенном текстовом файле. Только свойства этих моделей разные. У Вас какие-то собственные представления о модели данных:) В mumps нет никакой модели данных. В ней есть индексированные массивы и строки:) misha_shar Хорошо что перспективу оценивает рынок, а не вы. Конечно хорошо. И Вы очень скоро убедитесь, что наши оценки совпадают:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 12:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_shar Терминология должна помогать понять смысл высказывания, а не мешать это делать. Конечно. Я не использую никаких "специальных терминов":) misha_shar Конечно это так и есть [это на мое замечание: И никакие модели данных, при таком подходе, конечно, не нужны):]. Модели данных безусловно нужны [так нужны или не нужны?]. Это уровень абстракции который позволяет связать логику приложения со структурами данных. Модель данных для приложения в информационной системе строится всегда. И какую модель ты построишь зависит только от тебя. А Вы можете привести статистику: как часто для приложений Вы используете: - иерархическую модель ...% - реляционную модель: ...% - сетевую модель: ...% - объектную модель: ...% Я предвижу Ваш ответ: - иерархическую модель ...100% :) misha_shar Совсем не очевидно. Метаданные это часть логики программы ими можно пользоваться можно вообще не пользоваться. Метаданные существуют независимо от баз данных. Почти из любой программы можно извлечь ее структуру в виде дерева это и будут метаданные и с их помощью построить обработку. Плохо, что не очевидно. Получается, что Вы именно не используете никакую модель данных:) Метаданные полностью определяются структурой, которая, в свою очередь, является основным аспектом модели данных (напомню, что есть еще два аспекта: ограничения целостности и ЯМД). Ими нельзя не пользоваться, и они не являются частью "логики программы", а просто используются в программе. misha_shar ОСНОВНОЙ механизм [реализации связей] это логика программы, базы данных и языка программирования. Глобальный ответ:) Это же можно сказать и про объекты. Другими словами "и как ты реализуешь связи зависит только от тебя":) misha_shar [Связь может быть реализована] Ну например на основе запроса пользователя. Значит и объект тоже. И вся система в целом:) Вот это перспективный подход (я серьезно)! Приложения не следует программировать - это устаревший подход. Пользователи сами получат все, что им нужно. Например, X.Magic для этого и создавалась:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 13:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Я вот тоже в районе поздних курсов универа думал про приложения, которые не надо программировать. Про модели данных не на основе реляционной модели и все такое. А жисть как-то романтику поообламала ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 14:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ну то есть я рад, что кто-то и в зрелом возрасте продолжает этим заниматься. misha_star Вы там где-то говорили, что для исправления документа вы откатываете период и исправляете проводки в том периоде. Но это же очень плохо! А как же непрерывность работы системы, параллельный доступ многих пользователей? А как же уже отданные отчеты? У нас если нужно исправить документ - делаются новые проводки в текущем периоде (старнирующая и далее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 14:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Я вот тоже в районе поздних курсов универа думал про приложения, которые не надо программировать. Про модели данных не на основе реляционной модели и все такое. А жисть как-то романтику поообламала Я мою романтику, пока, не обломала:) Ведь она подкреплена строгим научным знанием:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 14:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. misha_star Вы там где-то говорили, что для исправления документа вы откатываете период и исправляете проводки в том периоде. Но это же очень плохо! А как же непрерывность работы системы, параллельный доступ многих пользователей? А как же уже отданные отчеты? У нас если нужно исправить документ - делаются новые проводки в текущем периоде (старнирующая и далее). Да, примерно так. Только не только проводки создаются, но ведь и операционные данные должны корректно поддерживаться. То есть, должны оставаться количества и суммы, которым соответсвуют "старые проводки", и должны появляться количества и суммы, которым соответсвуют новые проводки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 14:52 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shuМозгопудренство это называется. Эх, Сергей Рафаилыч.... И не страшно Вам промежно Всепробивающего Носорога и Непробиваемого Утеса становиться!? Коллеги совершенно в облаках... в неге и покое всезнания и совершеннейшей определенности... Куда-уж Вам-уж... И паче нам ;) Бредятине и мише_шару: А Вы как-то не могли бы свой совершенно бестолковый, неинтересный и, видимо, обреченный быть бесконечным, дискурс перенести в почту, пусть даже не в электронную... на улицы наконец? Устали Вы со своими "объектами"... они у Вас настолько Ваши.... индивидуально Ваши Конкретно... что нам, остальным, кто с объектами работает в том пошлом и примитивном смысле, который нам дан свыше интерсистемзом, понять Ваши Великие Мысли невероятно трудно... Правда не так трудно, как понять, а зачем Вы их вообще думаете??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 14:59 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesov, не страшно, сам такой, романтика моделей ИС не дает не спать, не есть... Мозгопудренство - это практика подмены устоявшихся понятий (в рассмотренном случае - считать неудаленное удаленным, почти всегда и почти всем согласно особым условиям реализации). А все остальное очень мне нравится. Тут по большей части размышления разработчиков, имеющих реальный опыт реализации работающих систем и даже своей инструменталки. Другое дело, что даже найти хоть какие то понятия и одинаково их интерпретировать не очень удается. Но это всегда так было в нашей сфере. Зато довольно четко проявляются подходы и проблемы, которые существуют, но которые сам даже обозначить в суете не можешь, не то чтобы обсудить. И к Каше/М имеет отношение. Может только тему другую открыть, а то 12 страниц уже неинтересно кому-либо читать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 15:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shuМозгопудренство - это практика подмены устоявшихся понятий (в рассмотренном случае - считать неудаленное удаленным, почти всегда и почти всем согласно особым условиям реализации). На меня намекаете? Ай-ай-ай. На самом деле наоборот, многие путают удаление логическое и удаление физическое. И логическое удаление не должно сопровождаться физическим (за исключением случаев, если вообще весь блок данных не представляет интереса). Представьте, при смерти человека удаляются все упоминания о нем, архивы, документы, в день смерти стирается память родных, исчезают все личные вещи, исчезает даже могила, в которой его только что похоронили. Чудесно? Почему в норме вещей такое происходит в БД? При этом я понимаю, что некоторые данные иногда нужно удалять, но это вопрос, который решается на уровне не пользовательского интерфейса, а на уровне системы в отдельных, особо оговоренных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesov, Я вот никак не могу протиснуться с моделью ИС, включающей классы-сущности и классы-связи :( У всех только классы-сущности. А связи - внеклассовый элемент. Такая политика. А может там интеллигенция и ИТР будущих ИС, смысл, честь и даже совесть, обеспечивающая целостность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Нету тут ни смысла, ни чести, и совершенно не пахнет совестью. Будущее за ИС, которые будут делать большую часть работы за человека (так как системы становятся все сложнее и сложнее). А автоматизировать можно только функционирование жестко заданных моделей с четко определенной логикой, нечеткую логику компьютер не понимает. И здесь возникает противоречие - слишком жесткие модели легче для восприятия машиной и тяжеловаты для человека. Модели с большим числом степеней свободы легче для человека, но более трудоемки и хуже автоматизируются. И поиск моделей - это поиск способа представления задачи, наиболее простой как для компьютера, так и для человека. Для примера, если я говорю не очевидные вещи: вспомним реляционную модель. Она ведь не такая уж простая для обывателя, и нужны какие-то усилия, чтобы понимать ее. Но она позволяет часть программирования перевести в оперирование метаданными, что дает значительный прирост скорости разработки, легкость модифицирования, оптимизации, контроля и т.п. Но я верю, что это только начало. В некоторых областях программирования хорошо показывает себя объектная модель. Но и это не абсолют, это всего лишь одна из моделей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Представьте, при смерти человека удаляются все упоминания о нем, архивы, документы, в день смерти стирается память родных, исчезают все личные вещи, исчезает даже могила, в которой его только что похоронили. Чудесно? Почему в норме вещей такое происходит в БД? Слеза прошибла :( А если корову съели? Волки, конечно... Если у вас CRM по продвижению пылесосов и вы получили похоронку на своего дорогого клиента, можете смело грохнуть и все дела с ним и планы, хранящиеся в БД. ИС поддерживает бизнес, задачи бизнеса и ее процедуры, в том числе и удаление данных, нацелены на поддержку бизнеса. Очистка БД от лишних данных не менее важна, чем их запись. Важно только, чтобы ИС после такой чистки была работоспособной и целостной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:30 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ну или вот такая модель - таблицы Экселя. Множество ограничений, которые, в том числе, не дают использовать его для больших систем, зато позволяют формализовать широкий круг мелких задач в систему формул и дальше оперировать этой системой. К слову, в экселе за десятки минут делается то, что при разработке в других системах может занимать десятки часов. По опыту знаю, что программисты обычно считают ниже своего достоинства разбираться в таких вещах, но по сути это механизм оперирования массивами данных, при этом совершенно отличный от языка sql, а по функциональности..., ну, по крайней мере, многие вещи в экселе делаются проще. И, как говорили в этом топике "рынок покажет". Что показывает рынок по экселю ;-) Может быть, будущее ИС не в развитии реляционных баз, а в развитии Экселя? PS. Сказка ложь, да в ней намек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:36 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Че-то вспомнился по этому поводу MX-ALEX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:36 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesov Бредятине и мише_шару: А Вы как-то не могли бы свой совершенно бестолковый, неинтересный и, видимо, обреченный быть бесконечным, дискурс перенести в почту, пусть даже не в электронную... на улицы наконец? Устали Вы со своими "объектами"... они у Вас настолько Ваши.... индивидуально Ваши Конкретно... что нам, остальным, кто с объектами работает в том пошлом и примитивном смысле, который нам дан свыше интерсистемзом, понять Ваши Великие Мысли невероятно трудно... Правда не так трудно, как понять, а зачем Вы их вообще думаете??? Слушаюсь и повинуюсь:) Извините за беспокойство:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:46 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаСлушаюсь и повинуюсь:) Извините за беспокойство:) ААА! Ну вот опять раздел в анабиоз впадет. То хоть можно было почитать, отвлечься от работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesovser_shuМозгопудренство это называется. Эх, Сергей Рафаилыч.... И не страшно Вам промежно Всепробивающего Носорога и Непробиваемого Утеса становиться!? Коллеги совершенно в облаках... в неге и покое всезнания и совершеннейшей определенности... Куда-уж Вам-уж... И паче нам ;) Бредятине и мише_шару: А Вы как-то не могли бы свой совершенно бестолковый, неинтересный и, видимо, обреченный быть бесконечным, дискурс перенести в почту, пусть даже не в электронную... на улицы наконец? Устали Вы со своими "объектами"... они у Вас настолько Ваши.... индивидуально Ваши Конкретно... что нам, остальным, кто с объектами работает в том пошлом и примитивном смысле, который нам дан свыше интерсистемзом, понять Ваши Великие Мысли невероятно трудно... Правда не так трудно, как понять, а зачем Вы их вообще думаете??? Скроллингом умеете пользоваться? Тогда вперед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Вы там где-то говорили, что для исправления документа вы откатываете период и исправляете проводки в том периоде. Но это же очень плохо! А как же непрерывность работы системы, параллельный доступ многих пользователей? А как же уже отданные отчеты? У нас если нужно исправить документ - делаются новые проводки в текущем периоде (старнирующая и далее). делаются новые проводки в текущем периоде (старнирующая и далее) это стандартный бухгалтерский метод и он широко применяется в реальной бухгалтерии. Но иногда необходимо исправить именно прошлый период это во первых когда это не влияет на сданные отчеты во вторых когда есть возможность исправить уже сданные отчеты. Такая необходимость есть в реальной бухгалтерии. То что вы называете откатом у меня называется сторнированием документа. Это стандартная операция которую выполняет любой бухгалтер при этом непрерывность работы не нарушается и параллельный доступ многих пользователей осуществляется в оперативном режиме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Да, примерно так. Только не только проводки создаются, но ведь и операционные данные должны корректно поддерживаться. То есть, должны оставаться количества и суммы, которым соответсвуют "старые проводки", и должны появляться количества и суммы, которым соответсвуют новые проводки. Старые то проводки мне зачем? А новые проводки создаются заново. Все корректно отрабатывается. В се зависит от структуры хранения данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:43 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. На самом деле наоборот, многие путают удаление логическое и удаление физическое. И логическое удаление не должно сопровождаться физическим (за исключением случаев, если вообще весь блок данных не представляет интереса). Представьте, при смерти человека удаляются все упоминания о нем, архивы, документы, в день смерти стирается память родных, исчезают все личные вещи, исчезает даже могила, в которой его только что похоронили. Чудесно? Почему в норме вещей такое происходит в БД? При этом я понимаю, что некоторые данные иногда нужно удалять, но это вопрос, который решается на уровне не пользовательского интерфейса, а на уровне системы в отдельных, особо оговоренных случаях. К глубокому моему сожалению удалять данные в ИС необходимо. Если в бассейн идет 2 трубы из одной втекает ,а из другой вытекает то если вход превышает выход то бассейн обязательно переполнится и чем больше вход превышает выход тем быстрее это произойдет. Удаление данных в ИС должно быть предусмотрено обязательно. И удаление должно быть именно физическим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Ну или вот такая модель - таблицы Экселя. Множество ограничений, которые, в том числе, не дают использовать его для больших систем, зато позволяют формализовать широкий круг мелких задач в систему формул и дальше оперировать этой системой. К слову, в экселе за десятки минут делается то, что при разработке в других системах может занимать десятки часов. По опыту знаю, что программисты обычно считают ниже своего достоинства разбираться в таких вещах, но по сути это механизм оперирования массивами данных, при этом совершенно отличный от языка sql, а по функциональности..., ну, по крайней мере, многие вещи в экселе делаются проще. И, как говорили в этом топике "рынок покажет". Что показывает рынок по экселю ;-) Может быть, будущее ИС не в развитии реляционных баз, а в развитии Экселя? PS. Сказка ложь, да в ней намек Я думаю что SQL разрабатывался для того чтобы можно было отказаться от программирования. Не программист садится за компьютер и получает ответы на свои запросы в режиме терминальной строки очень интересное решение и самое главное очень гибкое но не очень удобное для постоянной работы. Я знаю попытку создать Бух.учет на основе команд которые вводит бухгалтер. Гибкость необычайная но удобства хуже некуда. И я думаю что если бы программисты не приспособили SQL для своих нужд то он бы умер. В этом смысле EXEL более удачное решение он более удобен в использовании и эту попытку я думаю можно считать удачной. Прекрассный интерфейс для пользователя даже я думаю революционный. EXEL создавался как интерфейс пользователя и плохо приспособлен для его использования в программах. Но я широко его использую для формирования отчетов и мне совсем немного не хватает для его использования при вводе документов. И так поступаю не я один. Прекрасный инструмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 18:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shu Я вот никак не могу протиснуться с моделью ИС, включающей классы-сущности и классы-связи :( У всех только классы-сущности. А связи - внеклассовый элемент. Такая политика. А может там интеллигенция и ИТР будущих ИС, смысл, честь и даже совесть, обеспечивающая целостность? Сережа почему все ты пытаешся представить в виде объекта? Связи это заведомо не объект. Они плохо представляются классами. Основные элементы ИС отвечают на один из вопросов: -что, -где, -когда. Те элементы которые отвечают на вопрос что это обекты, а те которые на вопросы где и когда это связи и они плохо интерпретируются объектами у них нет свойств и они лучше всего представляются обыкновенными глобалями. В реляционной модели их называют отношениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 18:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Вы опошляете реальность до конкретных действий: использовал инструмент - получил результат, использовал другой инструмент - получил худший результат за большее время и с большими затратами. Но вы упускаете то, что за этим стоит нечто нематериальное, но очень важное, гораздо более важное, чем конкретные кнопки - ИДЕЯ. И именно идея позволяет не разваливаться на кусочки всем этим маленьким, материальным, видимым снаружи, но гораздо менее значимым вещам. И идей, на самом деле, очень мало. В основном мы видим одни и те же идеи, по разному (и с разным качеством) реализованные в разных системах, с маленькими, не особо значащими деталями. Одна из таких идей - реляционная модель, которая доминирует на рынке СУБД. Бредятина, кстати, рекламирует, по сути, ту же реляционную модель сущность-связь, но в каком-то своем диалекте. Другая модель - объектно/процедурная, она доминирует в разработке приложений. Третья идея - модель глобалов языка М. Четвертая идея - кубы OLAP Пятая идея - система формул электронной таблицы Шестая идея - система правил языка пролог ну и так далее. Несмотря на то, что у каждой конкретной реализации есть титульная идея, как правило, одна идея является ограниченной и недостаточной для построения полнофукционального приложения, и поэтому в какой-то мере она поддерживает другие технологии. Примеры: Excel - формулы электронной таблицы, процедурное/объектное программирование, кубы OLAP. Каше - модель глобалов, реляционная модель, объекты, кажется в DeepSee есть OLAP. То есть мы видим, что в рамках одной идеи не получается создать универсальную систему. Но вопрос идеологии, нахождения достаточно жесткой модели для конструирования ИС, чтобы она была хорошо формализуемой, а с другой стороны достаточно гибкой и универсальной - да, это серьезная задача, в своем роде это поиски Грааля для средневековых рыцарей или философского камня для алхимиков. К слову сказать, философский камень хоть и не нашли, но из их поиски были не зря;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 18:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Одна из таких идей - реляционная модель, которая доминирует на рынке СУБД. Бредятина, кстати, рекламирует, по сути, ту же реляционную модель сущность-связь, но в каком-то своем диалекте. Другая модель - объектно/процедурная, она доминирует в разработке приложений. С позволения kolesova замечу, что: 1) я ни в коем случае ничего не рекламирую:) а только информирую; 2) реляционная модель и модель сущность-связь - это разные модели, поэтому словосочетание "реляционная модель сущность-связь" не вполне корректно:) 3) модель, о которой я информирую, именно по сути, не имеет вообще ничего общего с реляционной, а отсутствие желания это понимать - это же не моя проблема:). Про ИДЕИ все верно, конечно, только их еще меньше, чем кажется на первый взгляд. Пример. У OLAP много проблем, сырая конъюнктурная идея. В MDX-запросе только один куб:) (на всякий случай замечу, на 2009 год, может быть что-то изменилось?). Во многих важных приложениях, где казалось бы кубы то, что нужно, например, манипулирование статистическими показателями, как раз манипулировать-то и невозможно:) Поэтому, в свое время была предложена "статистическая алгебра". Но ведь по сути это не новая идея, так как заимствована от реляционной алгебры с определенными нюансами, связанными с моделью статистического показателя. То есть, если внимательно посмотреть на аналогии и заимствования, я думаю, немного будет ИДЕЙ:) Что касается симбиоза моделей, то mumps, как ни странно, остается одной из лучших технологий для этого. И практика показывает, что, например, задачи OLAP хорошо уживаются с задачами OLTP в рамках одного приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 22:18 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Несмотря на то, что у каждой конкретной реализации есть титульная идея, как правило, одна идея является ограниченной и недостаточной для построения полнофукционального приложения, и поэтому в какой-то мере она поддерживает другие технологии. Примеры: Excel - формулы электронной таблицы, процедурное/объектное программирование, кубы OLAP. Каше - модель глобалов, реляционная модель, объекты, кажется в DeepSee есть OLAP. Можно добавить GNOSIS = PROLOG + MUMPS. Интересная реализация-комбинация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 05:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Однако у меня в иногда создатеся впечатление, что рекламируете. Ну да суть не в этом :-) Согласен, реляционная модель и модель сущность-связь не одно и то. Но чисто внешне, на уровне модели, они имеют много общего, причем ваша модель еще жестче и требовательней к формализации, чем реляцоннная. Наверняка это должно давать свои преимущества в работе с системой, новые методы, новые возможности. Какие? Симбиоз идей это тоже интересный вопрос, так как если бы это не было проблемой, то в любую систему можно было бы напихать все подряд. И я согласен, что М является хорошей почвой для других идей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 05:53 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Я бы вопрос поставил так: Что же главное в M ? Вот по моему мнению хороший документ. http://www.mgateway.com/docs/universalNoSQL.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.... Несмотря на то, что у каждой конкретной реализации есть титульная идея, как правило, одна идея является ограниченной и недостаточной для построения полнофукционального приложения, и поэтому в какой-то мере она поддерживает другие технологии. Примеры: Excel - формулы электронной таблицы, процедурное/объектное программирование, кубы OLAP. Каше - модель глобалов, реляционная модель, объекты, кажется в DeepSee есть OLAP. То есть мы видим, что в рамках одной идеи не получается создать универсальную систему. Но вопрос идеологии, нахождения достаточно жесткой модели для конструирования ИС, чтобы она была хорошо формализуемой, а с другой стороны достаточно гибкой и универсальной - да, это серьезная задача, в своем роде это поиски Грааля для средневековых рыцарей или философского камня для алхимиков. К слову сказать, философский камень хоть и не нашли, но из их поиски были не зря;-) EXCEL + CACHE = MX но предварительно внутри CACHE создан виртуальный (облачный) многопользовательский EXCEL, интерактивно связанный и отображаемый на реальные EXCELи клиентов ( всегда - и при вводе и при выводе данных ) однако этот V-EXCEL своими формулами в клеточках оперирует не только традиционными листами-диаграммами , но еще и глобалами-обьектами CACHE и в этом сила, брат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Но чисто внешне, на уровне модели, они имеют много общего, причем ваша модель еще жестче и требовательней к формализации, чем реляцоннная. Наверняка это должно давать свои преимущества в работе с системой, новые методы, новые возможности. Какие? Возможность построения универсального интерфейса, в котором пользователь может указать что и как ему выводить, без программирования. Например, для схемы master-detail в master расположить строку накладной, а в detail шапку накладной. И все это без программирования. Остается только тщательно формализовать предметную область... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 17:29 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
В том же Аксессе можно без программирования создать функциональную СУБД. Так почему же он не захватил весь мир? Чем больше система подразумевает "за тебя", тем удобнее она для получения быстрого результата, но при этом при попытке выхода за рамки заложенных шаблонов упираемся в стенку. Попробую проиллюстрировать это примером. Пусть у нас есть алфавит, скажем 33 буквы. Использовать 33 буквы неудобно - в каждом слове легко можно сделать ошибку, ну и вообще куча ненужной работы для составления слов. Давайте будем составлять слова из промежуточных агрегатов - слогов. Пусть для простоты у нас слоги двухбуквенные, их уже гораздо больше, теоретически до тысячи. Можно для простоты исключить неиспользуемые слоги (ыы, жи-ши и т.д.) и тем самым немного сократить количество ошибок. Работы при составлении слов намного меньше, но иногда в экзотических случаях оказывается, что нужных слогов нет, а они нужны. Тогда системе нужен инструментарий для составления новых слогов из букв. Также при таком подходе остается большим количество ошибок. Можно использовать слова, но тогда база ИС распухает до неимоверных пределов, и рано или поздно окажется, что каких-то слов она не знает. А алфавита, в котором есть одновременно и буквы и слова не придумали. Тогда делают гибридную ИС, в которой есть разные слои представления, средства создания одного слоя из другого и т.п. Но в некоторых случаях можно использовать простую ИС, где будут даже не слова, а фразы "даешь ускорение", "Экономика должна быть экономной", "поборем коррупцию", "за гражданское общество". Она будет решать свои задачи, причем более быстро и успешно, чем ИС "из букв". К чему это все я? Настоящая мощная ИС должна давать доступ "к буквам". Все вот эти "сделать одной кнопкой" на самом деле очень ограничены. И я говорю не только про М/Каше, та же объектно/процедурная модель построена так же. Если говорить про мастер/детайл, накладные и т.д., то мы уже явно загоняем себя в угол. Можно создать очень удобную систему, но она будет удобна только в очень узкой области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 18:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., или приходится прилеплять к "словесной" системе другую - "буквенную" например, к R-СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 19:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. В том же Аксессе можно без программирования создать функциональную СУБД. Так почему же он не захватил весь мир? Слабые ТТХ? Блок А.Н. Чем больше система подразумевает "за тебя", тем удобнее она для получения быстрого результата, но при этом при попытке выхода за рамки заложенных шаблонов упираемся в стенку. Где-то читал про соотношение 20/80 или как-то так. Для реализации 80% задач нужно 20% функционала программы, а для реализации оставшихся 20% задач - 80%. Или пример - Word. 80% пользователей работают с 20% возможностей... и т.д. Выбирайте :) Блок А.Н. Пусть у нас есть алфавит, скажем 33 буквы. Кстати ... Два взгляда на историю письменности "В основе китайской письменности лежат особые знаки – иероглифы, отдельно или вместе с другими выражающие смысл и очень часто представляющие отдельное слово. Большинство иероглифов остаются неизменными уже более 2000 лет." Или из компьютерной области - CISC и RISC процессоры Но в модели, пропагандируемой Чернышевым Андреем Леонидовичем (он же ЧАЛ, он же Бред, он же Бредятина), много положительных моментов. Кроме уменьшения количества программирования (за что мы любим SQL? ), большинство сущностей предметной области и связи между ними достаточно долго остаются неизменными. А вот правильно разложить на сущности и связи... А потом реализовать... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 19:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Да, я помню про иероглифы ;-) В модели Чернышева А.Л. чувствуется что-то хорошее. Но ... Когда я познакомился с реляционной моделью(к тому времени я вполне владел объектным подходом), мне казалось каким-то насилием над мозгом разрывать объект на какие-то таблицы, проводить нормализацию. Кстати, нормализацию во всякие БКНФ я так и не осилил, что такое зависимость ключа от подключа - я до сих пор сказать не могу. Компромиссом с сознанием для меня была модель сущность-связь, в принципе при правильной структуризации предметной области вполне неплохо получается выделить таблицы. Но - такая формализация предметной области дала нам механизм работы с данными, который к объектной модели прикрутить получилось только с годами, да и то не полностью. То есть загоняя предметную область в такую жестокую модель мы получили взамен плюшки. Пока с точки определений модель Чернышева А.Л. очень близко к реляционной. Но дополнительные ограничений дают нам основания ожидать, что мы взамен получим некий механизм, некую новую "алгебру" для работы с этими сущностями-связями. И интуитивно мне кажется, что это возможно, но пока я этого не вижу. Впрочем, возможно я что-то пропустил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:25 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Однако у меня в иногда создатеся впечатление, что рекламируете. Ну да суть не в этом :-) Конечно, не в этом. Но это тоже принципиально. Я рассказывал о модели. По существу. Вы сказали (не один раз), что это все голая теория. Но как только я привел пример, Вы стали говорить, что я что-то рекламирую (!?). Я никогда в жизни ничего не рекламировал:) И не буду рекламировать. Блок А.Н. Согласен, реляционная модель и модель сущность-связь не одно и то. Но чисто внешне, на уровне модели, они имеют много общего, причем ваша модель еще жестче и требовательней к формализации, чем реляцоннная. Наверняка это должно давать свои преимущества в работе с системой, новые методы, новые возможности. Какие? Это не моя модель, а классическая объектная модель (КОМД), предками которой являются объектно-ориентированные (в отличие от записе-ориентированной реляционной модели) иерархическая и сетевая модели. Да, я занимался ее расширением и формализацией, и продолжаю заниматься:) Базовая идея объединить концептаульный и логический уровень (в случае РМД - логический уровень, концептуальным, обычно, считается ER-модель). У КОМД другой уровень абстракции (помимо уже много раз объясненных принципиальных отличий в идентификации и семантике): в РМД только отношения, в КОМД объекты и связи. Кодд также пытался как-то описывать связи (вводил понятия "отношение типа сущности" и "отношение типа связи"), но из этого ничего не получилось. И не может получиться чисто формально. Я уже приводил мнение Дейта о том, что "связи" (он использует неизбежно этот термин концептуального уровня, хотя в РМД, конечно же, нет никаких связей) нужно представлять одним способом, независимо от их мощности, то есть, всегда отдельным отношением. Но это невозможно в РМД: 1) "Cвязи" "реализуются" с помощью внешних ключей. Формально, связи - это линии от внешнего ключа в отношении A к потенциальномe в отношении B. 2) Создаем для этой "связи" отношение C. 3) В нем два внешних ключа. 4) Но внешние ключи - это связи. 5) Следовательно, для них нужно создать отдельные отношения D и E. 6) И т.д. Связи очень хорошо зарекомендовали себя при создании сложных приложений. А многие приложения могут быть созданы просто описанием схемы данных, без программирования. Благодаря тому, что КОМД просто органически предполагает, по сути в составе СУБД, объектный навигатор. Так как метаданные в КОМД описывают семантику предметной области, естественно, на родном языке, то после описания схемы данных, приложение готово к использованию. Важно, что КОМД восприимчива к развитию, тогда как РМД органически не восприимчива. Пара идей по развитию. 1. Поддерживать два типа объектов: сущности и события (участниками которых являются сущности). 2. Реализовать "классификаторы", как тип характеристики объекта. Это идея имеет простое обоснование. Представим, что у нас есть характеристики (свойства, атрибуты) Фамилия и Дата рождения объекта (класса, отношения) Человек. Когда мы для определенного экземпляра (объекта, кортежа) указываем значение характеристики Фамилия Сидоров, мы относим конкретного человека к КЛАССУ ЛЮДЕЙ, имеющих фамилию Сидоров. Когда мы для определенного экземпляра указываем значение характеристики Дата рождения 12.09.1990, мы относим конкретного человека к КЛАССУ ЛЮДЕЙ, родившихся 12.09.1990. То есть, любая характеристика - в определенном смысле "классификатор". Вот и нужно "классификаторы" (и иерархические и фасетные) сделать типом характеристики, наряду со строками и датами. Тот, кто это первым реализует почувсвует существенное упрощение при решении многих практических задач:) И т.д.:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 22:25 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.В том же Аксессе можно без программирования создать функциональную СУБД. Так почему же он не захватил весь мир? Неожиданная, прямо скажем, идея:) Без программирования можно и спомощью журналов, которые ведутся шариковой ручкой создать функциональную СУБД. Почему мы перешли на Аксесс. Он ВО ВСЕХ ДРУГИХ ОТНОШЕНИЯХ аналог Cache (производительность, масштабируемость и т.п.)? Блок А.Н. Чем больше система подразумевает "за тебя", тем удобнее она для получения быстрого результата, но при этом при попытке выхода за рамки заложенных шаблонов упираемся в стенку. В какую именно стенку мы упираемся по существу обсуждаемых моделей данных?:) При использовании РСУБД мы упираемся в стенку уже при проектировании приложения. Приходится использовать ДРУГУЮ модель данных, ДРУГОЕ ПО, которое поддерживает эту модель данных, и, соответсвенно, "маппинг":) Блок А.Н. Настоящая мощная ИС должна давать доступ "к буквам". Все вот эти "сделать одной кнопкой" на самом деле очень ограничены. И я говорю не только про М/Каше, та же объектно/процедурная модель построена так же. Если говорить про мастер/детайл, накладные и т.д., то мы уже явно загоняем себя в угол. Можно создать очень удобную систему, но она будет удобна только в очень узкой области. В какой угол, конкретно?:) Не накладные, так самолеты, не операции, так диагнозы, долги, соглашения, молекулы, растения:) Где угол-то? Безусловно, могут быть конкретные задачи, для которых оптимальна СПЕЦИАЛИЗИРОВАННАЯ СУБД. Эта модная идея Сноунбрейкера и других специалистов в области баз данных. Но я подозреваю, что эта мода скоро пройдет:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 22:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Кстати ... :) Из документа от 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! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 23:58 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Несколькими страницами ранее читаем: БредятинаВ частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи"Здесь же:Бредятина в РМД: 1) "Cвязи" "реализуются" с помощью внешних ключейВ каком же случае Вам верить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 11:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovНесколькими страницами ранее читаем: БредятинаВ частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи"Здесь же:Бредятина в РМД: 1) "Cвязи" "реализуются" с помощью внешних ключейВ каком же случае Вам верить? :) "реализуются" в кавычках означает видимо что не совсем реализутся поэтому противоречия между высказываниями нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 13:27 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
MX-9"реализуются" в кавычках означает видимо что не совсем реализутсяТогда "связи" в кавычках означает видимо, что не совсем связи. Значит "не совсем связи не совсем реализуются с помощью внешних ключей" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 13:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov, Потому что "связи" никакого отношения к данным в ИС и их целостности не имеют. Целостность обеспечивают операции записи/корректировки/удаления данных в ИС. Если эти операции не обращают внимания на нарисованные "связи", то целостности все равно не будет. А если операции обеспечивают целостность данных в ИС без явно прописанных "связей", то и "связи" не нужны. "Связи" это избыточный набор данных, с помощью которого операции записи/корректировки/удаления поддерживают целостность данных в ИС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 15:06 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
а что скажет начальник транспортного цеха .. просим .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
doublefint Возможность построения универсального интерфейса, в котором пользователь может указать что и как ему выводить, без программирования. Например, для схемы master-detail в master расположить строку накладной, а в detail шапку накладной. И все это без программирования. В этой части тоже есть несколько полезных идей, которые несложно реализовать. Пример. Конечно, у пользователя уйдет меньше минуты, чтобы создать себе такую схему. Но, все-таки, ее нужно создать, и она пополнит список пользовательстких схем. Однако этого можно избежать, если реализовать ФУНКЦИЮ АВТОМАТИЧЕСКОЙ РОТАЦИИ. Тогда изменение головного объекта в схеме (а точнее полное "вращение", так как в схеме может быть более двух взаимосвязанных объектов) будет делаться одним щелчком:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Такое ощущение, что вы забыли написать большой кусок текста. Ничего не понятно У какого пользователя уйдет меньше минуты? Что такое функция ротации и зачем она нужна? Что такое вращение? Вы о чем-то своем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:34 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Пока с точки определений модель ... очень близка к реляционной. Но дополнительные ограничения дают нам основания ожидать, что мы взамен получим некий механизм, некую новую "алгебру" для работы с этими сущностями-связями. И интуитивно мне кажется, что это возможно... Не думаю, что "алгебра" актуальна. Я уже объяснял, что от SQL толку мало. Для него нужно искать ниши какие-то. Вот я нашел одну - "статистическая алгебра":) Но производители РСУБД эти ниши не ищут, а, пользуясь "историческим моментом", впаривают всем подряд:) Еще раз приведу пример. Предположим у нас есть сложная система, в которой нового пользователя интересует вот такой фрагмент: Страна - Имеет (1:М) - Университеты Страна - Имеет (1:М) - Гостиницы Его интересуют, например, страны с населением менее 20 млн. (это характеристика объекта Страна), университеты в них с числом студентов более 2 тыс. (это характеристика объекта Университет) и гостиницы типа *** (это характеристика объекта гостиница). Он просто создает указанную выше схему и делает в ней указанный запрос. Поскольку РЕЗУЛЬТАТОМ ЗАПРОСА К БАЗЕ ДАННЫХ ЯВЛЯЕТСЯ ПОСХЕМА СХЕМЫ БАЗЫ ДАННЫХ СО ВСЕЙ СЕМАНТИКОЙ, ПРИСУЩЕЙ БАЗЕ ДАННЫХ результатом является точно та же схема, в которой просто поменьше экземпляров этих трех объектов:) В реляционной технологии, благодаря замечательному свойству реляционной замкнутости результатом запроса будет некоторое новое отношение. Что это за отношение? Вы узнаете обычным путем: заключить договор, написать ТЗ, заплатить деньги:) И так на каждом шагу. Безусловный плюс реляционной технологии - она обеспечивает работой целую армию программистов, которые только и обсуждают между собой аспекты борьбы с "запросами", "хинтами", "оптимизаторами", "EAV" и т.п.:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovНесколькими страницами ранее читаем: БредятинаВ частности, в РМД "внешние ключи" - это элемент ограничения целостности, а вовсе не "связи"Здесь же:Бредятина в РМД: 1) "Cвязи" "реализуются" с помощью внешних ключейВ каком же случае Вам верить? :) В обоих, Алексей. Особенно, если быть чуть внимательнее:) И не выбирать предложения из текста. Дейт (а не я, поэтому слово связь я взял в кавычки) вынужден использовать слово "связь" из модели сущность-связь, чтобы объяснить свою мысль об универсальном способе представления "связей" (всегда с помощью отдельного отношения). Внешние ключи - это ограничения целостности, а не связи. Читайте главу 14 "Семантическое моделирование" в 8-м издании. Там, кстати, есть раздел с красноречивым названием "Является ли ER-модель моделью данных". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:50 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shuAlexey Maslov, Потому что "связи" никакого отношения к данным в ИС и их целостности не имеют. Целостность обеспечивают операции записи/корректировки/удаления данных в ИС. Если эти операции не обращают внимания на нарисованные "связи", то целостности все равно не будет. А если операции обеспечивают целостность данных в ИС без явно прописанных "связей", то и "связи" не нужны. "Связи" это избыточный набор данных, с помощью которого операции записи/корректировки/удаления поддерживают целостность данных в ИС. Надеюсь, здесь речь идет о реляционных ИС:) Так как в КОМД связи являются таким же полноправным элементов структуры, как и объекты, и "участвуют" в ограничениях целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Такое ощущение, что вы забыли написать большой кусок текста. Ничего не понятно У какого пользователя уйдет меньше минуты? Что такое функция ротации и зачем она нужна? Что такое вращение? Вы о чем-то своем? Здасьте, приехали:) Я исключительно о Вашем. Есть "стандартная" схема, которая, например, создана разработчиком: Документ: ТТН - Состоит из -> Операция отгрузки Пользователь элементарно (меньше минуты) создает себе другую, нужную ему для работы, схему: Операция отгрузки <- Входит в - Документ: ТТН и работает с ней. Именно об этом Вам написал doublefint А я пояснил, что можно идти дальше и одним щелчком сделать объект Операция отгрузки головным в первой схеме (и вообще не делать вторую схему). Что же здесь непонятного?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 17:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Дейт, 8 изд-е, Глава 14. Семантическое моделированиеСвязи типа "один к одному" и "один ко многим" всегда могут быть представлены с помощью механизма внешнего ключа, помещаемого в одну из переменных отношения, участвующих в данной связи. Однако существуют веские причины рассмотрения связей типа "один к одному" и "один ко многим" на таких же основаниях, как и связи типа "многие ко многим", по крайней мере, из-за того, что достаточно часто существует возможность того, что они будут развиваться и со временем преобразовываться в связи типа "многие ко многим". И только если такой возможности нет, их можно рассматривать как-то иначе. Безусловно, в некоторых случаях подобной возможности не может быть в принципе; например всегда будет верным утверждение, что окружность имеет только одну точку, являющуюся ее центром.Поэтому (следуя Дейту) противоречий при представлении связей M:M в РМД через промежуточные отношения не возникает: каждая связь промежуточного отношения ("отношения-связи") с "отношением-сущностью" принципиально 1:M. Может я чего-то недопонимаю, но какая у нее возможность развития в M:M? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 18:48 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovДейт, 8 изд-е, Глава 14. Семантическое моделированиеСвязи типа "один к одному" и "один ко многим" всегда могут быть представлены с помощью механизма внешнего ключа, помещаемого в одну из переменных отношения, участвующих в данной связи. Однако существуют веские причины рассмотрения связей типа "один к одному" и "один ко многим" на таких же основаниях, как и связи типа "многие ко многим", по крайней мере, из-за того, что достаточно часто существует возможность того, что они будут развиваться и со временем преобразовываться в связи типа "многие ко многим". И только если такой возможности нет, их можно рассматривать как-то иначе. Безусловно, в некоторых случаях подобной возможности не может быть в принципе; например всегда будет верным утверждение, что окружность имеет только одну точку, являющуюся ее центром.Поэтому (следуя Дейту) противоречий при представлении связей M:M в РМД через промежуточные отношения не возникает: каждая связь промежуточного отношения ("отношения-связи") с "отношением-сущностью" принципиально 1:M. Может я чего-то недопонимаю, но какая у нее возможность развития в M:M? Никто о ТАКОГО РОДА противоречиях и не говорит. Дейт намекает, в частности, на то, что если в ходе эксплуатации приложения потребуется вместо 1:М сделать М:М, то при наличии отдельного отношения это делается элементарно. Только и всего. Проблема в том, что это отдельное отношение имеет "связи" с двумя другими отношениями (в виде внешних ключей). А "связи" Дейт рекомендует представлять отдельными отношениями:). То есть, поскольку никаких связей в РМД не поддерживается, только в голове можно держать информацию о том, что вот это отношение представляет собой "связь". Причем, это нельзя держать в голове на том основании, что в отношении более одного внешнего ключа (такие предложения иногда можно встретить в литературе), так как, совершенно очевидно, что многие отношения, содержащие более одного внешнего ключа представляют собой сущности (а не связи), имеющие "связи" с другими сущностями (М:1). Однако основной идеей Дейта в этом абзаце (кстати, почитайте выше про "настояшщие" и "не настоящие связи:)) является идея "легализации связей" в РМД. Хотелось бы чтобы они были в РМД:) Но для этого нужна какая-то конструкция. Вот отдельное отношение и представляет эту конструкцию. Поэтому Дейт и вставил слова "по крайней мере, из-за того, что", подразумевая, что это не единственная причина:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 19:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаВ этой части тоже есть несколько полезных идей, которые несложно реализовать. Пример. Конечно, у пользователя уйдет меньше минуты, чтобы создать себе такую схему. Но, все-таки, ее нужно создать, и она пополнит список пользовательстких схем. Однако этого можно избежать, если реализовать ФУНКЦИЮ АВТОМАТИЧЕСКОЙ РОТАЦИИ. Тогда изменение головного объекта в схеме (а точнее полное "вращение", так как в схеме может быть более двух взаимосвязанных объектов) будет делаться одним щелчком:) В теме про IBM IMS пробегала именно такая операция на уровне СУБД. Давно придумали ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 21:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl, как бы настолько необязательная и интерфейсная операция... Дополнительный бантик к объектному навигатору, не более. Это скорее уровень реализации, но не идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 21:40 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина, вы, как мне показалось, продвигаете идею, что работа с базой должна быть на уровне навигации самим пользователем. И никаких SQL и процедурного программирования. Вот такая задача: есть объекты, есть состояния объектов, причем есть дата начала каждого состояния. Причем история действительна с начальной даты и до следующей истории объекта или до конца, если нет поздней истории. Нужно получить агрегирующую функцию(например, список уникальных значений с сортировкой по функции от значения) по атрибутам состояний объектов на определенную дату. Это упрощенная модель одного из реальных модулей, решена в методике классов без объектов, внутри методов sql и глобалы. А как бы вы решали такую задачу? Покажите на псевдокоде или на картинках, но так, чтобы было понятно. А то мастер-детайл это как-то скучно, это умеет делать тот же аксесс, причем очень визуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 08:45 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
А, ну, и конечно же, с фильтрацией по другому аттрибуту состояния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 08:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина...совершенно очевидно, что многие отношения, содержащие более одного внешнего ключа представляют собой сущности (а не связи), имеющие "связи" с другими сущностями (М:1).ИМХО, в данном случае совершенно неочевидно. Ибо обсуждаемое отношение как раз и было создано, чтобы промоделировать связь M:N между сущностями. Т.е. его две связи (1:M) как раз и являются "ненастоящими", и нет никаких причин для их превращения в "настоящие" (M:N). Если Вы другого мнения, обоснуйте его. Можно на каком-то конкретном примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 12:07 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl В теме про IBM IMS пробегала именно такая операция на уровне СУБД. Давно придумали ) Пробегала, но не такая:) Здесь БД совсем не затрагивается. В КОМД итак поддерживаютсядвухсторонние связи. Здесь речь идет только о функционале навигатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 15:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
doublefintSiemargl, как бы настолько необязательная и интерфейсная операция... Дополнительный бантик к объектному навигатору, не более. Это скорее уровень реализации, но не идеи. Но ведь существуют же идеи реализации:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 15:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Бредятина, вы, как мне показалось, продвигаете идею, что работа с базой должна быть на уровне навигации самим пользователем. И никаких SQL и процедурного программирования. Это Вам показалось. Поскольку, во-первых, сложную систему трудно создать, например, без триггеров, а их нужно программировать, а во-вторых, пользователи делают запросы и формируют отчеты:) Ясно, что помимо навигатора (в рамках которого можно решать множество задач) есть и оптимизатор, и генератор отчетов, и снапшоты. Может внутри этих инструментов использоваться декларативный язык? Можно. То есть, я не понимаю что Вас конкретно смущает?:) Блок А.Н. Вот такая задача: есть объекты, есть состояния объектов, причем есть дата начала каждого состояния. Причем история действительна с начальной даты и до следующей истории объекта или до конца, если нет поздней истории. Нужно получить агрегирующую функцию(например, список уникальных значений с сортировкой по функции от значения) по атрибутам состояний объектов на определенную дату. Это упрощенная модель одного из реальных модулей, решена в методике классов без объектов, внутри методов sql и глобалы. А как бы вы решали такую задачу? Покажите на псевдокоде или на картинках, но так, чтобы было понятно. А то мастер-детайл это как-то скучно, это умеет делать тот же аксесс, причем очень визуально. Я бы обычно решил эту задачу, как и значительно более трудные:) И совсем уж не понятно при чем здесь "мастер-детэйл". Например, задача получения баланса предприятия на любую дату (балансовый счет - объект, состояние которого постоянно меняется), конечно, решена, в той же Икс, и, конечно, без "классов" и SQL, конечно, на mumps:) Я уже неоднократно приводил статистику, в том числе и Вам, показывающую не актуальность SQL. Вы сформулируйте, пожалуйста, что именно Вас беспокоит в классической объектной модели данных? Например, в ней нельзя решить задачу такого-то класса. И поэтому задачи этого класса являются нишей для технологии "классов без объектов, внутри методов sql и глобалов"? Да я же не спорю. Я же уже говорил, что сам озабечен поиском ниши для SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 15:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovБредятина...совершенно очевидно, что многие отношения, содержащие более одного внешнего ключа представляют собой сущности (а не связи), имеющие "связи" с другими сущностями (М:1).ИМХО, в данном случае совершенно неочевидно. Ибо обсуждаемое отношение как раз и было создано, чтобы промоделировать связь M:N между сущностями. Т.е. его две связи (1:M) как раз и являются "ненастоящими", и нет никаких причин для их превращения в "настоящие" (M:N). Если Вы другого мнения, обоснуйте его. Можно на каком-то конкретном примере. Что значит "в данном случае"? Как представляются "связи" в РМД? С помощью внешних ключей? Или с помощью отношений? Как Вы определяете, что "связь" М:1, представленная в виде внешнего ключа, не может стать "настоящей связью", представленной в виде отношения? Вы говорите, что вот эта конкретная "связь" вот в этом конкретном отношении гарантированно не может стать "настоящей", потому что само это отношение было специально создано, чтобы поддерживать "настоящую связь"? Во-первых, а откуда это известно-то? А, во-вторых, это не так! Например: Люди работают в организациях. М:М. Создаем отдельное отношение. Человек -(1:М) -> Работа человека в организации <-(М:1) - Организация Уже понятно, что на самом деле мы создали еще одну сущность (именно так это и надо всегда интепретировать, так как никаких "отношений типа связь" нет в РМД, не удалось их формально поддерживать). Это понятно даже из названия, так как связи всегда представляются глагольными формами. Но, продолжим эксплуатировать созданную нами систему, чтобы убедиться, что дополнительное отношения вовсе не представляет "настоящую связь", а "связи" в виде внешних ключей вовсе не являются "не настоящими". Добавим (по объективной необходимости) поле Должность в наше "специализированное" отношение (больше-то ее некуда добавить), и принимаем решение не дублировать должности каждый раз для разных людей:) А заодно выясняется, что человек может работать грузчиком в ДВУХ организациях:). Получаем: Человек <- (М:М) -> Работа человека в организации {Должность} <- (М:М) -> Организация Конечно же, и это еще не все. Создав еще два отношения, Вы не можете опять гарантировать, что это "настоящие связи":) Нет в РМД структуры для представления связи, вот и прихидится вводить, мягко говоря, странные определения: "не настоящие связи" и "настоящие связи". Это дополнительное отношение, конечно же, новая сущность (а вовсе не связь), "связанная" с двумя другими сущностями стандартным для РМД механизмом - внешний ключ. А в широком смысле, механизмом связывания по "общим" полям (вовсе не обязательно по ключам). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 16:03 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Баланс решается взять очень просто, те же группировки есть в SQL-обычно, также есть сальдо на заданный период. Эта задача немножко хуже. В SQL эта задача решается в одно выражение, но каше такой sql не поддерживает и вообще он по скорости будет очень плохим. Либо SQL с процедурным программированием, тоже ничего приятного. Я уже говорил, что ИДЕЙ на самом деле очень мало. И либо вы гений и придумали какую-то оригинальную новую идею, либо вы используете что-то из уже известного. И еще, вы опытный спорщик, и споре избегаете давать прямые ответы. На мой вопрос вы не ответили - придется додумывать за вас. Мне так показалось, вы будете использовать объектную модель и процедурное программирование? Причем класс будет с поддержкой интерфейса "связи" и методами работы со связями. Так? И в чем изюм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 16:36 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Баланс решается взять очень просто, те же группировки есть в SQL-обычно, также есть сальдо на заданный период. Эта задача немножко хуже. Чем хуже? Я без БД не знаю как задачи решать. Это однодневки будут. А Вы про БД ничего не говорите. Нет схемы данных. А она решает все. Программирование ничего не решает. Его нужно сводить к минимуму во всех стандартных случаях. А с другой строны, не боятся программировать наиболее эффективным образом (не полагаясь на "помощь" постоянно меняющихся "оптимизаторов") редкие "не стандартные" задачи, постепенно превращая и их в "стандартные". Блок А.Н. В SQL эта задача решается в одно выражение, но каше такой sql не поддерживает и вообще он по скорости будет очень плохим. Либо SQL с процедурным программированием, тоже ничего приятного. С SQL ничем не могу помочь. Периодически приходится с ним сталкиваться, и убеждаться, что пользы от него меньше, чем вреда. Хотя интересно что означает "такой SQL"? А программировать приложение на нескольких языках с разными парадигмами, конечно, малоприятное занятие. Блок А.Н. Я уже говорил, что ИДЕЙ на самом деле очень мало. И либо вы гений и придумали какую-то оригинальную новую идею, либо вы используете что-то из уже известного. Я постоянно подчеркиваю, что ничего нового не придумал. А Вы это постоянно игнорируете:) Блок А.Н. И еще, вы опытный спорщик, и споре избегаете давать прямые ответы. На мой вопрос вы не ответили - придется додумывать за вас. Я сейчас разбираюсь с couchdb, и не могу решать какие-то задачи про "состояния объектов". Могу только сказать, что ничего сложного в этой задаче нет. Блок А.Н. Мне так показалось, вы будете использовать объектную модель и процедурное программирование? Причем класс будет с поддержкой интерфейса "связи" и методами работы со связями. Так? И в чем изюм? Я бы, конечно, использовал КОМД и ее ЯМД. Вы почти правы. И на 100% правы, что никакого изюма нет и в помине. А Вы вот думаете как быть с Cache, в которой не тот SQL, который нужен:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 16:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаДобавим (по объективной необходимости) поле Должность в наше "специализированное" отношение (больше-то ее некуда добавить), и принимаем решение не дублировать должности каждый раз для разных людей:) А заодно выясняется, что человек может работать грузчиком в ДВУХ организациях:). Получаем: Человек <- (М:М) -> Работа человека в организации {Должность} <- (М:М) -> Организация Неверно получаем. Всего лишь так. Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация Должность <- (1:M) --/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
С каше все нормально, не о ней речь (не смотря на название темы ) Вы опять не ответили ничего. Непосредственно данными как будете оперировать? Модель моделью, а дальше то что? Свою задачу я привел в ответ на тезис о том, что модель решает все и ничего не надо программировать, сделал мастер-детайл или другие связи - наступило счастье. Вот я и попросил научить, как на основе модели (метаданных) решать такие задачи. Пока ответа не получил. С помощью процедурного программирования и объектной модели она решается, и я это сказал. Вы обвинили SQL в том, что на нем нужно программировать ("обеспечивает работой целую армию программистов") Хочу знать новый способ. Кстати, КОМД - это аббревиатура, которой пользуетесь на sql.ru только вы. В какой-то момент я ее начал понимать, а потом забыл :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:18 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl Неверно получаем. Всего лишь так. Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация Должность <- (1:M) --/ :) Вы уж, пожалуйста, не путайте людей. Которые хотят разобраться со связями. Я с удовольствием готов обсудить с Вами ту проблему, которую Вы сейчас придумываете на ходу, как и проблемы проектирования БД в целом. А сейчас мы получили именно то, что я написал, объясняя, что связь M:1 может стать связью М:М, о чем и написал Дейт в абзаце, с которого все это началось. А Вы взяли кусочек из контекста, и поставили для себя другую задачу. Видимо, строгую задачу изначально правильного проектирования БД:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.С каше все нормально, не о ней речь (не смотря на название темы ) "В SQL эта задача решается в одно выражение, но каше такой sql не поддерживает и вообще он по скорости будет очень плохим..." Вы, видимо, хотите меня максимально запутать:) Напрасно. Блок А.Н. Вы опять не ответили ничего. Непосредственно данными как будете оперировать? Модель моделью, а дальше то что? А Вы меня опять с кем-то путаете. Я предельно точно ответил. Блок А.Н. Свою задачу я привел в ответ на тезис о том, что модель решает все и ничего не надо программировать, сделал мастер-детайл или другие связи - наступило счастье. Напомню, что мы говорили о моделях данных, в целом, и о поддержки в них связей между сущностями, в частности. Ни о каких "мастер-детайл связях" (???) я не говорил. Модель решает намного больше, чем Вам кажется. Но то, что она решает все, я тоже не говорил. Про счастье тоже не говорил:) Блок А.Н. Вот я и попросил научить, как на основе модели (метаданных) решать такие задачи. Пока ответа не получил. С помощью процедурного программирования и объектной модели она решается, и я это сказал. И я это подтвердил. Черным по белому (только использовал КОМД, а не "объектная модель", поскольку не знаю, что Вы подразумеваете под "объектной моделью"). Блок А.Н. Вы обвинили SQL в том, что на нем нужно программировать ("обеспечивает работой целую армию программистов") Хочу знать новый способ. Не хитрите, пожалуйста:) Я не голословно "обвинил". И вовсе не обвинил. А привел пример, с которыми сталкиваюсь на практике ежедневно. Так как по роду работы анализирую эксплуатацию разнообразных информационных систем:) Про ДРУГОЙ ПОДХОД (я же нового ничего не придумал, так что это не новый способ:)) мы здесь как раз и рассуждаем. Блок А.Н. Кстати, КОМД - это аббревиатура, которой пользуетесь на sql.ru только вы. В какой-то момент я ее начал понимать, а потом забыл :( И в чем я виноват? Опять?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:32 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаSiemargl Неверно получаем. Всего лишь так. Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация Должность <- (1:M) --/ :) Вы уж, пожалуйста, не путайте людей. Которые хотят разобраться со связями. Я с удовольствием готов обсудить с Вами ту проблему, которую Вы сейчас придумываете на ходу, как и проблемы проектирования БД в целом. А сейчас мы получили именно то, что я написал, объясняя, что связь M:1 может стать связью М:М, о чем и написал Дейт в абзаце, с которого все это началось. А Вы взяли кусочек из контекста, и поставили для себя другую задачу. Видимо, строгую задачу изначально правильного проектирования БД:) Пойдем с другой стороны. Как эта задача правильно, на ваш взгляд, проектируется в объектах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:49 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блин, рыбину в аквариуме проще поймать, чем от вас добиться точного ответа. С каше по прежнему все нормально, потому что SQL является в ней вспомогательным, а не основным инструментом. С моделью данных тоже понятно. Это сущности и связи между ними. Причем связи не являются атрибутами объектов, за счет этого могут свободно меня тип от 1-М до М-М и потенциально еще много чего. Это мы тоже выяснили. С такое моделью можно работать через SQL, можно через объекты, но мы выяснили, что вы эт оне делаете. Осталось выяснить что такое этот таинственный КОМД и как вы посредством ее минуя процедурное/объектное программирование и SQL что-то получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:53 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl Пойдем с другой стороны. Как эта задача правильно, на ваш взгляд, проектируется в объектах ? Зачем же идти с другой стороны?. И при чем здесь "правильное проектирование"? Мы же рассматривали пример, который показывает, что отношение, представляющее "настоящую связь", вовсе не представляет никакой связи. Вы хотите бОльшей строгости в примере что ли? Это справедливо, согласен. Человек - (1:М) -> Работа человека в организации <- (М:1) - Организация Мы создали отношение для представления связи М:М и думаем, что оно представляет "настоящую связь. Пусть, каждая Работа продолжает относится строго к одной организации. Просто для учета Должностей заменяем ее на Должность и добавляем поля (Оклад, например): Человек - (1:М) -> Должность <- (М:1) - Организация Мы уже видим, что то, что мы хотели бы назвать "настоящей связью" оказалось вовсе не связью:). Пошли дальше. Должность занимают разные люди в разное время. Таким образом, первая связь становится М:М. Но! То отношение, которое мы сейчас добавим как бы для реализации этой связи является, конечно же, отдельной сущностью со своими многочисленными характеристиками (Дата назначения и т.п.): Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация Я и объяснял, что отношения, содержащие более одного внешнего ключа (в данном случае Назначение) вовсе не представляют никаких связей, а являются самостоятельными сущностями. КОМД и соответсвующая КОСУБД отличаются тем (только в том узком направлении, о котором мы говорим сейчас), что поддерживают связи (в том числе М:М, что принципиально невозможно в РМД) и их семантику (что особенно важно, когда между двумя объектами более одной связи). В КОМД мы создаем схему: Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D) Где A, B, C, D - идентификаторы объектов (технические метаданные). Человек, а не table People:) То же самое и с характеристиками этих объектов. То есть, приложение семантически готово к использованию стандартными средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Блин, рыбину в аквариуме проще поймать, чем от вас добиться точного ответа. С каше по прежнему все нормально, потому что SQL является в ней вспомогательным, а не основным инструментом. Спасибо за уточнение. Клещами приходится вытягивать, указывая на очевидные противоречия в высказываниях:) А мои-то ответы предельно точны. Блок А.Н. С моделью данных тоже понятно. Это сущности и связи между ними. Причем связи не являются атрибутами объектов, за счет этого могут свободно меня тип от 1-М до М-М и потенциально еще много чего. Это мы тоже выяснили. Термин сущность не вполне хорош. Нужно использовать термин "объект". Так как он (объект) может быть двух типов: сущность (вот где сущность) и событие (см. сообщение о перспективных идеях). Блок А.Н. С такой моделью можно работать через SQL, можно через объекты, но мы выяснили, что вы это не делаете. А это уже не просто неточность, а серьезное заблуждение. Никак нельзя работать "через SQL" с такой моделью, поскольку в SQL принципиально не поддерживаются связи между объектами. Блок А.Н. Осталось выяснить что такое этот таинственный КОМД и как вы посредством ее минуя процедурное/объектное программирование и SQL что-то получить. КОМД - это классическая объектная модель данных, о которой, как Вы сказали выше, Вам все понятно. Видимо, все-таки, не все:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:27 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Итак, Бредятинапринимаем решение не дублировать должности каждый раз для разных людей:) А заодно выясняется, что человек может работать грузчиком в ДВУХ организациях:).Замечательно; но не вижу, как отсюда вытекает следующий проделанный Вами шаг:БредятинаПолучаем: Человек <- (М:М) -> Работа человека в организации {Должность} <- (М:М) -> ОрганизацияСкорее, готов поверить в то, что в моделируемом нами мире может существовать и единый классификатор должностей. Тогда вполне подходит модель Siemargl: бинарная связь M:N превращается в тернарную M:N:P. По-прежнему моделируется _одной_ дополнительной сущностью, правда теперь уже с тремя внешними ключами. Соглашусь с тем, что "настоящую связь" M:N лучше рассматривать как отдельную сущность (тем более, что и классики к этому призывают :), но пока что не вижу, к каким проблемам это ведет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:43 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
А дальше то, дальше что с этой КОМД делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:43 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина, прошу извинить, разместил свою реплику, не увидев Вашей в 19:19). Ушел думать :)... Приятных всем выходных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:48 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина, Искуственное размазывание простой звезды для показывания ущербности реализации М:М в РСУБД думаю можно опустить, не суть важно. Отличий не вижу при подходах: 1. Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация и 2. Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D) Может с объектами все же не так прямолинейно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:53 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov Тогда вполне подходит модель Siemargl: бинарная связь M:N превращается в тернарную M:N:P. По-прежнему моделируется _одной_ дополнительной сущностью, правда теперь уже с тремя внешними ключами. Соглашусь с тем, что "настоящую связь" M:N лучше рассматривать как отдельную сущность (тем более, что и классики к этому призывают :), но пока что не вижу, к каким проблемам это ведет. Удивительно:) Как это "соглашусь"? "Ваше" ПО просто не будет работать, если этого не сделать. Это вынужденная мера, из-за того, что связи ПРИНЦИПИАЛЬНО НЕ ПОДДЕРЖИВАЮТСЯ. Что значит "рассматривать"? Держать у себя в голове? Ведь на логике это никак не отражается. Нет никакой связи. И наконец, Вы забыли, что классики призывают ВСЕ СВЯЗИ "рассматривать" как отдельные сущности. Но это также бессмысленно, как и НЕКОТОРЫЕ связи "рассматривать" как отдельные сущности. "Связи" в РМД представляются внешними ключами, и никак иначе. Теоретически, есть вариант поддержки всех связей с помощью специального типа отношения. В таком типе отношения нужно запретить создавать атрибуты, которые НЕ ЯВЛЯЮТСЯ ВНЕШНИМИ КЛЮЧАМИ, а также предусмотреть создание ровно двух внешних ключей (так как никаких связей, кроме бинарных не существует). Это было бы неким приближением к реальной поддержке связей между объектами. При этом мощность связи управляется условиями уникальности, накладываемыми на пару внешних ключей. Но это уже не реляционная модель:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 23:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.А дальше то, дальше что с этой КОМД делать? То же, что и с любой другой МД. Создать СУБД, которая поддерживает эту модель. И использовать ее для создания приложений. Что и было сделано. А почему Вы задали этот странный вопрос, ответ на который очевиден? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 23:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl Искуственное размазывание простой звезды для показывания ущербности реализации М:М в РСУБД думаю можно опустить, не суть важно. Здесь требуются пояснение. При проектировании БД в любой модели данных я не слышал термина "искусственное размазывание". Также ни в РМД, ни в КОМД нет понятия "простая звезда". В РМД есть отношения. А в КОМД объекты и связи. Я не понимаю какие "простые звезды" я "искусственно размазывал". Siemargl Отличий не вижу при подходах: 1. Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация и 2. Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D) Может с объектами все же не так прямолинейно? Да нет, все достаточно прямолинейно. Есть объекты и связи между ними. А в другом случае нет ни объектов, ни связей. А Вы сделали вид будто-бы они есть, и нарисовали два раза одно и то же:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 23:54 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаSiemargl Искуственное размазывание простой звезды для показывания ущербности реализации М:М в РСУБД думаю можно опустить, не суть важно. Здесь требуются пояснение. При проектировании БД в любой модели данных я не слышал термина "искусственное размазывание". Также ни в РМД, ни в КОМД нет понятия "простая звезда". В РМД есть отношения. А в КОМД объекты и связи. Я не понимаю какие "простые звезды" я "искусственно размазывал". Просветим легко =) Бредятина Siemargl Отличий не вижу при подходах: 1. Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация и 2. Человек (A) - Имеет/Относится к -> Назначение (B) <- Относится к/Имеет - Должность (C) <-Относится к/Имеет - Организация (D) Может с объектами все же не так прямолинейно? Да нет, все достаточно прямолинейно. Есть объекты и связи между ними. А в другом случае нет ни объектов, ни связей. А Вы сделали вид будто-бы они есть, и нарисовали два раза одно и то же:) В компьютере все биты и байты. Все остальное всего лишь один из способов сильно наморщить лоб, т.е сила абстракции )) Напишите на любом метаязыке представление объектов для этой структуры - может станет понятнее, куда медитировать. А сделал и и написал не я, а вы - я лишь процитировал ваши структуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 00:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl Просветим легко =) И где же "искусственное размазывание" и "простая звезда"??? Siemargl В компьютере все биты и байты. Все остальное всего лишь один из способов сильно наморщить лоб, т.е сила абстракции )) А-а-а, значит РМД - это биты и байты? А КОМД - это "наморшить лоб"? Я так и знал:) Siemargl Напишите на любом метаязыке представление объектов для этой структуры - может станет понятнее, куда медитировать. Хорошо, напишу на рефале, он мне больше всего нравится:) И буду медитировать. Siemargl А сделал и и написал не я, а вы - я лишь процитировал ваши структуры. Не поняв о чем речь:) Бывает.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 01:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovБредятина, прошу извинить, разместил свою реплику, не увидев Вашей в 19:19). Ушел думать :)... Приятных всем выходных! И Вам хорошо отдохнуть. То есть, подумать:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 01:22 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович, у меня создается ощущение, что вы всегда работали Пророком, а не в практической разработке. Не надо на вопрос "как работать с КОМД" отвечать "используя методику работы с КОМД". Кроме красивости модели есть фактор удобства работы с ней, я не раз встречал случаи сознательной денормализации, при которых идеология становилась хуже, но работать с ней становилось удобнее. Ответьте, что за методика, какие методы. Если есть возможность привести кусок кода - покажите как делаются простейшие операции. А то создается впечатление, что вы пришли сюда просто всех потроллить. В этом случае мне жаль, что я участвую в этом разговоре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 07:10 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Андрей Леонидович, у меня создается ощущение, что вы всегда работали Пророком, а не в практической разработке. Это отдельная тема? Я на личности не переходил:) А эту Вашу идею здесь уже высказывали много раз. Я ее опровергать не собираюсь, так как это не имеет к моделям данных никакого отношения. Блок А.Н. Не надо на вопрос "как работать с КОМД" отвечать "используя методику работы с КОМД". Кроме красивости модели есть фактор удобства работы с ней, я не раз встречал случаи сознательной денормализации, при которых идеология становилась хуже, но работать с ней становилось удобнее. Денормализация БД возможна при использовании любой модели данных, конечно же. Как и нормализация. Большой интерес, кстати, представляет вопрос: что такое нормализация для иерархической модели данных. Хотя в mumps и не иерархическая модель данных, ответ на этот вопрос поможет многое прояснить (в том числе, для IMS, раз уж она здесь упоминалась). А вот аналогию применить сложно: что такое денормализация модели данных мне трудно сказать:) Блок А.Н. Ответьте, что за методика, какие методы. Если есть возможность привести кусок кода - покажите как делаются простейшие операции. Не один раз показывал. Обычные для КОМД функции ЯМД, похожие на команды mumps, типа $$ge(идентификатор объекта,идентификатор экземпляра,"d") - получить все характеритики экземпляра в локальный массив d. Аналогично для обновлений/удалений и объектов, и экземпляров объектов, и связей, и экземпляров связей, аналогично для навигации. Декларативный язык не актуален, хотя и возможен. Если Вам это интересно, можете реализовать:)И потом, это же не моя разработка. Существующая 18 лет. Хорошо документированная. А здесь я говорил только про то, что мне не нравится, так как противоречит формальной теории. Но Вас это мало интересует. Но не могу же я удовлетворить интересы всех и каждого:) Блок А.Н. А то создается впечатление, что вы пришли сюда просто всех потроллить. В этом случае мне жаль, что я участвую в этом разговоре. [quot Блок А.Н.] После идиота, шизофреника и т.п. мне совсем не сложно побыть троллем:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 10:31 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаSiemargl Просветим легко =) И где же "искусственное размазывание" и "простая звезда"??? Звезда в википедии и мой пример тоже звезда Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация Должность <- (1:M) --/ Избыточное размазывание в этом случае это - Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация Бредятина Siemargl В компьютере все биты и байты. Все остальное всего лишь один из способов сильно наморщить лоб, т.е сила абстракции )) А-а-а, значит РМД - это биты и байты? А КОМД - это "наморшить лоб"? Я так и знал:) Все биты и байты. Наморщили лоб слева (т.е.подумали) - получили РМД, наморщили справа - получили КОМД. Бредятина Siemargl Напишите на любом метаязыке представление объектов для этой структуры - может станет понятнее, куда медитировать. Хорошо, напишу на рефале, он мне больше всего нравится:) И буду медитировать. Siemargl А сделал и и написал не я, а вы - я лишь процитировал ваши структуры. Не поняв о чем речь:) Бывает.. На рефале нет смысла - он не объектный. Вопрос простой - как обсуждаемую структуру правильно на ваш взгляд описать в КОМД? А РМД оставим в покое - ей и так неплохо живется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 10:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Siemargl Звезда в википедии и мой пример тоже звезда Человек <- (1:М) -> Работа человека в организации <- (М:1) -> Организация Должность <- (1:M) --/ Избыточное размазывание в этом случае это - Человек - (1:М) -> Назначение <- (М:1) - Должность <- (М:1) - Организация Во-первых, в Вашем примере, не тринарная связь, а Назначение с многими характеристиками. Во-вторых, в Вашем примере нет возможности вести штатное расписание Организации, а если уж мы развили наше исходное приложение до назначений, то это объективно необходимо:) Так что никакого размазывания нет. Однако, эти Ваши неточности не имеют существенного значения, так как по бозовому вопросу Вы подтвердили своим примером основную мысль: дополнительное отношение не представляет никакую связь:) Siemargl Все биты и байты. Наморщили лоб слева (т.е.подумали) - получили РМД, наморщили справа - получили КОМД. А зачем тогда про биты и байты? Значит продолжаем про модели данных. Siemargl На рефале нет смысла - он не объектный. Вопрос простой - как обсуждаемую структуру правильно на ваш взгляд описать в КОМД? А РМД оставим в покое - ей и так неплохо живется. Мы никаких структур не обсуждали. Мы обсуждали вопрос о "настоящих" и "не настоящих" связях, и представлении "связей" в РМД. Которой очень плохо живется, так как ее даже не удалось никому реализовать:) Схему данных я Вам описал, тем не менее. При использовании РМД и "соответсвующих" СУБД это вообще не представляется возможным. Там содержательные метаданные приходится хранить в приложениях. В 21-м веке:) А Вы говорите неплохо живется. Очевидно, что Вы имеете в виду армию программистов, которым неплохо живется благодаря реляционной теории. То есть, Вы и в этом со мной соглашаетесь? Это хорошо:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 11:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ок, теперь немного понятно (возможно вы где-то и приводили примеры работы, но не здесь). Правда пока это не кажется удобным, тот же SQL делает это изящнее. Ту же фильтрацию результатов или выборку данных из нескольких взаимосвязанных сущностей проще сделать декларативно, чем процедурными методами. А вы, я так понимаю, используете процедурное программирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 17:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Ок, теперь немного понятно (возможно вы где-то и приводили примеры работы, но не здесь). Правда пока это не кажется удобным, тот же SQL делает это изящнее. Ту же фильтрацию результатов или выборку данных из нескольких взаимосвязанных сущностей проще сделать декларативно, чем процедурными методами. А вы, я так понимаю, используете процедурное программирование. Я предлагаю, как раз, НИЧЕГО НЕ ИСПОЛЬЗОВАТЬ. Пользователи используют объектный генератор отчетов (я это объяснял выше, см. сообщение о заключении договора, написания ТЗ и оплаты работ в случае использования РСУБД, и это факт:)). Что касается программирования каких-то функциональных задач (расчет реализации продукции, расчет заработной платы, расчет фактической себестоимости продукции и т.п., например), которые запускаются, опять же из объектного навигатора, или программирования триггеров, то, уверяю Вас, вреда от SQL намного больше, чем пользы. Я уже приводил статистику типов "запросов" в сложных OLTP системах - в большинстве из них нечего оптимизировать, и нет смысла в SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 21:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Правда пока это не кажется удобным, тот же SQL делает это изящнее. В моем сообщении, после которого Вы написали эту фразу, был конкретный маленький пример. Пожалуйста, поясните в чем заключается изящество, если вот этот мусор: SELECT * FROM значение переменной, в которой идентификатор объекта WHERE id=значение переменной, в которой ид. экземпляра нужно еще связать с переменными другого языка программирования?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 21:20 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Вы что-то противоестественное делаете, либо я вас не понял. в каше взять характиристики объекта будет так &sql(select field1,field2 into :val1,:val2 from table where id=:id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2010, 07:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Вы что-то противоестественное делаете, либо я вас не понял. в каше взять характиристики объекта будет так &sql(select field1,field2 into :val1,:val2 from table where id=:id) Что противоестественное?:) select я написал и Вы написали; from тоже; where тоже; а вот что за field1, field2, ... val1, val2? Вы не подумайте, конечно, что я не понимаю что это у Вас такое:) Но напишите, пожалуйста, то, что договаривались. Нужно взять все характеристики объекта. Кажется не принципиальным, но давайте будем точны:) Все-таки, покороче будет выражение, наверное. И после этого объясните, все-таки в чем изящество. И зачем запускается оптимизатор запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2010, 22:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Я не понял, что вам не понравилось в моем запросе. Вы этого не сказали, а я предсказывать мысли других не люблю. Еще ошибусь и буду спорить и доказывать то чего вы не думали. Такая потеха мне не нужна. Тем более запрос вы поняли, я не сомневаюсь. И даже не сомневаюсь, что вы знали о таких запросах до того, как я его написал. Но почему-то делаете по другому, а тут уже непонятно почему. Изящество в том, что можно взять запрос по нескольким таблицам/сущностям в одной формуле. Оптимизатор запроса запускается для выбора оптимальных индексов и в целом плана запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 05:47 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Я не понял, что вам не понравилось в моем запросе. Вы этого не сказали, а я предсказывать мысли других не люблю. Еще ошибусь и буду спорить и доказывать то чего вы не думали. Такая потеха мне не нужна. Тем более запрос вы поняли, я не сомневаюсь. И даже не сомневаюсь, что вы знали о таких запросах до того, как я его написал. Но почему-то делаете по другому, а тут уже непонятно почему. Очень типично для этого форума. Так долго просили конкретики, и, как только она появилась (причем довольно простая, первопопавшаяся:)), тут же отказались обсуждать по существу. Что значит читать мысли? Что же непонятного в функции получения ВСЕХ характеристик объекта ? Я должен интерпретировать таким образом, что на SQL в Cache это не реализуемо? Нужно написать сто (например) field и сто val? И десять-то неприятно писать и сверять порядок:) Блок А.Н. Изящество в том, что можно взять запрос по нескольким таблицам/сущностям в одной формуле. Оптимизатор запроса запускается для выбора оптимальных индексов и в целом плана запроса. Мы до этого дойдем (хотя про статистику "запросов" я, в том числе и Вам лично, уже писал). Когда рассмотрим один из более простых примеров, который мы сейчас обсуждаем. Что я должен уточнить, если Вам, действительно, не понятен пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 15:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Мне непонятен смысл получения всех характеристик. В одну корзину ложим рост, вес, состояние в браке, число детей, образование. В чем смысл? Это разные параметры, в чем необходимость их мешать в одну кучу переменных? Или у вас сотни атрибутов, которые являются однотипными (простите уж, вы так и не уточнили, так что придется додумывать то, что вы не сказали)? То есть у вас сто полей "рост в 1 год", "рост в два года", "рост в три года" Тогда это хреновое проектирование. Докажите конкретными примерами, зачем это нужно? Кстати, на каше это легко реализуется, но смысла этого я не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 16:14 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович, возможно получение всех характеристик одного объекта по его id, действительно неудобный пример для демонстрации возможностей SQL. Все таки он скорее для обработки множеств. И вот тогда Sum, Where и Order .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 16:51 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Или у вас сотни атрибутов ... В той реализации КОМД, на которую ссылается Андрей Леонидович, у объектов может быть очень много свойств (+ выбранной схемы хранения), но скорее из-за реализации наследования (или его отсутствия). Т.е, я видел пример, когда объект Материал (он же класс, он же таблица) содержит свойства всех Материалов (наследников) предметной области (более 400). В принципе у пользователя проблем нет, так как они легко разделяются по группам интерфейсом (закладками). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 17:03 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
На самом деле у каше SQL все прекрасно и в этом вопросе, и этот же пример реализуется очень красиво. Но есть два но: 1.Если сама такая постановка задачи является типичной, то возникает вопрос, а правильно ли проведено проектирование? Правильна ли архитектура системы? Оптимальна ли схема хранения в такой системе? 2. Андрей Леонидович очень легко, при малейшей зацепке переходит в атаку. При этом очень туманно обрисовывая свою позицию и свои методы (да, он на это ответит что сто раз уже говорил, но я не заметил). Мне хотелось бы развернуть ситуацию. А.Л. предлагает - мы это оцениваем и обсуждаем. По крайней мере мы уже сдвинулась от абстрактного обличительства к каким-то конкретным альтернативам. Пока эти альтернативы мне не кажутся хорошими. При тех многих слабостях SQL, его принципиальных ограничениях, а также при тех конкретных косяках SQL каше и в частности его оптимизатора - это пока что один из самых мощных языков оперирования данными, и у каше SQL есть свои фишки,которых нет в других языках. И совсем не зря SQL так распространен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 17:26 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Мне непонятен смысл получения всех характеристик. В одну корзину ложим рост, вес, состояние в браке, число детей, образование. В чем смысл? Это разные параметры, в чем необходимость их мешать в одну кучу переменных? :) Удивительно, учитывая последнее (правда мне опять придется его уточнить, чтобы не отклоняться от сути) предложение в этом Вашем сообщении. Я же ничего не говорил о росте и детях. Я привел пример ПЕРВОЙ ПОПАВШЕЙСЯ функции в КОСУБД, которая, конечно же, нередко используется. Если в объекте всего десять характеристик и все они могут быть нужны. Не нужно за меня ничего додумывать сутками:) Напишите этот несчастный код:) Блок А.Н. Тогда это хреновое проектирование. Докажите конкретными примерами, зачем это нужно? Кстати, на каше это легко реализуется, но смысла этого я не вижу. Ну в том, что проектирование хреновое, я даже не сомневался. Сделайте это легко, только не "на каше", а на SQL в Cache. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 22:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
doublefintАндрей Леонидович, возможно получение всех характеристик одного объекта по его id, действительно неудобный пример для демонстрации возможностей SQL. Все таки он скорее для обработки множеств. И вот тогда Sum, Where и Order .... Я уже много раз говорил о СТАТИСТИКЕ "ЗАПРОСОВ" в сложных системах. Можно ведь так и сказать: да это мы пишем НЕ НА SQL, и продолжить что-то еще обсуждать. Правильно? Но тогда сразу возникнет вопрос: а что это? "Огласите весь список, пожалуйста":) Получение всех, нескольких, одной характеристики экземпляра. Создание экземпляра. Обновление экземпляра. Получение всех экземпляров объекта B, связанных с конкретным экземпляром объекта A и их обработка. И др. Для всего это не нужен SQL. А это до 80%:) Вот когда с ними закончим, перейдем к оставшимся 20-ти:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 22:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.На самом деле у каше SQL все прекрасно и в этом вопросе, и этот же пример реализуется очень красиво. Так это же замечательно! Блок А.Н. Но есть два но: 1.Если сама такая постановка задачи является типичной, то возникает вопрос, а правильно ли проведено проектирование? Правильна ли архитектура системы? Оптимальна ли схема хранения в такой системе? Отличный вопрос! В РМД (на отношениях без связей между объектами) проектировать безошибочней, чем в КОМД (на объектах и связях)? Интересная идея давайте ее обсудим:) Но получать характеристики объекта (атрибуты отношения), и выполнять другие операции такого рода все равно ведь нужно... Блок А.Н. 2. Андрей Леонидович очень легко, при малейшей зацепке переходит в атаку. В какую атаку? При какой зацепке? Я сижу работаю, мне не до атак и выискивания зацепок. Блок А.Н. При этом очень туманно обрисовывая свою позицию и свои методы (да, он на это ответит что сто раз уже говорил, но я не заметил). Мне хотелось бы развернуть ситуацию. А.Л. предлагает - мы это оцениваем и обсуждаем. По крайней мере мы уже сдвинулась от абстрактного обличительства к каким-то конкретным альтернативам. Никуда мы не сдвинулись. КОМД реализована в соответсвующей СУБД давным давно. Чтобы сдвинуться, нужно не использовать характеристики типа "ссылка" (жесткое требование). А также не использовать характеристики связи. Вот о чем я говорил. При чем здесь программирование. Никакого значения не имеет программирование. Представляет, конечно, интерес разработка декларативного языка для КОМД. Но мне это не очень интересно. Если попросят, разработаю. Когда на пенсию уйду:) Блок А.Н. Пока эти альтернативы мне не кажутся хорошими. При тех многих слабостях SQL, его принципиальных ограничениях, а также при тех конкретных косяках SQL каше и в частности его оптимизатора - это пока что один из самых мощных языков оперирования данными, и у каше SQL есть свои фишки,которых нет в других языках. И совсем не зря SQL так распространен. Вы думаете, что не зря, а я думаю, что зря:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 22:37 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Чернышев Андрей ЛеонидовичЧтобы сдвинуться, нужно не использовать характеристики типа "ссылка" (жесткое требование). А также не использовать характеристики связи. Но в том же, уже упоминавшемся КОМД продукте, это можно делать уже сейчас. Вместо ссылки всегда использовать связь, а связь с характеристиками это просто скрытый (не выделенный разработчиком, то ли из лени, то ли по другим причинам) объект? Если честно, меня больше заинтересовал вопрос с наследованием. Например, для объекта "Продукт" или "Изделие" (скажем, система управления производством завода радиотехники), свойств будет намного больше чем 400. И связей... Триггера для такого объекта написать и поддерживать - задача не из приятных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 00:19 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
авторОтличный вопрос! В РМД (на отношениях без связей между объектами) проектировать безошибочней, чем в КОМД (на объектах и связях)? Интересная идея давайте ее обсудим:) Но получать характеристики объекта (атрибуты отношения), и выполнять другие операции такого рода все равно ведь нужно...У вас это, похоже, вопрос религиозный: пусть сложно, неудобно, трудоемко, провоцирует ошибки, но зато ПРАВИЛЬНО! А на мой взгляд правильно то что просто, удобно, гибко, быстро пишется и быстро выполняется, легко отлаживается, дает большие возможности (не зажато конкретным фреймворком) и другие плюшки. Так вот, с этой точки зрения, у вас все ОЧЕНЬ плохо. И вы не торопитесь доказывать, что это не так, предпочитая вместо этого доказывать, что у всех все плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 08:16 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., Ты чего бучу поднял? Каши переел, на сиквел захотелось? =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 10:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Так и не понял, каким образом модель, о которой шла речь, является "классической". Термина "КОМД" не нашел не только на sql.ru, но и в И-нете в целом. Если брать известные классы моделей: - ER. Это, правда, концептуальный уровень, но Бредятина как раз постулирует сближение концептуального и логического уровней. ER-модель богаче "КОМД", в частности, допустимы связи "многие ко многим и ко многим", а также связи могут иметь свойства. - ООБД, ODMG ~ хранимость объектов ОО-языков программирования. Тоже не то. Между прочим, в списке ООСУБД на первом месте значится Cache' (удачно имя придумали :) - ОРБД - объектные расширения РМД (пользовательские типы данных, наследование, etc) - тоже не то. Хотелось бы увидеть ссылочку на любые материалы по "КОМД", коль скоро ведутся работы по ее формализации и развитию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 16:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
doublefint Но в том же, уже упоминавшемся КОМД продукте, это можно делать уже сейчас. Вместо ссылки всегда использовать связь, а связь с характеристиками это просто скрытый (не выделенный разработчиком, то ли из лени, то ли по другим причинам) объект? Меня больше волнует чистота модели, чем реализация. Сочетание ссылок с характеристиками связи приводит к недоразумению - например, что такое ссылка среди характеристик связи:) Лени никакой не было. Начальный вариант модели предполагал (с определенным обоснованием) и ссылки, и характеристики связи. doublefint Если честно, меня больше заинтересовал вопрос с наследованием. Например, для объекта "Продукт" или "Изделие" (скажем, система управления производством завода радиотехники), свойств будет намного больше чем 400. И связей... Триггера для такого объекта написать и поддерживать - задача не из приятных. Я не считаю, что наследование продуманная идея. В КОМД, как и в РМД, нет наследования. И в иерархической модели, как ни странно, тоже нет. Эта идея ООП заимствована из биологии. Когда-то на форуме мы это обсуждали довольно подробно, насколько я помню. Все существующие реализации приводят к утрате гибкости. Но, раз это интересно, я, пожалуй, вернусь к этой проблематике, и подумаю можно ли идею "наследования" доработать и естественным образом интегрировать в КОМД. Сейчас вот пытаюсь убедить реализовать классификаторы, как тип характеристики (не случайно это повторил, так как определенная связь явно прослеживается:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 20:32 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.У вас это, похоже, вопрос религиозный: пусть сложно, неудобно, трудоемко, провоцирует ошибки, но зато ПРАВИЛЬНО! Оригинальный код на SQL, ничего не скажешь:) Но я примерно так себе это и представлял:) Блок А.Н. А на мой взгляд правильно то что просто, удобно, гибко, быстро пишется и быстро выполняется, легко отлаживается, дает большие возможности (не зажато конкретным фреймворком) и другие плюшки. Это, как я понимаю про сто field, и сто val с контролем правильности порядка с помощью органов зрения:) Я так и знал. Блок А.Н. Так вот, с этой точки зрения, у вас все ОЧЕНЬ плохо. И вы не торопитесь доказывать, что это не так, предпочитая вместо этого доказывать, что у всех все плохо. То я что-то у Вас рекламирую, то доказываю:) Мне этого ничего не нужно, так как Вы даже не представляете насколько у меня все хорошо:) И мне хорошо знакома природа Вашего нежелания обсуждать что-то по существу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 20:42 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаМеня больше волнует чистота модели, чем реализация Если у вас есть чудесный "чистый", "правильный" план дома, в котором после реализации невозможно будет жить - в топку таких "архитекторов". Модель не нужна ни для чего, кроме реализации, она должна помогать, защищать от ошибок, а не мешать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 20:48 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovТак и не понял, каким образом модель, о которой шла речь, является "классической". Термина "КОМД" не нашел не только на sql.ru, но и в И-нете в целом. А зачем мы отвлеклись от сути обсуждаемых вопросов? Да, я ввел этот термин. Нормальный термин, отражающий суть. Чтобы, с одной стороны, не путать с моделями, корни которых в ООП, а, с другой, проследить определенную связь с объекто-ориентированными сетевой и иерархической моделями (которые достаточно классические:)) Alexey Maslov Если брать известные классы моделей: - ER. Это, правда, концептуальный уровень, но Бредятина как раз постулирует сближение концептуального и логического уровней. ER-модель богаче "КОМД", в частности, допустимы связи "многие ко многим и ко многим", а также связи могут иметь свойства. Связи "многие ко многим и ко многим" - никакие не связи, а у связей в КОМД тоже есть характеристики ("свойство" - неудачный термин, так как это объективная особенность объекта, которая не может непосредственно наблюдаться). И я, как раз объясняю, что это не корректно. Alexey Maslov - ООБД, ODMG ~ хранимость объектов ОО-языков программирования. Тоже не то. Между прочим, в списке ООСУБД на первом месте значится Cache' (удачно имя придумали :) - ОРБД - объектные расширения РМД (пользовательские типы данных, наследование, etc) - тоже не то. Да, я и объяснял что ООП к теории БД никакого отношения не имеет. Alexey Maslov Хотелось бы увидеть ссылочку на любые материалы по "КОМД", коль скоро ведутся работы по ее формализации и развитию. Ссылочки мне неизвестны. А материалы свои при случае вышлю:) Кстати на медсофте говорил сотрудникам СП АРМ о планируемом большом проекте, визитку свою оставил... Так что где-то у Вас должны быть контакты:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 20:57 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Если у вас есть чудесный "чистый", "правильный" план дома, в котором после реализации невозможно будет жить - в топку таких "архитекторов". Модель не нужна ни для чего, кроме реализации, она должна помогать, защищать от ошибок, а не мешать. Значит план не чудесный и не правильный. Вы окончательно себя запутали:) Лучше бы код на SQL написали, который по Вашим словам, очень красиво получает характеристики экземпляра:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 21:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бред, назвав свою модель Классической, вы слукавили, а это форма лжи. Она не является классической, но любой, кто с вами не согласен - о ужас! он же спорит и опровергает саму Классику! Честнее ее назвать БОМД (Б - это ваш ник). Согласно вашей логике. Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> плохая модель данных. Резюмируя, Очень чистая и правильная модель данных -> плохая модель данных. В каше есть класс %ResultSet.SQL, которая любой SQL превращает в объект-курсор, причем поля этого объекта соответсвуют полям запроса. Но если вам хочется работать с переменными не по именам, а по номерам, то там и это есть. Заметьте, в запросе можно сделать сложную выборку из нескольких таблиц, а не ползать по объектам и атрибутам как вы, причем каше само учитывает индексы (оптимизация) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 06:21 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ой, опечатался во втором абзаце. Правильно: Согласно вашей логике. Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> неудобная и плохая реализация ->плохая модель данных. Резюмируя: очень чистая и правильная модель данных -> плохая модель данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 06:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Честнее ее назвать БОМД (Б - это ваш ник). Вернее, ЧОМД. Вы же не Ленин, чтобы псевдонимом называть ваши идеи ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 08:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Ссылочки мне неизвестны.Андрей Леонидович, Вы принципиально не хотите публиковать ваши материалы?А материалы свои при случае вышлю:)Отпишусь обязательно, как только будет немного времени. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 14:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov, вам А.Л. выслал что-то? Если да, сделайте доброе дело, перешлите на мое мыло (в профиле) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 15:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Нет, пока не выслал. Это я заранее спасибо сказал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 15:30 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаА материалы свои при случае вышлю:) Кстати на медсофте говорил сотрудникам СП АРМ о планируемом большом проекте, визитку свою оставил... Так что где-то у Вас должны быть контакты:)Может быть, поступим проще: моё мыло в профиле, с удовольствием получу от Вас материалы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 18:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Бред, назвав свою модель Классической, вы слукавили, а это форма лжи. Она не является классической, но любой, кто с вами не согласен - о ужас! он же спорит и опровергает саму Классику! Честнее ее назвать БОМД (Б - это ваш ник).Согласно вашей логике.Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> плохая модель данных. Резюмируя, Очень чистая и правильная модель данных -> плохая модель данных. В каше есть класс %ResultSet.SQL, которая любой SQL превращает в объект-курсор, причем поля этого объекта соответсвуют полям запроса. Но если вам хочется работать с переменными не по именам, а по номерам, то там и это есть.Заметьте, в запросе можно сделать сложную выборку из нескольких таблиц, а не ползать по объектам и атрибутам как вы, причем каше само учитывает индексы (оптимизация) :) в Cache и много других классов есть. Однако они не помогают Вам написать обещанный красивый код. Поэтому (!) я лжец. Очень логично:) Что же Вы так переживаете из-за простого непонимания чего-то нового для Вас, но при этом именно классического?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 18:58 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Ой, опечатался во втором абзаце. Правильно:Согласно вашей логике.Очень чистая и правильная модель данных ->(не интересует реализация, нет средств работы с данными в этой модели)-> неудобная и плохая реализация ->плохая модель данных. Резюмируя: очень чистая и правильная модель данных -> плохая модель данных. Это вы про реализацию "связей" в РМД? Как-то очень витиевато, не совсем понял Вашу мысль:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 19:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Блок А.Н.Честнее ее назвать БОМД (Б - это ваш ник).Вернее, ЧОМД. Вы же не Ленин, чтобы псевдонимом называть ваши идеи ;-) При чем здесь курсор??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 19:01 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovСсылочки мне неизвестны.Андрей Леонидович, Вы принципиально не хотите публиковать ваши материалы?А материалы свои при случае вышлю:)Отпишусь обязательно, как только будет немного времени. Спасибо. Не очень принципиально. Просто не интересно пока. Вам вышлю свод того, что здесь объяснял. С примерами и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 19:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovНет, пока не выслал. Это я заранее спасибо сказал :) А это и нельзя никому пересылать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 19:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovБредятинаА материалы свои при случае вышлю:) Кстати на медсофте говорил сотрудникам СП АРМ о планируемом большом проекте, визитку свою оставил... Так что где-то у Вас должны быть контакты:)Может быть, поступим проще: моё мыло в профиле, с удовольствием получу от Вас материалы :) Может быть. Пришлю что-нибудь, когда появится время. Наверное после софттула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 19:10 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
авторЭто вы про реализацию "связей" в РМД? Типа отшутились? Ну ладно. авторА это и нельзя никому пересылать) Вот. Такая Секретная МД. Зато Классическая. Вам показать, как в динамическом SQL взять поля запроса? Я могу, конечно, нарисовать пример. Классы %ResultSet.SQL или %Library.Resultset (немного различаются). Мне казалось, вы справитесь :-) Я ленивый, пример писать неохота, он и в документации есть. Тем более, конечно же, вы и так понимаете что я напишу. У вас заготовлен джокер в рукаве, чтобы то, что я напишу, обозвать неудобным и извращенным способом работы, ага? Мож сразу перейдем к этому этапу? ----------------------------------------------------------------------------------------------- Андрей Леонидович, вам не кажется, что без конкретики мы разводим Просто Треп в проффоруме? Если у вас есть оформленная теория, то опубликуйте на каком-нибудь ресурсе (бесплатном) в цельном виде. Причем не только голые модели, но и примеры работы. Обоснуйте, почему она лучше. Не в религиозном стиле, "связи не должны иметь атрибутов потому что они связи". А именно, как в дальнейшем нарушении "чистоты модели" отражается на практике. Что мы теряем и что получаем? Какую замену SQL вы предлагате и почему считаете его таким плохим? (пока получается, что у вас плохая МД, с которой не получается работать через SQL). Пока я только слышал от вас, что реализация вас не интересует. Но здесь форум практиков, нас в большинстве случаев интересует как раз результат. Обещаете? А то это можно продолжать вечно: вы будете как пророк обличать нас погрязших в неправильных моделях данных и запятнавших себя работой с SQL, я буду требовать у вас альтернативу, вы выворачиваться и подкалывать меня, я буду в ответ пытаться подколоть вас. Это можно продолжать вечно с нулевым результатом. Переходим на конструктивный разговор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 19:46 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
al-velievУв. Alexey Maslov, вот ответ от FNFIS: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Ребята а по какому адресу вы посылали им свои предложения? Я хочу свои предложения им то же послать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 20:35 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
misha_sharА ув. Е.Каратаев не будет против внедрить такую "фичу" в свой miniM в будущем? В MiniM время таймаутов в секундах, это единица измерения. А точность - миллисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 21:44 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Секретная МД. Зато Классическая. Я свой труд уважаю. Что в этом плохого. Могут ведь и реализовать. Но не полноценно. Вот РМД вообще не удалось реализовать. Мне такой путь не интересен:) Блок А.Н. Вам показать, как в динамическом SQL взять поля запроса? Я могу, конечно, нарисовать пример. Классы %ResultSet.SQL или %Library.Resultset (немного различаются). Мне казалось, вы справитесь :-) Я ленивый, пример писать неохота, он и в документации есть. Тем более, конечно же, вы и так понимаете что я напишу. У вас заготовлен джокер в рукаве, чтобы то, что я напишу, обозвать неудобным и извращенным способом работы, ага? Мож сразу перейдем к этому этапу? Нет. Меня интересует объективный результат. Если на SQL будет удобнее, короче, производительнее, я это несомненно признаю. Так что пишите извлечение характеристик экземпляра. Я понятия не имею как это будет написано. Помню только, что "очень красиво":) Блок А.Н. Андрей Леонидович, вам не кажется, что без конкретики мы разводим Просто Треп в проффоруме? Вы разводите, уже не первый день. Я исключительно конкретен. Блок А.Н. Если у вас есть оформленная теория, то опубликуйте на каком-нибудь ресурсе (бесплатном) в цельном виде. Причем не только голые модели, но и примеры работы. Обоснуйте, почему она лучше. Очень конкретно обосновываю. Лучше - это мягко говоря. Блок А.Н. Не в религиозном стиле, "связи не должны иметь атрибутов потому что они связи". У связей просто нет характеристик. Независимо от моего желания:) Вы просто не понимаете что такое связь. Это не объект. Связь нельзя представить отдельным отношением или отдельным классом. Но Вы не хотите обсуждать этот вопрос по существу. Вот Алексей Маслов начал обсуждать, но на выходные ушел подумать... И не вернулся (я имею в виду с этим вопросом). Блок А.Н. А именно, как в дальнейшем нарушении "чистоты модели" отражается на практике. Что мы теряем и что получаем? Какую замену SQL вы предлагате и почему считаете его таким плохим? (пока получается, что у вас плохая МД, с которой не получается работать через SQL). Пока я только слышал от вас, что реализация вас не интересует. Но здесь форум практиков, нас в большинстве случаев интересует как раз результат. Я очень конкретно все объясняю по каждому направлению. Но Вас конкретика совершенно не интересует:) Вас интересует только то, что "работает через SQL". Но написать простой код на SQL Вы не можете. Ничего себе - практики:) Блок А.Н. Обещаете? Конечно! Я не дам Вам увести разговор от получения характеристик экземпляра. Блок А.Н. Переходим на конструктивный разговор? А как же! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2010, 22:41 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
авторМогут ведь и реализовать. Ну вот, значит ваша СУБД еще не реализована. Мало того, вы БОИТЕСЬ, что ее кто-то реализаует А ведь это очень важный момент, причем в прошлый раз, когда я вас спросил про реализации, вы указали мне на X-Magic, и упомянули, что он не единственный. (Кстати, X-maqic не скачался) авторУ связей просто нет характеристик. Независимо от моего желания:) Угу. Бог един и он на небе. Независимо от того, понимаете вы это, дикари, или нет. Я совсем не против того, что связи не имеют характеристик. Я против вашей аргументации - она просто никакая. "Вы просто дураки" - это не аргументация. авторА как же! Ой, че-то даже не верится Нарисую, лень придумывать модель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 06:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Мы обсуждаем Новое Платье Короля ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 09:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Мне тяжело собирать истину по крупицам, и хотелось бы прочесть некий связный текст. Иначе возникает ощущение (возможно, ложное) внутренней противоречивости этих крупиц:Бредятина: 9637593Связи "многие ко многим и ко многим" - никакие не связи, а у связей в КОМД тоже есть характеристики Бредятина: 9645145У связей просто нет характеристик. Независимо от моего желания:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 11:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Имелось в виду, конечно, "взаимной противоречивости". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 11:08 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Ну вот, значит ваша СУБД еще не реализована. Мало того, вы БОИТЕСЬ, что ее кто-то реализаует Не СУБД, а КОМД. Не моя, и давно реализована (и Вы это знаете). Боюсь, что не корректно реализуют следующий релиз. Конечно! О причинах откровенной неправды, которую Вы постоянно пишите я напишу в конце:) Блок А.Н. А ведь это очень важный момент, причем в прошлый раз, когда я вас спросил про реализации, вы указали мне на X-Magic, и упомянули, что он не единственный. (Кстати, X-maqic не скачался). Так реализована или нет, вы уж разберитесь наконец:) И зачем Вы мне пишите про продукт, принадлежащий компании, в которой я не работаю? Не скачался и не скачался:) Блок А.Н. Угу. Бог един и он на небе. Независимо от того, понимаете вы это, дикари, или нет. Я совсем не против того, что связи не имеют характеристик. Я против вашей аргументации - она просто никакая. "Вы просто дураки" - это не аргументация. Совершенно очевидно, что это Ваша аргументация, а не моя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 17:25 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovМне тяжело собирать истину по крупицам, и хотелось бы прочесть некий связный текст. Иначе возникает ощущение (возможно, ложное) внутренней противоречивости этих крупиц:Бредятина: 9637593Связи "многие ко многим и ко многим" - никакие не связи, а у связей в КОМД тоже есть характеристики Бредятина: 9645145У связей просто нет характеристик. Независимо от моего желания:) Не честно, мне кажется. В текущей реализации КОМД у связей есть характеристики. Я говорю, что это не корректно. Объясняю. А Вы опять какие-то "противоречия" выискиваете:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 17:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Ой, че-то даже не верится Так вот о фундаментальной причине Вашего непонимания. Зачем поставлена цель соединить воедино концептуальный и логический уровень? Это же не самоцель. Это делается, среди прочего, для того, чтобы не программировать приложения. То есть, мы в разных мирах "живем". Вы в мире "программирования приложений", а я - в мире "не программирования приложений":) Вы уделяете первостепенное внимание программированию, языкам, парадигмам программирования, и добиваетесь от меня решения каких-то Ваших проблем связанных с "практикой программирования". И я совершенно искренне говорю, что меня Ваш мир не интересует:) А Вас, насколько я понимаю, мой мир не интересует, потому что он не коммерческий и в нем скучно:) Так что я не вижу никаких перспектив для взаимопонимания. Я не знаю что должно произойти, чтобы меня вдруг заитересовало программирование приложений:) Остается программирование, которое все еще необходимо, так как не все ОЦ и правила можно просто описать. Например, программирование триггеров. Мне не нужен декларативный (SQL-подобный) язык для программирования триггеров. И Вам, видимо, тоже:) Во всяком случае элементарный ("очень красивый") код Вы так и не смогли написать. А я сначала думал, что не захотели:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 17:39 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
В текущей реализации КОМД у связей есть характеристики. Я говорю, что это не корректноТогда уж как-то отличайте их, "реальную" и "идеальную" КОМД, а то по контексту не всегда понятно. Все больше убеждаюсь в бесполезности продолжения обсуждения без предварительного прочтения некоего связного текста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 18:00 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov Все больше убеждаюсь в бесполезности продолжения обсуждения без предварительного прочтения некоего связного текста. Вряд ли поможет:) Разве работы Кодда, Чена, Дейта не содержат некий связный текст? Однако, этого явно недостаточно, чтобы здесь их обсуждать. Здесь очень легко "не услышать", "не понять"... Вот коды здесь нормально обсуждать. А идеи не получается, как бы ясно они не формулировались:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 18:11 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Разве работы Кодда, Чена, Дейта не содержат некий связный текст?Еще бы! Но я (если помните) с Чена и начал, перечитав (по Вашей наводке) соответствующую главу у Дейта. Ходить по кругу, думаю, не стоит. По-видимому, я не достаточно продвинут, чтобы оценить Ваши "[нео]классические" идеи. Буду доучиваться по мере сил. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 18:28 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov Ходить по кругу, думаю, не стоит... Спасибо! И Вам спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 18:31 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Т.е. ваш мир не коммерческий? Почему? В нем невозможно создать нужные людям приложения? В нем приложения создаваться сами и программисты будут не нужны? (ха-ха!) Это экспериментальное программирование, не готовое к стадии промышленной эксплуатации? Принимаю любой вариант, либо давайте свой. Меня раздражает гадать, а вы информацию даете не по крупицам, а половине крупицы. А когда вас в этом упрекают - делаете круглые глаза. Кстати, то, что мы пришли к этому, уже хорошо. И, кстати, как-бы некрасиво клеймить коммерческое программирование, если у вас нет альтернативы. авторИ я совершенно искренне говорю, что меня Ваш мир не интересуетНе жульничайте, у нас все ходы записаны! авторА Вас, насколько я понимаю, мой мир не интересует Угу, вот из желания поперепираться вот тут уже две недели пытаюсь что-то добиться от вас. Пока добился только "У связей нет аттрибутов". Маловато как-то. На серьезную теорию не тянет. автор Вы так и не смогли написать Дался вам мой пример. Говорю же, банально лень. Тем более, я все равно никаких открытий не делаю, имею ввиду самый банальный пример. Вот кусочек модели, тут нет областей, квартир и т .д. Классы просто набросок, я не проверял, наверняка ошибки синтаксиса будут. Код: 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. Надеюсь, она не настолько "некоммерческая", что в ней этого сделать нельзя? Ну если ее не существует, то обрисуйте, как это будет выглядеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 19:15 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Т.е. ваш мир не коммерческий? Почему? Потому что я не коммерсант. Я стремлюсь получить объективный результат, а не коммерческий. Но я вовсе не спорю с американской формулой: 1 доллар тому, кто придумал, 10 долларов тому, кто сделал, 1000 долларов тому, кто продал. Блок А.Н. В нем невозможно создать нужные людям приложения? Не просто возможно, а он для этого и предназначен. Блок А.Н. В нем приложения создаваться сами и программисты будут не нужны? (ха-ха!) Не сами. Но программисты будут не нужны. Блок А.Н. Это экспериментальное программирование, не готовое к стадии промышленной эксплуатации? Давно эксплуатируется. Круглосуточно. И Вы это знаете. А чего это Вас так нервирует?:) Блок А.Н. Принимаю любой вариант, либо давайте свой. Меня раздражает гадать, а вы информацию даете не по крупицам, а половине крупицы. Не сочиняйте. Я всегда очень тщательно и развернуто отвечаю на все вопросы. А вот Вы, как только я пошел Вам на встречу в области "программирования", отказались написать код на SQL. Блок А.Н. А когда вас в этом упрекают - делаете круглые глаза. Меня не в чем упрекнуть, приходится говорить неправду. Мне искренне Вас жаль:) Блок А.Н. Кстати, то, что мы пришли к этому, уже хорошо. И, кстати, как-бы некрасиво клеймить коммерческое программирование, если у вас нет альтернативы. Опять неправда. Я стремлюсь к созданию приложений с минимальным программированием. И никакое "коммерческое программирование" никак не клеймю:) Я очень рад за Вас, что все так хорошо с "коммерческим программированием":) Блок А.Н. Не жульничайте, у нас все ходы записаны! Это Вы постоянно жульничаете. И мне ничего не нужно записывать. У меня все еще очень хорошая память:) Блок А.Н. Угу, вот из желания поперепираться вот тут уже две недели пытаюсь что-то добиться от вас. Пока добился только "У связей нет аттрибутов". Маловато как-то. На серьезную теорию не тянет. Опять неправда. Читайте мои сообщения до периода, когда выяснились (для Вас) непреодолимые проблемы в программировании на SQL. И Вы перешли на абсолютно беспредметный спор сам с собой:) Блок А.Н. Дался вам мой пример. Говорю же, банально лень. Тем более, я все равно никаких открытий не делаю, имею ввиду самый банальный пример. Опять неправда - это мой пример. Пожалуйста, напишите на SQL извлечение из БД всех характеристик экземпляра объекта. Блок А.Н. Вот кусочек модели, тут нет областей, квартир и т .д. Классы просто набросок, я не проверял, наверняка ошибки синтаксиса будут. ///задача получить адрес в виде город улица дом. Это в Вашем мире может быть такая задача:) Поскольку "адрес" - это стабильно требуемая "сущность", то это не задача, а просто вычисляемая характеристика объекта. Причем я бы ее добавил для всех подчиненных объектов, а не только для дома (сохраняя схему данных из Вашего примера). То есть, я бы и в объекте H Дом сделал бы характеристику 2 Адрес дома (тип 8), и в объекте S Улица сделал бы характеристику 2 Адрес улицы (тип 8). Впрочем, и в объекте T Город тоже, чтобы страну показать:) А формула для этих характеристик тривиальная: q функция извлечения значения характеристики [например, 2 Адрес улицы], внутри которой функция извлечения первого (и единственного, так как связь 1:1) экземпляра объекта Х [например, улицы], связанного с данным экземпляром объекта Y [например, дома]_функция извлечения значения характеристики [например, 1 Номер дома] И у Вас по русски только комментарии в программе для самого себя, а у меня готовое приложение:) Блок А.Н. Можно увидеть, как этот просто пример будет выглядеть в вашей субд? Надеюсь, она не настолько "некоммерческая", что в ней этого сделать нельзя? Ну если ее не существует, то обрисуйте, как это будет выглядеть? Ну Вы же сказали, что не можете скачать:) Это будет именно выглядеть. Для пользователя, а не для программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 23:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. ///Чистый объектный доступ ... w obj.Street.City.Name_" "_obj.Street.Name_" "_obj.Numer Это плохой код:) Нет идентификаторов связей. Они что интеллектуально выбираются Cache?:) Что будет написано, если между Городом и Улицей две связи с разной семантикой?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2010, 23:17 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Вы цепляетесь к каждому слову, и каждое слово передергиваете и перевираете. И именно это меня нервирует. Причем перевираете свои же слова, у вас серое становится или белым или черным в зависимости от того, как вам удобно. По примеру x-magic, то вы от нее полностью откзываетесь и говорите что не имеете к ней никакого отношения, то говорите, что она именно то, о чем вы говорите. Уж если вы в этом разбираетесь, то могли бы заметить, что у меня атрибуты, никаких связей. Так что все у меня корректно. А что на английском - так у меня русские языки программирования вызывают тошнотный приступ. Сильно уж уродливо выглядит русский в качестве языка программирования. Да, и я от вас устал, доказывайте сами себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2010, 06:56 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Да, и я от вас устал, доказывайте сами себе. Слова не мальчика, однако... Жаль лишь,что Вам понадобилось для этого 17(!) страниц ;) Я съехал тогда, когда, перезарегистрировав логин "Бред" увидел не замену "р" на "р" (я про раскладку), а банальное "Бредятина"... я провоцировал - а чел ответил скукотой... а ДОЛЖНО БЫТЬ ИНТЕРЕСНО И ВЕСЕЛО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2010, 15:14 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Вы цепляетесь к каждому слову, и каждое слово передергиваете и перевираете. И именно это меня нервирует. Причем перевираете свои же слова, у вас серое становится или белым или черным в зависимости от того, как вам удобно. По примеру x-magic, то вы от нее полностью откзываетесь и говорите что не имеете к ней никакого отношения, то говорите, что она именно то, о чем вы говорите. Уж если вы в этом разбираетесь, то могли бы заметить, что у меня атрибуты, никаких связей. Так что все у меня корректно. А что на английском - так у меня русские языки программирования вызывают тошнотный приступ. Сильно уж уродливо выглядит русский в качестве языка программирования. Да, и я от вас устал, доказывайте сами себе. Это нормально:) Что русский сильно уродливо выглядит при именовании объектов и характеристик:) Я и не сомневался, что приведенный Вами пример заведет Вас в тупик, как и "красивый код на SQL" завел чуть раньше. Всего хорошего! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2010, 17:05 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesov Слова не мальчика, однако... Жаль лишь,что Вам понадобилось для этого 17(!) страниц ;) Я съехал тогда, когда, перезарегистрировав логин "Бред" увидел не замену "р" на "р" (я про раскладку), а банальное "Бредятина"... я провоцировал - а чел ответил скукотой... а ДОЛЖНО БЫТЬ ИНТЕРЕСНО И ВЕСЕЛО!!! Бред появился как официальный ник. А когда я зарегистрировался под своим именем меня тут же заблокировали. Вы не провоцоровали, а вели себя просто по хамски:) Так как по существу Вам сказать нечего:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2010, 17:09 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Бредятина Вы не провоцоровали, а вели себя просто по хамски:) Так как по существу Вам сказать нечего:) В данном случае я скорее не хам, а дятел... в смысле санитар леса ;) Ваша "слава" впечатляет... У меня бабушка тоже все время искала, кому бы высказать... то у нее помидоры воруют, то в Чечне беспредел... И ее тоже все время "блокировали"... Вот и у Вас - КАМОП, или как там его... Слегка перефразируя... Если Вы такой умный, чего же не издаётесь? На 200-й, 300-й тысяче экземпляров, глядишь, и я бы заинтересовался ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2010, 17:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Для интересующихся моделями данных, в целом, и слиянием концептуального и логического уровней, в частности, полезно посмотреть работу Юрия Пергаменцева в этой области в среде "ОР"СУБД Oracle: http://citforum.ru/seminars/cbd2002/111.shtml http://citforum.ru/database/articles/udm/ Не достаточно формализованная модель. И в среде "ОР"СУБД (Oracle) существенно сложнее создавать такой инструмент, чем в среде mumps (Cache). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2010, 20:55 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
kolesov В данном случае я скорее не хам, а дятел... в смысле санитар леса ;) Не, банальный хам:) Так как нечего сказать по существу. Это современная такая "тенденция" - необъяснимое раздражение на непонятные идеи. Если мне что-то неопнятно, то значит дело во мне, стараюсь понять изо всех сил:) А не критиковать авторов непонятных идей:) kolesov Ваша "слава" впечатляет... У меня бабушка тоже все время искала, кому бы высказать... то у нее помидоры воруют, то в Чечне беспредел... И ее тоже все время "блокировали"... Вот и у Вас - КАМОП, или как там его... А вот это совсем странно. Пример с объектами "бабушка" и "помидоры" показывает что Вы недостаточно ясно представляете ключей в РМД. Теперь понятно, что у Вас есть определенное затруднение в понимании концепции связи. kolesov Слегка перефразируя... Если Вы такой умный, чего же не издаётесь? На 200-й, 300-й тысяче экземпляров, глядишь, и я бы заинтересовался ;) Нет, не заинтересовался бы. Поэтому и не издаюсь:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2010, 21:04 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Разработчикам для расширения кругозора может быть полезна эта неоднозначная статья, в комментариях к которой не вполне убедительно упоминается и Cache: http://citforum.ru/gazeta/153/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2010, 00:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Интересно использует ли кто-нибудь в 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 из примера КОМПЛЕКТОМ. Но отказались по разным причинам. Оставив, конечно, многозначность, но не связную (без комплектов). Для меня главной причиной был отказ от ссылок в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2010, 11:06 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
БредятинаПример представления накладной в 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2010, 15:12 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
ser_shu Интересно, как разберутся с накладной, если количество характеристик разное? 1 Номер накладной (1) 2 Дата отгрузки (1) 3 Товары (5) 4 Количества (8) 5 Цены (7) 6 Суммы (2) Оно не может быть разным В ДАННОМ ПРИМЕРЕ - ведь это просто количество экземпляров объекта B (Операции отгрузки), которые в "однозначных" моделях связаны с данным экземпляром объекта A (Накладная). Могут быть лишь пустые значения характеристик для каких-то экземпляров. Но вопрос, в целом, правильный. Предположим, что у нас есть еще один объект "Отгрузка партий", экземпляры которого связаны М:1 с "Операция отгрузки". В модели Pick уровни могут владываться (за счет еще одного разделителя). Но если мы попробуем это сделать в этом примере, то возникнет Ваш вопрос, так как количество отгруженных партий у каждого товара может быть разным. Насколько я помню (больше 20 лет назад изучал Pick) какое-то ограничение на количество уровней (разделителей), конечно, есть. Но это не выглядит так нелепо, как, например, ограничение на число характеристик при многоуровневой сортировке в некоторых программных продуктах. Или на число характеристик объекта:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2010, 20:23 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Pick это тоже самое, что Multivalue. Из одной кучи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2010, 21:18 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Pick это тоже самое, что Multivalue. Из одной кучи? Да. Просто Pick - это фамилия разработчика. http://theunityparty.org/company/history.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2010, 22:02 |
|
||
|
Что же главное в Cache?
|
|||
|---|---|---|---|
|
#18+
Джон Расин, комментарии к статье http://citforum.ru/gazeta/153/ Хотя для многозначных систем написано намного больше приложений, чем для любых других СУБД (некоторые из них существуют с 1960-х гг. и до сих пор используются), в большинстве этих систем поддерживаются старомодные пользовательские интерфейсы, и переделка этих интерфейсов стоит настолько дорого, что многие из этих систем потихоньку забрасываются. ... Для тех, кто не знаком с Pick/MultiValue. Эта категория систем является сегодня одной из наиболее распространенных в мире. ... На Pick базируются системы основных банков США.Как это (увы) до боли знакомо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2010, 11:56 |
|
||
|
|

start [/forum/topic.php?all=1&fid=39&tid=1557930]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
220ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 528ms |

| 0 / 0 |
