|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Ого. Извините, что не появлялся (выходные однако) :) sigmovА в чем печаль то? Не совсем понятно желание уйти от проверенной связки MySql+PHP+JS в велосипедные GT.M+(?) или Cache'+CSP(?)... Мы пишем не просто сайт и MySQL не подходит для нашей задачи. Как и любая реляционная база данных. Изучив весь спектр NoSQL я выбрал GT.M как бесплатное решение для нашей задачи, соответствующее всем требованиям (надежность данных, масштабируемость, доступность, кроме того применение его в финансовой сфере сыграло огромную роль). Cache отбросил изза платности. И да, нам нужны велосипедные GT.M. И да, GT.M используется в-основном как хранилище данных. И немного М рутин. БредятинаСвою СУБД разумно создавать так, чтобы она работала и в среде GT.M, и в базовой среде (условно, COS) Cache. Свою СУБД создавать не собираемся. Это безумство. Пока достаточно терминала как системы управления. Cache я вообще не рассматриваю. Я пока за разделение задачи на модули и в основном пишу на С++, поскольку знаю его лучше М. Сокеты, процессы, SSL, криптография и прочее. Хотя, конечно, можно написать подобное и на М, наверное :) Но я пока не рискну. М рутины выполняют задачи по работе с данными. И хватит ссориться :) Давайте по сущности :) Мне нужен примеры! Не с Cache, а с GT.M. Жаль не могу говорить суть нашей задачи. Но MySQL используется лишь потому что решение задачи (грубо говоря фронтенд и бекенд) ведется параллельно, а не последовательно. Фронтенд разрабатывался на связке MySQL+PHP. Для работы с GT.M разработали PHP Extension, который через шлюз отправляет запросы и получает ответы от бекенда, а бекенд обрабатывает эти запросы, выполняет М рутины, отправляет ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 13:54 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLeeя выбрал GT.M как бесплатное ... Cache отбросил изза платности Т.е. и тут ничего нового... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 13:56 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
sigmovНу собственно поэтому я и предлагаю дождаться ответа автора о причинах "плачевности".... А потом уже продолжить спор. Спор о кодах (сравнение кодов) ведите в другой теме, пожалуйста. sigmovОткуда же сие сведения? Это факт, а не сведения. При использовании СУБД приложение БД проектируется, а не программируется. А при использовании СХОД программируется. Каждый раз, одно и тоже. Или применяется архитектура "модель верхнего уровня+маппинг+РМД", причем с маппингом по всем трем аспектам. sigmovВот уж не знал что ядро MUMPS = COS.... Всегда полагал что разработка InterSystems это лишь надстройка над MUMPS. Вы много чего не знаете, что проявилось уже, и является очевидным)) Поэтому, вероятно, и додумываете что-то по своему. Например, применили знак равенства хотя суть заключается лишь в том, что IS не использует аббревиатуру MUMPS. Поэтому я написал в скобках, а Вы приписали знак равенства. Пожалуйста, откройте тему в разделе "Сравнение СУБД", если хотите что-то сравнивать. Это же очевидно, что так нужно сделать, если хотите сравнивать)) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 14:02 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLee, боюсь, не дождётесь вы здесь примеров, т.к. GT.M-щиков тут почти нет. Возможно, здесь что подскажут. Иногда заглядываю на этот форум, но кроме упоминаний бесплатной мед.системы VistA, других тиражируемых M-продуктов (кроме продуктов самой FIS) что-то не припомню. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 14:08 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
sigmovВот уж не знал что ядро MUMPS = COS.... Всегда полагал что разработка InterSystems это лишь надстройка над MUMPS.Вообще говоря, оба утверждения неверны. Каше использует идеи M, но не буквально и не только М. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 14:13 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLeeМы пишем не просто сайт и MySQL не подходит для нашей задачи. Как и любая реляционная база данных. Это не так. Советую прислушаться к тому, что пишет SergeyLee: "Но MySQL используется лишь потому что решение задачи (грубо говоря фронтенд и бекенд) ведется параллельно, а не последовательно. Фронтенд разрабатывался на связке MySQL+PHP." SergeyLeeИзучив весь спектр NoSQL я выбрал GT.M как бесплатное решение для нашей задачи, соответствующее всем требованиям (надежность данных, масштабируемость, доступность, кроме того применение его в финансовой сфере сыграло огромную роль). Cache отбросил из-за платности. Можно понять так, что Вы выбрали MUMPS, как технологию. Замечу, что никакую конкретную МД MUMPS не поддерживает. Вероятно, Вы предполагаете работать с БД без использования СУБД. SergeyLeeИ да, нам нужны велосипедные GT.M. И да, GT.M используется в-основном как хранилище данных. И немного М рутин. Теперь очевидно, что СУБД Вам не нужна. И Вы решаете некую частную, секретную задачу. И будете использовать частную БД на глобалах MUMPS c прямым доступом. То есть, нет МД, и соответственно нет ни структуры, ни ОЦ, ни ЯМД. SergeyLeeСвою СУБД создавать не собираемся. Это безумство. Пока достаточно терминала как системы управления. Безумство, скорее, Ваш подход - создание приложения БД без СУБД. Но для частной, секретной задачи - вполне нормально. SergeyLeeCache я вообще не рассматриваю. Я пока за разделение задачи на модули и в основном пишу на С++, поскольку знаю его лучше М. Сокеты, процессы, SSL, криптография и прочее. Хотя, конечно, можно написать подобное и на М, наверное :) Но я пока не рискну. М рутины выполняют задачи по работе с данными. Чем больше ЯП, тем хуже архитектура)) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 14:15 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Alexey MaslovSergeyLee, боюсь, не дождётесь вы здесь примеров, т.к. GT.M-щиков тут почти нет. Возможно, здесь что подскажут. Иногда заглядываю на этот форум, но кроме упоминаний бесплатной мед.системы VistA, других тиражируемых M-продуктов (кроме продуктов самой FIS) что-то не припомню. Непонятно, каких примеров. Например, вот какой путь проделало крупное приложение на X.Magic: MSM (DOS)->Cache(Unix)->GT.M(Linux). Но, автору темы нужны, вероятно, примеры web-приложений на GT.M. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 14:25 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
БредятинаAlexey MaslovSergeyLee, боюсь, не дождётесь вы здесь примеров, т.к. GT.M-щиков тут почти нет. Возможно, здесь что подскажут. Иногда заглядываю на этот форум, но кроме упоминаний бесплатной мед.системы VistA, других тиражируемых M-продуктов (кроме продуктов самой FIS) что-то не припомню. Непонятно, каких примеров. Например, вот какой путь проделало крупное приложение на X.Magic: MSM (DOS)->Cache(Unix)->GT.M(Linux). Но, автору темы нужны, вероятно, примеры web-приложений на GT.M. Нет. Любые примеры. Постараюсь по другому подойти к вопросу. Есть работающая система (пусть web-приложение), использующее широко известный язык запросов SQL (увы, этому в основном учат в ВУЗах, и их в основном использовали последние годы), и некую СУБД на SQL. Вся логика построена на INSERT/UPDATE/SELECT. Теперь же нужно "перевести рельсы" с SQL на MUMPS. При этом, конечно же не переписывать весь код работающей системы, а подменить вызовы INSERT/UPDATE/SELECT на операторы MUMPS. Но при переводе рельсов, приходиться использовать структуру реляционной БД, таблицы стали глобалами, и так далее. Раньше SQL БД (MySQL) находилась на том же хосте, что и PHP-приложение, теперь же архитектура такова, что БД (GT.M) и PHP-приложение разнесены по разным хостам (для безопасности). Теперь фронтенд (PHP-приложение, любое приложение) работает с бекендом (и БД GT.M) посредством запросов/ответов через TCP соединение. И для УНИВЕРСАЛЬНОСТИ этих запросов/ответов (API), мы используем структуру БД (таблицы, поля, параметры таблиц и полей) для проверки приходящих запросов. Вот тут и появились сомнения, что в целом мы неправильно используем идеи MUMPS, тем что ввели структуру БД. Но так как приложение написанное на PHP, уже необходимо вводить в продакшн в течении месяца, и конечно же все как всегда боссы давят на скорость разработки, то мы пока не можем продумать правильную архитектуру PHP-приложения работающего с GT.M базой данных БЕЗ структуры данных, и наш PHP-шник незнаком с MUMPS/GT.M в полной мере, и всю логику строит полагаясь на MySQL. Скорее нам нужно понимание построения модели данных для MUMPS/GT.M, чтобы постепенно отказаться от SQL-ориентированной структуры БД. Фух. Наверное все путано. Извиняюсь. Может вскоре посижу и нарисую диаграмму того что есть и того что хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 15:13 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
БредятинаAlexey MaslovSergeyLee, боюсь, не дождётесь вы здесь примеров, т.к. GT.M-щиков тут почти нет. Возможно, здесь что подскажут. Иногда заглядываю на этот форум, но кроме упоминаний бесплатной мед.системы VistA, других тиражируемых M-продуктов (кроме продуктов самой FIS) что-то не припомню. Непонятно, каких примеров. Например, вот какой путь проделало крупное приложение на X.Magic: MSM (DOS)->Cache(Unix)->GT.M(Linux). Но, автору темы нужны, вероятно, примеры web-приложений на GT.M. И что это за X.Magic? Ссылка есть на него? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 15:16 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLeeИ что это за X.Magic? Про него похоже только Бредятина и знает... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 15:19 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Раз уш пошел разговор про GT.M. - какие внешние интерфейсы он поддерживает? Терминальные подключения? Вебовские с какой-то связкой или своя разработка (как CSP)? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 15:21 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Если вернуться к исходной теме. Как спроектировать работоспособное приложение. Попробую высказать свое мнение. Я всегда считал MUMPS самой лучшей средой обработки данных(независимо от того является ли она СУБД). Потому всегда использую его для хранения и обработки данных независимо от масштаба задачи. Именно MUMPS а не его объектные и реляционные надстройки. Как только появляются дополнительные надстройки сразу же появляется связанная с ними куча проблем. А вот сам MUMPS ведет себя безукоризнено. С данными у меня все ясно но остаются не решенными 2 проблемы. На чем делать диалог пользователя и как связать эти 2 части. Диалог я делал на Delphi и по TCP каналу связывался с Данными. Потом попробовал Диалог делать на Java. Это конечно значительно лучше. Сразу появляется кроссплатформеннось и язык намного удобнее Delphi не говоря уже о С++. Но потом до меня дошло что каждый раз проектировать Клиентскую часть с 0 безсмыслено. Пустая трата времени. Тут видно 2 пути. 1 реализовали МХ-9. Они взяли в качестве клиентской части ExeL. 2 путь взять в качестве клиентской части браузер. Я остановился на 2м варианте. Хотя и первый в некоторых случаях больше подходит. 1-й вариант я не проробатывал поэтому остановлюсь на 2. Остается связать обе части в одно целое. Здесь масса вариантов. Я смотрел 2. Связь по сокетам и связь через Web сервер. В качестве Web сервера выбрал nginx. Там есть простой стандартный интерфейс называется как то так OSGI или что то в этом духе. В этом случае клиентская часть делается на Java Script возможно с использованием каких то библиотек (я брал jQuery) но тут вариантов масса. Обработка ведется на MUMPS. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 15:31 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
misha_shar, А что именно использовали из MUMPS, GT.M? И наверное писали работу с сокетами на М? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 15:41 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Я использовал Cache. Но это значение не имеет. На уровне стандартного MUMPSa они почти одинаковы. В MUMPS нет понятия сокет есть TCP соединение. Но это мало что меняет. В GTM TCP каналы есть точно и в Интернете я встречал готовый TCP сервер. По поводу твоей разработки. Месяц это не срок. Но можно постепенно попробовать. Я так понимаю что фронтенд это клиентская часть и она PHP. Ее пока оставь как есть. Там работы на не один месяц. Любая реляционная таблица отображается в Глобаль MUMPS. Вытащи данные из таблиц MySQL и перебрось их в Глобали. Затем TCP сервер подключи к клиентской части и запросы клиента записывай в глобаль и посмотри как их можно разобрать. Затем сделай обработку этих запросов. Только надо еще понять что должен получать PHP. Но этот протокол должен тебе достать программист PHP. Когда будешь знать на какой запрос что надо отвечать то садись и пиши программы обработки. Только не забывай про кодировки они на ендах могут быть разными. Может быть и другой путь вроде в GTM есть какое то SQL расширение. Ищи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:01 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
krvsaРаз уш пошел разговор про GT.M. - какие внешние интерфейсы он поддерживает? Терминальные подключения? Вебовские с какой-то связкой или своя разработка (как CSP)? Есть внутреннее что-то вроде GT.CM Client/Server, но я не понял зачем и как использовать это. Есть разработка от M/Gateway - MWire, TCP протокол. Это я использовал. Но все это медленно. Есть внутренняя возможность Call-Ins, которую я собственно и использовал для работы с GT.M на C++. Есть также реализации поддержки других языков - Java, Erlang, Node.js. Также есть от той же M/Gateway реализации m_php, m_python и некоторые другие. Но это подходит для непосредственного использования команд GT.M в PHP, Python. Плюс есть EWD (Enterprise Web Developer (EWD) is our advanced web application delvelopment technology and Ajax framework.). Но я это не изучал. Некогда :) Есть еще странно-загадочный PIP... Но там так и написано - только профи и только на свой страх и риск... Я пока не профи... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:02 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Т.е. в сравнении с Кащеем считай ничего и нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:12 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLeeТакже есть от той же M/Gateway реализации m_php, m_python и некоторые другие. Но это подходит для непосредственного использования команд GT.M в PHP, Python. Хотя может это и есть аналог Каше+CSP? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:13 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
В GTM PIP по моему утилита настройки. Ничего загадочного там нет. По GTM я плохой советчик. Я пробовал там разбираться. Мне в общем понравилось. Только структура построения файлов несколько необычна. Надо разбираться. Но когда действуешь по инструкции все железно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:17 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
misha_shar, мы уже сделали и TCP соединение между клиентской частью и серверной частью. и сделали-проработали протокол запросов-ответов. это все на C++. на стороне GT.M - вызовы М-рутин для работы с данными. сделали в итоге три типа запроса подобных SQL INSERT (add), UPDATE (edit), SELECT (find)... запросы-ответы в формате JSON. это как раз на этой недели и тестируем. отдельные запросы работают хорошо :) осталось протестить весь сайт, напичканный этими запросами :) хорошо то, что в PHP были отделены классы работы с моделями данных от контролеров и представлений (паттерн MVC). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:18 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
krvsaТ.е. в сравнении с Кащеем считай ничего и нет... Расширений CACHE там точно нет. Хотя я считаю что они и не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:19 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLeemisha_shar, мы уже сделали и TCP соединение между клиентской частью и серверной частью. и сделали-проработали протокол запросов-ответов. это все на C++. на стороне GT.M - вызовы М-рутин для работы с данными. сделали в итоге три типа запроса подобных SQL INSERT (add), UPDATE (edit), SELECT (find)... запросы-ответы в формате JSON. это как раз на этой недели и тестируем. отдельные запросы работают хорошо :) осталось протестить весь сайт, напичканный этими запросами :) хорошо то, что в PHP были отделены классы работы с моделями данных от контролеров и представлений (паттерн MVC). Абсолютно правильное поведение. Так какие еще проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:22 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
misha_sharАбсолютно правильное поведение. Так какие еще проблемы? Не проблемы, а сомнения :) 1. GT.M (Cache) по сути shemeless (безсхемные тобишь), а мы для правильности передачи полей в запросах для верности ввели проверку их согласно структуре данных. Тоесть если в таблице users есть поле user_name, а в запросе кто-то неправильно напишет имя поля - user_mame (например). В Cache кажется есть что то типа словаря? Я сделал глобал в котором сохранил структуру данных: таблица-поля, и в М рутинах провожу проверку полей. 2. Второе сомнение родилось в спорах, что круче (быстрее, правильнее, удобнее) - вызывать в С++ коде отдельные операторы М или сразу рутину М? При этом основа спора была такова - в М-рутину передаются параметры в виде строки с разделителем, затем строка парсится и параметры дальше участвуют в М рутине, и М рутина возвращает результат в таком же формате - строка с разделителями. На формирование/парсинг параметров и формирование/парсинг результата уходит много времени. И поэтому вместо вызова М рутины делать вызовы отдельных операторов в С++ коде, при этом параметры и результаты не нужно формировать/парсить (из/в JSON). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:45 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLee, Я все равно не понял, почему вы мечетесь? У вас есть работающее или почти работающее приложение на php+mysql, Почему вы хотите все поломать? Тем более, я так понял, у вас не хватает времени. Почему вы так против sql? В подавляющем большинстве случаев это отличный язык манипуляции данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:49 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
SergeyLee , И обязательно перепроверьте безопасность Вашего решения, чтобы не получилось как здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 16:54 |
|
Все разнообразие и примеры MUMPS "баз данных"
|
|||
---|---|---|---|
#18+
Блок А.Н.SergeyLee, Я все равно не понял, почему вы мечетесь? У вас есть работающее или почти работающее приложение на php+mysql, Почему вы хотите все поломать? Тем более, я так понял, у вас не хватает времени. Почему вы так против sql? В подавляющем большинстве случаев это отличный язык манипуляции данными. Не мечемся. Может не правильно выразился. Или неправильно поняли. Решение изначально было продумано для работы с GT.M. Но в силу того, что я с GT.M не был еще знаком, решили сделать макет приложения, используя php+mysql, чтобы показывать заказчику внешний вид. Поэтому мы не ломаем, а заменяем. Кроме того макет работал на одном хосте. А решение будет работать на двух хостах. И вообще то облачные хосты. И это не моя часть работы. Я не против SQL. Я в основном программист C++, с базами данных работал давно, конечно же SQL. Последнее время использовал SQLite для нужд standalone C++ приложений. Наш специалист по базам данных сказал, что MySQL плох в плане масштабируемости и надо искать решение в мире NoSQL. Я нашел GT.M, заодно и Cache. Что то не так? GT.M поддерживает репликацию, которая нам необходима. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 17:11 |
|
|
start [/forum/topic.php?fid=39&msg=38164918&tid=1557213]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
223ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 632ms |
0 / 0 |