<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/multik/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя multik]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 09:43:35 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[БД. Справочники. Глобалы. Вложенные структуры. Живые примеры]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/179949/</guid>
      <link>https://habr.com/ru/articles/179949/?utm_campaign=179949&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<i>Картинка для привлечения внимания демонстрирующая пример предстоящей <b>«вложенности»</b> камеры с парашютом в ранец.</i><br/>
<img src="https://habrastorage.org/storage2/082/fe4/0ab/082fe40ab657d34379e7b41a99d9e78d.jpg" align="left"/><br/>
<a href="http://habrahabr.ru/company/intersystems/blog/175773/">Часть 1</a><br/>
<a href="http://habrahabr.ru/company/intersystems/blog/177319/">Часть 2</a><br/>
<a href="http://habrahabr.ru/post/178563/">Часть 3</a><br/>
<br/>
В прошлый раз мы остановились на том, что у нас есть метод <a href="http://habrahabr.ru/post/178563/#create"><b>create()</b></a>, который на основании глобала правил <a href="http://habrahabr.ru/post/178563/#ruleDic"><b>^RuleDictionary</b></a> создаёт элементы справочника. Нами был разобран пример создания элементов простейшего, одноуровневого справочника. Сегодня, рассмотрим каким образом, с помощью наших глобалов и методов, можно создавать вложенные структуры.<br/>
<br/>
В <a href="http://habrahabr.ru/post/178563/#allDictionary">коде программы</a>, были использованы <i>«прозрачные»</i> переменные <b>t</b> и <b>map</b>, которые явно не передаются в методы, но доступны внутри них. Мне подсказали, что это не самый лучший способ демонстрации работы, особенно учитывая то, что для большинства, синтаксис Caché Object Script — нов. Поэтому, перед тем как приступить к вложенным структурам, внесём некоторые изменения в программу.<hr/> <br/>
 <a href="https://habr.com/ru/articles/179949/?utm_campaign=179949&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 28 May 2013 13:45:44 GMT</pubDate>
      <dc:creator><![CDATA[multik]]></dc:creator>
      <category><![CDATA[NoSQL]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[БД]]></category><category><![CDATA[глобалы]]></category><category><![CDATA[MUMPS]]></category><category><![CDATA[СУБД Caché]]></category><category><![CDATA[справочники]]></category><category><![CDATA[структуры данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[БД. Справочники. Живые примеры на глобалах 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/178563/</guid>
      <link>https://habr.com/ru/articles/178563/?utm_campaign=178563&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/105/852/616/105852616928bc675597e11777b8aef8.jpg" align="right"/><br/>
<a href="http://habrahabr.ru/company/intersystems/blog/175773/">Часть 1</a><br/>
<a href="http://habrahabr.ru/company/intersystems/blog/177319/">Часть 2</a><br/>
<br/>
Слово <b>«Живые»</b>, в названии статьи, означает, что механизмы, код и данные, из этих статей, используются в рабочем проекте. <br/>
<br/>
Возможно, вам будет интересно посмотреть на некоторые варианты решений разработки БД (структур, механизмов). <br/>
<br/>
На картинке изображён кусок кода, описывающего <a href="http://habrahabr.ru/company/intersystems/blog/175773/#global">глобал</a> правил справочника.<br/>
<br/>
C<a href="http://habrahabr.ru/company/intersystems/blog/175773/#Retrieve">R</a>UD методы, в процессе своей работы, постоянно обращаются к этим правилам чтобы узнать, какие именно действия необходимо выполнить. <br/>
<br/>
Ранее, мы остановились на том, что у нас есть следующие глобалы:<br/>
<ul>
<li><a href="http://habrahabr.ru/company/intersystems/blog/175773/#Dictionary"><b>^Dictionary</b></a> — элементы <a href="http://habrahabr.ru/company/intersystems/blog/175773/#dic">справочников</a> и их свойства;</li>
<li><a href="http://habrahabr.ru/company/intersystems/blog/175773/#NameDictionaryElement"><b>^NameDictionaryElement</b></a> — названия элементов справочников на различных языках;</li>
<li><a href="http://habrahabr.ru/company/intersystems/blog/177319/#IndexDictionary"><b>^IndexDictionary</b></a> — основной <a href="http://habrahabr.ru/company/intersystems/blog/177319/#index">индекс</a> справочников;</li>
<li><a href="http://habrahabr.ru/company/intersystems/blog/177319/#RefsDictionary"><b>^RefsDictionary</b></a> — глобал обратных ссылок на индекс (его назначение будет описано далее).</li>
</ul><br/>
<div class="spoiler"><b class="spoiler_title">Посмотреть глобалы</b><div class="spoiler_text"><pre><code class="bash">^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;uid&quot;)=888
^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;uid&quot;)=888

^NameDictionaryElement(1,&quot;partUri&quot;,0)=&quot;akp&quot;
^NameDictionaryElement(1,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^NameDictionaryElement(1,&quot;ru&quot;,0)=&quot;АКП&quot;
^NameDictionaryElement(1,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^NameDictionaryElement(2,&quot;partUri&quot;,0)=&quot;meh&quot;
^NameDictionaryElement(2,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^NameDictionaryElement(2,&quot;ru&quot;,0)=&quot;МЕХ&quot;
^NameDictionaryElement(2,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;

^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;partUri&quot;,&quot;akp&quot;,1)=1
^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;partUri&quot;,&quot;meh&quot;,2)=1
^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;ru&quot;,&quot;акп&quot;,1)=1
^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;ru&quot;,&quot;мех&quot;,2)=1
^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;uid&quot;,888,1)=1
^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;uid&quot;,888,2)=1

^RefsDictionary(1,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;partUri&quot;&quot;,&quot;&quot;akp&quot;&quot;,1)&quot;)=1
^RefsDictionary(1,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;ru&quot;&quot;,&quot;&quot;акп&quot;&quot;,1)&quot;)=1
^RefsDictionary(1,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;uid&quot;&quot;,888,1)&quot;)=1
^RefsDictionary(2,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;partUri&quot;&quot;,&quot;&quot;meh&quot;&quot;,2)&quot;)=1
^RefsDictionary(2,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;ru&quot;&quot;,&quot;&quot;мех&quot;&quot;,2)&quot;)=1
^RefsDictionary(2,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;uid&quot;&quot;,888,2)&quot;)=1
</code></pre><br/>
</div></div><br/>
<div class="spoiler"><b class="spoiler_title">Создать глобалы Ctrl+С/V</b><div class="spoiler_text"><pre><code class="bash">set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;uid&quot;)=888
set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;uid&quot;)=888
set ^NameDictionaryElement(1,&quot;partUri&quot;,0)=&quot;akp&quot;
set ^NameDictionaryElement(1,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^NameDictionaryElement(1,&quot;ru&quot;,0)=&quot;АКП&quot;
set ^NameDictionaryElement(1,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^NameDictionaryElement(2,&quot;partUri&quot;,0)=&quot;meh&quot;
set ^NameDictionaryElement(2,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^NameDictionaryElement(2,&quot;ru&quot;,0)=&quot;МЕХ&quot;
set ^NameDictionaryElement(2,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;partUri&quot;,&quot;akp&quot;,1)=1
set ^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;partUri&quot;,&quot;meh&quot;,2)=1
set ^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;ru&quot;,&quot;акп&quot;,1)=1
set ^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;name&quot;,&quot;ru&quot;,&quot;мех&quot;,2)=1
set ^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;uid&quot;,888,1)=1
set ^IndexDictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,&quot;uid&quot;,888,2)=1
set ^RefsDictionary(1,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;partUri&quot;&quot;,&quot;&quot;akp&quot;&quot;,1)&quot;)=1
set ^RefsDictionary(1,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;ru&quot;&quot;,&quot;&quot;акп&quot;&quot;,1)&quot;)=1
set ^RefsDictionary(1,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;uid&quot;&quot;,888,1)&quot;)=1
set ^RefsDictionary(2,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;partUri&quot;&quot;,&quot;&quot;meh&quot;&quot;,2)&quot;)=1
set ^RefsDictionary(2,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;name&quot;&quot;,&quot;&quot;ru&quot;&quot;,&quot;&quot;мех&quot;&quot;,2)&quot;)=1
set ^RefsDictionary(2,&quot;^|&quot;&quot;MONTOLOGY&quot;&quot;|IndexDictionary(&quot;&quot;Vehicle&quot;&quot;,&quot;&quot;TransmissionType&quot;&quot;,&quot;&quot;uid&quot;&quot;,888,2)&quot;)=1
</code></pre><br/>
</div></div><br/>
 <a href="https://habr.com/ru/articles/178563/?utm_campaign=178563&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 06 May 2013 11:00:38 GMT</pubDate>
      <dc:creator><![CDATA[multik]]></dc:creator>
      <category><![CDATA[NoSQL]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[БД]]></category><category><![CDATA[глобалы]]></category><category><![CDATA[MUMPS]]></category><category><![CDATA[СУБД Caché]]></category><category><![CDATA[справочники]]></category><category><![CDATA[структуры данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[БД. Справочники. Примеры на MUMPS (Caché Object Script) 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/intersystems/articles/177319/</guid>
      <link>https://habr.com/ru/companies/intersystems/articles/177319/?utm_campaign=177319&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В прошлой <a href="http://habrahabr.ru/company/intersystems/blog/175773/">статье</a> мы рассмотрели пример справочника на MUMPS (Caché Object Script). Были разобраны структуры глобалов и метод retrieve. Мы научились простейшей операции — получению имени элемента по известному идентификатору. Рассматриваемые структуры были одноуровневыми. Опросы и комментарии, после статьи, показали, что тема в целом интересна. Сегодня рассмотрим примеры построения индексов для справочников. Все коды/идентификаторы/имена глобалов — настоящие. Основная идея данных статей — <i>обмен знаниями/опытом разработки и проектирования живых баз данных</i>. <br/>
<br/>
Вкратце напомню основные моменты <a href="http://habrahabr.ru/company/intersystems/blog/175773/">первой части</a>: <br/>
<ul>
<li><a href="http://habrahabr.ru/company/intersystems/blog/175773/#dic">cправочник</a> это медленно меняющаяся информация;</li>
<li>retrieve — быстрая операция;</li>
<li>название элемента справочника меняется в одном месте;</li>
<li><a href="http://habrahabr.ru/company/intersystems/blog/175773/#global">Глобал</a> имеет вид: <i>^ГлобальнаяПеременная(«индекс1»,«индекс2»,...,«индексN»)=«значение»</i></li>
</ul><br/>
По просьбе <a href="http://habrahabr.ru/users/4dmonster/" class="user_link">4dmonster</a> в примерах будут публиковаться полные версии команд. (<b>write</b> вместо <b>w</b> и т.д.)<br/>
<br/>
Освежим в памяти имеющиеся глобалы с данными:<br/>
<pre><code class="bash">^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;uid&quot;)=888
^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;uid&quot;)=888

^NameDictionaryElement(1,&quot;partUri&quot;,0)=&quot;akp&quot;
^NameDictionaryElement(1,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^NameDictionaryElement(1,&quot;ru&quot;,0)=&quot;АКП&quot;
^NameDictionaryElement(1,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^NameDictionaryElement(2,&quot;partUri&quot;,0)=&quot;meh&quot;
^NameDictionaryElement(2,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
^NameDictionaryElement(2,&quot;ru&quot;,0)=&quot;МЕХ&quot;
^NameDictionaryElement(2,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
</code></pre><br/>
Глобал <b>^Dictionary</b> — содержит все элементы справочников и их свойства, глобал <b>^NameDictionaryElement</b> — содержит названия элементов справочников на всех языках.<br/>
<br/>
<div class="spoiler"><b class="spoiler_title">Создать глобалы Ctrl+С/V</b><div class="spoiler_text">Команда <b>set</b> — задаёт значение переменной (локальной или глобальной).<br/>
<pre><code class="bash">set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,1,0,&quot;uid&quot;)=888
set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^Dictionary(&quot;Vehicle&quot;,&quot;TransmissionType&quot;,2,0,&quot;uid&quot;)=888
set ^NameDictionaryElement(1,&quot;partUri&quot;,0)=&quot;akp&quot;
set ^NameDictionaryElement(1,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^NameDictionaryElement(1,&quot;ru&quot;,0)=&quot;АКП&quot;
set ^NameDictionaryElement(1,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^NameDictionaryElement(2,&quot;partUri&quot;,0)=&quot;meh&quot;
set ^NameDictionaryElement(2,&quot;partUri&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
set ^NameDictionaryElement(2,&quot;ru&quot;,0)=&quot;МЕХ&quot;
set ^NameDictionaryElement(2,&quot;ru&quot;,0,&quot;UpdateTime&quot;)=&quot;62086,66625&quot;
</code></pre><br/>
</div></div><br/>
А теперь посмотрим как может быть устроен индекс справочника, и разберёмся для чего он нужен.<br/>
 <a href="https://habr.com/ru/articles/177319/?utm_campaign=177319&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 22 Apr 2013 06:55:56 GMT</pubDate>
      <dc:creator><![CDATA[multik (InterSystems)]]></dc:creator>
      <category><![CDATA[Блог компании InterSystems]]></category><category><![CDATA[NoSQL]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[БД]]></category><category><![CDATA[глобалы]]></category><category><![CDATA[MUMPS]]></category><category><![CDATA[СУБД Caché]]></category><category><![CDATA[справочники]]></category><category><![CDATA[структуры данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[БД. Справочники. Примеры на MUMPS (Caché Object Script)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/intersystems/articles/175773/</guid>
      <link>https://habr.com/ru/companies/intersystems/articles/175773/?utm_campaign=175773&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[На хабре часто можно встретить различные статьи о том как сделано то или то, с непосредственной реализацией, кодом, примерами, обоснованиями (пусть даже спорными). Кто-то выкладывает пример <a href="http://habrahabr.ru/post/175719/">контролла</a>, кто-то даёт практические советы <a href="http://habrahabr.ru/post/175283/">по яваскрипту</a>. Однако я не видел, чтобы кто-нибудь, рассказывал об организации структуры БД. Дальше каких-то школьных примеров это не заходит (если ошибаюсь поправьте и дайте ссылки). Нет, холивары SQL vs NoSQL меня не интересуют. По моему скромному убеждению — СУБД вторична в вопросах организации БД. Вопросы производительности конкретных СУБД становятся актуальными далеко не сразу. Какая бы ни была выбрана СУБД, под определённую задачу, к производительности предъявляется всего одно требование — <i>производительность должна быть достаточной</i>. А вот пути достижения этой самой достаточности, способы удобно и красиво разместить данные — чтобы быстро и легко их извлекать, организация справочников и индексов, ввода и вывода, способы масштабирования и/или изменения структуры БД в течении жизни, используемые методики, решённые и нерешённые проблемы, полезные рецепты и советы — это всё то, о чём я хочу поговорить.<br/>
<br/>
Разработка структур БД очень интересный и нетривиальный процесс. В этой обширной области встречается мало живых примеров, которые можно посмотреть, обсудить. Неужели вам, разработчики БД, всегда всё ясно что и как делать? Давайте делиться знаниями, давайте спрашивать, рассказывать, обсуждать, узнавать. Какая разница таблица или объект или глобал — важно какой смысл вкладывается, какие связи выстраиваются, какими средствами эти связи реализовываются. <br/>
<br/>
Пару дней назад был опубликован <a href="http://habrahabr.ru/post/175659/">перевод</a>, в котором мой подход, к программированию БД, называли экстремальным — я с этим не совсем согласен. В комментариях, было как минимум три человека (@Ogoun  <a href="http://habrahabr.ru/users/uaoleg/" class="user_link">uaoleg</a>  <a href="http://habrahabr.ru/users/4dmonster/" class="user_link">4dmonster</a>), которые сказали, что им было бы интересно посмотреть на живое использование MUMPS и узнать почему не надо бояться глобалов. Для этих людей и всех тех, кому интересно обсудить затронутые мной темы, я и пишу данную статью.<br/>
 <a href="https://habr.com/ru/articles/175773/?utm_campaign=175773&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 08 Apr 2013 08:17:57 GMT</pubDate>
      <dc:creator><![CDATA[multik (InterSystems)]]></dc:creator>
      <category><![CDATA[Блог компании InterSystems]]></category><category><![CDATA[NoSQL]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[БД]]></category><category><![CDATA[глобалы]]></category><category><![CDATA[MUMPS]]></category><category><![CDATA[СУБД Caché]]></category><category><![CDATA[справочники]]></category><category><![CDATA[структуры данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[СУБД Cache + Erlang]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/intersystems/articles/151443/</guid>
      <link>https://habr.com/ru/companies/intersystems/articles/151443/?utm_campaign=151443&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В этой статье я расскажу о том, как мы подружили <b>Cache + Erlang</b>, и зачем нам это нужно. СУБД Cache была выбрана в качестве хранилища данных. Также мы создали и эксплуатируем <b>MCA(Middleware for Cache Applications)</b> — промежуточное программное обеспечение, обеспечивающее конкурентную модель взаимодействия Erlang и Cache. <br/>
<br/>
Для взаимодействия Erlang и Intersystems Cache реализованы возможности:<br/>
<ul>
<li>Обрабатывать в Cache сообщения из Erlang, транслируя Erlang tuples (внутренний древовидный формат данных Erlang) в глобалы Cache.</li>
<li>Посылать из Cache сообщения процессам Erlang, транслируя глобалы Cache в Erlang tuples.</li>
</ul><br/>
<br/>
Разработанное MCA состоит из трёх основных компонент:<br/>
<ul>
<li><b>Message Dispatcher(MD)</b> — управляет обменом сообщениями в конкурентных условиях между различными <i><b>Erlang-node(EN)</b></i> и Cache-процессами, обеспечивает кэширование сообщений по определенным правилам. Запускается в соответствующем EN.</li>
<li><b>C-node</b> — обеспечивает подгрузку С/C++ библиотек и обмен сообщениями между ними, взаимодействие системы с shared-memory, EN, CallIn/CallOut (функциональностью, реализованной в Cache на языке С) и т.д. На данный момент к С-node, для веб-приложений, c использованием Cache, нами подключены библиотеки для поддержки XSLT преобразования, обработки регулярных выражений.</li>
<li><b>Porte</b> – шлюз обмена сообщениями (Messaging Gateway) c MD для Cache. Запускается как отдельный background job, который будем называть <i><b>Porte-job(PJ)</b></i>.</li>
</ul><br/>
 <a href="https://habr.com/ru/articles/151443/?utm_campaign=151443&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Как это работает?</a>]]></description>
      
      <pubDate>Sat, 15 Sep 2012 11:25:37 GMT</pubDate>
      <dc:creator><![CDATA[multik (InterSystems)]]></dc:creator>
      <category><![CDATA[Блог компании InterSystems]]></category><category><![CDATA[Erlang/OTP]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[субд]]></category><category><![CDATA[cache]]></category><category><![CDATA[erlang]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Норберт Винер — основатель кибернетики]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/86390/</guid>
      <link>https://habr.com/ru/articles/86390/?utm_campaign=86390&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Доброго времени суток, уважаемое хабрасообщество. Попробую рассказать о выдающемся человеке, учёном — одном из основателей кибернетики — <strong>науки об управлении в животном и машине.</strong> Исследования проводимые этим человеком и его научными товарищами — легли в основу современных it технологий. Ведь они, в том числе, принимали научно-обоснованное решение использовать двоичную систему исчисления при разработке цифровых машин. <br/>
 <a href="https://habr.com/ru/articles/86390/?utm_campaign=86390&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 04 Mar 2010 14:58:11 GMT</pubDate>
      <dc:creator><![CDATA[multik]]></dc:creator>
      <category><![CDATA[Научно-популярное]]></category>
      <category><![CDATA[Норберт Винер]]></category><category><![CDATA[кибернетика]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ещё один способ раскрасить ноутбук]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/83921/</guid>
      <link>https://habr.com/ru/articles/83921/?utm_campaign=83921&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Пару дней назад тут появилась и быстро пропала статья о методе раскраски ноутбука. Один мой знакомый — не айтишник — раскрашивает ноутбуки несколько интересней.<br/>
<br/>
Начинается всё приблизительно так:<br/>
<img src="https://habrastorage.org/getpro/habr/post_images/5ea/3f5/3ad/5ea3f53ad3ed0e44c4666bf6a93be733.jpg"/><br/>
 <a href="https://habr.com/ru/articles/83921/?utm_campaign=83921&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 11 Feb 2010 16:46:32 GMT</pubDate>
      <dc:creator><![CDATA[multik]]></dc:creator>
      <category><![CDATA[Я пиарюсь]]></category>
      <category><![CDATA[творчество]]></category><category><![CDATA[краски]]></category><category><![CDATA[ноутбук]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вариант отображения ценовой аналитики]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/81354/</guid>
      <link>https://habr.com/ru/articles/81354/?utm_campaign=81354&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[На многих ресурсах по продаже чего-либо пользователям предоставляется дополнительная информация и возможности сравнения похожего товара.<br/>
Это может быть сравнение характеристик мониторов в интернет-магазине, или показ похожих объектов недвижимости в данном городе и районе.<br/>
В любом случае, когда кто-то решает что-то продать/купить — перед ним всегда стоит вопрос — <b>а за какую цену?</b> Существует предположение, что ресурсы умеющие грамотно <b>подсказывать продавцам/покупателям цены на товар</b>, могут получить дополнительный интерес со стороны пользователей. <br/>
 <a href="https://habr.com/ru/articles/81354/?utm_campaign=81354&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 20 Jan 2010 16:57:01 GMT</pubDate>
      <dc:creator><![CDATA[multik]]></dc:creator>
      <category><![CDATA[Я пиарюсь]]></category>
      <category><![CDATA[анализ цен]]></category><category><![CDATA[автомобили]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Древовидные СУБД]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/59380/</guid>
      <link>https://habr.com/ru/articles/59380/?utm_campaign=59380&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Приглашаются к обсуждению все, имеющие опыт использования, в качестве хранилища данных, древовидных СУБД. Было бы полезно делится опытом разработки древовидных структур, описанием конкретики построения дерева индексов и алгоритмов полнотекстового поиска информации внутри хранилища данных.<br/>
<br/>
Поскольку любая компьютерная система с целью оптимизации обмена производит обмен между памятью и диском в виде блоков, то атомарным элементом, хранящим данные на диске, является блок. Ни для кого не секрет, что многие СУБД (тот же ORACLE и MSSQL) фактически хранят данные в Б-деревьях. Б-дерево – это набор логически связанных блоков, выстроенных в иерархию, на каждом уровне которой определены блоки, у каждого из которых одинаковое количество уровней потомков. Описание алгоритма работы Б-дерева выходит за рамки данного блога. <br/>
<br/>
Реляционный, объектный или прямой доступ обеспечивается логической моделью. Попробую предположить, что разумное использование логической модели данных, максимально приближенной к фактическому хранению – позволит более просто и быстро обрабатывать низкоуровневые данные, чем использование других логических моделей(SQL и пр.), хотя и существенно повышаются требования к уровню разработки механизмов доступа к данным. Возможно, что прямой доступ может быть представлен логическим деревом. Примером логического дерева данных – является <b>глобал</b> в СУБД Cache. <br/>
<br/>
<i>Приведу несколько примеров использования, из личного опыта, древовидных структур данных (глобалов).</i><br/>
 <a href="https://habr.com/ru/articles/59380/?utm_campaign=59380&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше</a>]]></description>
      
      <pubDate>Tue, 12 May 2009 09:26:53 GMT</pubDate>
      <dc:creator><![CDATA[multik]]></dc:creator>
      <category><![CDATA[Чулан]]></category>
      <category><![CDATA[древовидные структуры]]></category><category><![CDATA[дерево индексов]]></category><category><![CDATA[полнотекстовый поиск]]></category><category><![CDATA[хранилище данных]]></category><category><![CDATA[Б-деревья]]></category><category><![CDATA[рекурсия]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
