• Релиз СУБД InterSystems Caché 2016.2
    0
    Позволю себе вступиться за Caché.

    1) В Atelier есть ошибки и ещё много, что нужно доделывать (https://community.intersystems.com/post/atelier-10-release). Всё равно это шаг в правильном направлении, потому что база для Atelier — Eclipse — открытая, расширяемая, мультиплатформенная IDE, для которой уже существует множество плагинов, которые теперь можно использовать и для работы с Caché ObjectScript.

    2) Этот пункт я не очень понял. Caché поставляется с собственным веб-сервером — урезанной сборкой Apache. Как CSP Gateway мешает использовать уникальные возможности Caché ObjectScript — непонятно.

    3) SQL в Caché не «вместо», а «вместе с» объектной моделью. Идеология в том, чтобы использовать тот взгляд на данные, который удобней в данном конкретном случае. Если быстродействия SQL и объектов не хватает всегда можно использовать прямой доступ к глобалам.

    Возможность использовать Caché как низкоуровневую и быструю иерархическую СУБД никуда не делась.
  • Как мы NoSQL в «реляционку» реплицировали
    +3
    NoSQL изначально означало «No SQL». Это уже потом появились альтернативные расшифровки, вроде «Not only SQL», «No! SQL» и так далее.

    Вот, например, Мартин Фаулер в 2012 году предлагает расшифровку «Not only SQL», сравнивая с давно устоявшейся «No SQL».
    http://martinfowler.com/bliki/NosqlDefinition.html.

    Там же Фаулер приводит общие характеристики таких NoSQL СУБД:
    1. Not using the relational model (nor the SQL language)
    2. Open source
    3. Designed to run on large clusters
    4. Based on the needs of 21st century web properties
    5. No schema, allowing fields to be added to any record without controls


    Как минимум 1,2 и 5 условиям GT.M удовлетворяет. Так что, по-моему, вполне корректно называть GT.M NoSQL СУБД.

    Фаулер, конечно, не истина в последней инстанции.
  • Таблицы сортировки в СУБД Caché
    +2
    интересное имя у базы данных на скриншоте :-)
  • Таблицы сортировки в СУБД Caché
    0
    Я это мнение понимаю, но как сторонник буквы Ё не соглашаюсь.
    http://yomaker.ru/pismoMONRF.htm
  • Установка приложений в Caché с использованием проекций
    +3
    /me ушёл писать модуль leftpad для Caché ObjectScript
  • Собственные типы индексов в СУБД Caché
    0
    Ну мне кажется, что тут интересней исходники смотреть, как это сделано. А демо можно достаточно просто запустить на своём компьютере — в статье описано как.
  • Смартфон Zuk Z1. Тот ещё ZUK
    +1
    На Яндекс.Маркете: market.yandex.ru/product/12840987
  • Смартфон Zuk Z1. Тот ещё ZUK
    +3
    Спасибо. Выглядит здорово, но 40 тысяч рублей это почти рядом с айфоном.
  • Смартфон Zuk Z1. Тот ещё ZUK
    +14
    Да что ж все такие лопаты делают! Где нормальные современные смартфоны размером 4.5 дюйма?
  • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1
    0
    Позволю себе ответить, хоть вы и не мне написали. inetstar, если захочет, тоже, наверное, ответит.

    1) В статье реклама явная. Как может быть _скрытая_ реклама в блоге компании InterSystems. Конечно явная.

    2) Как мы можем изображать просто прохожих, если у нас в профилях написано «работаю в InterSystems». (см также)

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

    4) Вы ни в коем случае верить не должны! Должны убедиться сами.
  • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1
    +1
    Именно!
    На всякий случай помещу тут ссылку — en.wikipedia.org/wiki/No_Silver_Bullet.
  • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1
    +1
    Мы с morisson работаем в InterSystems. inetstar не работает. Пометка в профиле «работает в» нужна, чтобы опубликовать статью в блоге компании.

    Если вы не согласны с моим комментарием, давайте обсудим. В чём в нём реклама я не понимаю.

    Глобалы и NoSQL действительно не нужно путать.
  • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1
    0
    Спасибо, что объяснили. Я с вами согласен.
  • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1
    +2
    А что именно вам понятно?

    А то это выглядит как обвинение, но совершенно не ясно в чём.
  • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1
    +6
    Вводных статей про глобалы было уже несколько.
    Эту выделяют отличные рисунки. Тот, на котором изображено дерево из одних груш, — мастерский, как раз из-за аналогии.
  • А вы уже поменяли $Increment на $Sequence?
    +1
    Нужно смотреть в каждом конкретном случае, какой будет процент дырок. Это зависит от того, как данные загружаются.

    В примере из статьи, после выполнения загрузки, значение ^Person = 2007040.

    То есть, узлы 2'000'001 — 2'007'040 значений не имеют, и следующий узел будет вставлен в 2'007'041

    7'040 / 2'000'000 = 0,00352 = 0.352%

    С другой стороны, если сохранение каждого объекта влечёт обновление многих индексов, то, возможно, $Increment не узкое место, и заменять его смысла нет.
  • А вы уже поменяли $Increment на $Sequence?
    +3
    Я могу в начале статьи вставить дисклаймер, что статья частная позиция автора и ни в коей мере не позиция фирмы и так далее и тому подобное. Я хотел рассказать о новой интересной функции. Это вполне удалось. Что с ней делать или не делать — решать вам, как разработчику.

    «не формулируя чётко критерии, когда это возможно»
    Достаточно чётко, что делает функция $Sequence описано в документации.

    Можно ли в ваших сценариях использования менять $Increment на $Sequence решать вам. Правильно, что вас настораживает. Нельзя автоматом менять А на Б в сотне тысяч строк кода.
  • А вы уже поменяли $Increment на $Sequence?
    +3
    Я последовал своему совету и почитал-таки документацию про $Sequence. Можно эту функцию использовать с локальными переменным.
  • А вы уже поменяли $Increment на $Sequence?
    +3
    Ведь функция $Increment должна увеличить значение ^a на 1

    Равенство id == ^a гарантируется только в момент присваивания, не так ли? Нигде не обещается, что уже в следующую секунду не налетят «100500 процессов» и не увеличат ^a ещё на 100500.


    Я имел в виду, что спецификация $Increment(^a) — это увеличить значение глобала ^a ровно на 1. У $Sequence такого ограничения нет.

    В общем случае, одноаргументный $Increment нельзя заменить на $Sequence? Радикальный пример:
     for i=1:1:20 {
         set a = $Increment(^a)
         write "^a=",^a,!
         if i#10=0 {
             kill ^a
         }
     }
    


    В некоторых популярных случаях одноаргументный $Increment можно заменить на $Sequence. В общем случае — нет.

    Если вы используете $Increment исключительно для генерации Id, как в примере статьи, то я не знаю причин, чтобы не заменить его на $Sequence (что, конечно же, не значит, что их нет).
  • А вы уже поменяли $Increment на $Sequence?
    +2
    Пожалуйста, Алексей. Всё равно не очень понятно.

    Пусть в программе написано
    set id = $Increment(^a)

    За счёт чего здесь может происходить кеширование? Ведь функция $Increment должна увеличить значение ^a на 1.

    Работать с локальными переменными функции $Sequence, по-моему мнению нет никакой необходимости (как и функции $Increment), ведь внутри одного процесса конкурентного доступа нет, и set a = $Increment(a) это то же самое, что и set a = $Get(a) + 1.

    Разброс Id можно, конечно, сделать и без $Sequence. В данном случае это побочный эффект.
  • А вы уже поменяли $Increment на $Sequence?
    +1
    Я тоже не разработчик. И тоже постараюсь ответить.

    У функции $Increment есть определённая спецификация (контракт), которую она выполняет. Написано много когда, который на эту спецификацию расчитывает. $Sequence работает быстрее, за счёт нарушения этой спецификация. Даже не так — это вообще другая функция, с другой спецификацией (кеширование, шаг только в 1 и только вверх и т.д), которая может быть использована для той же цели, что и $Increment.

    $Increment и так улучшается, но без нарушения совместимости.
  • А вы уже поменяли $Increment на $Sequence?
    +1
    Ну извините, если обидел. Не хотел ничего такого.

    Вы, конечно, никуда лезть не должны.

    Я постарался взять минимум из справки по $Sequence — зачем делать перевод на русский язык (почти наверняка корявый), того что просто, понятно, с примерами и не слишком длинно написано по-английски.
  • А вы уже поменяли $Increment на $Sequence?
    +2
    Чтоб документацию читали :-)
    Численное переполнение, если начать с 1 никому не грозит.
  • Юнит-тесты в Caché – это просто
    +1
    Если вас это устраивает, то ok.
    А если нет — то ещё рекламирую отличную книжку «Growing object-oriented software guided by tests», в которой отлично описана философия юнит-тестов и TDD.
  • Юнит-тесты в Caché – это просто
    +1
    Можно включить аутентификацию на уровне ОС (http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_secmgmt#GCAS_secmgmt_autheopts) и запускать программы из командной строки Windows:
    ccontrol cterminal CACHE ^^test
    (http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GSA_using_instance#GSA_B150513)

    В программе ^test может быть всё что угодно, в том числе запуск тестов
  • Юнит-тесты в Caché – это просто
    +3
    Везёт вам.
  • Релиз GlobalsDB 2012.2
    0
    Я вот сейчас попробовал (тоже Хромом). Версия для Windows качается с сайта globalsdb.org/downloads
  • InterSystems Caché и технологии NoSQL
    0
    Не знаю. Но ведь это легко проверить.
  • InterSystems Caché и технологии NoSQL
  • Платье, которое разделило интернет
    +1
    Майк Науменко рассказывал, что БГ написал песню золото на голубом, когда один их знакомый купил золотые брюки.
  • Баг не воспроизводится… Что делать?!
    +22
    А вы можете хотя бы тезисы выступления выложить? А то одно дело просмотреть статью за пять-десять минут, а другое смотреть 45-минутное видео.
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +1
    Для реляционных СУБД единственный способ хранения информации — таблицы. Столбцы этих таблиц могут быть разных типов, в том числе сложных (XML, JSON), но таблица должна быть. Внутри эти таблицы могут представляться как угодно, но сама СУБД программистов баз данных на уровень ниже таблиц не пускает.

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

    Caché хороша в том числе многомодельностью. Если в таблицы что-то ложится плохо, можно использовать другие модели данных — объектную или иерархическую (глобалы). И рассматривать одни и те же данные с разных точек зрения. Или создать на основе глобалов свою модель, если нужно.

    «замкнутый мирок», «вылез», «затроллили». Отчего такая неприязнь?
  • Прямой доступ к классам Caché через REST, на примере DHTMLX Grid
    +3
    Раньше на Хабре, чтобы опубликовать статью в блоге компании, нужно было числиться сотрудником этой компании, поэтому у всех авторов блога InterSystems стоит галочка «работаю в InterSystems», хотя не все они в InterSystems работают.

    JSON из Caché пишется достаточно просто. Например:
    write ##class(%ZEN.Auxiliary.jsonSQLProvider).%WriteJSONFromSQL("json", "SELECT * FROM Sample.Person")
  • Интервью с преподавателями Coursera
    +1
    Alex Aiken — Compilers. Отличный курс. Достаточно сложный.
    https://www.coursera.org/instructor/~28
    Robert Sedgewick — Algorithms
    https://www.coursera.org/instructor/~211
  • Интервью с преподавателями Coursera
    0
    Спасибо, очень интересные интервью. Особенно с Берзоном.
  • Настройка Apache для работы с СУБД Caché на Linux
    0
    А зачем APACHE_RUN_USER и APACHE_RUN_GROUP устанавливать в cacheusr?
  • В ГД одобрен проект закона о блокировке сайтов с любым пиратским контентом
    +10
    ноги
  • Генпрокуратура РФ провела заседание экспертной группы по вопросам Bitcoin
    +3
    «Когда Родина собирается с чем-то бороться, что она делает? Выпускает закон «О регулировании...». »
    avn475.livejournal.com/120324.html
    Интересный пост про запрет ЦБ биткоинов.
  • Комментарий из публикации, перенесённой в черновики.
  • Борьба с тридцатилетним багом
    +9
    Глянул сейчас. LibreOffice 3.5.7.2
    За 28-м февраля 1900-го идёт 1-е марта 1900-го