18 нояб. 2019 г.

Embarcadero RAD Studio 10.3.3 Rio

Пираты опередили компанию Embarcadero и 16-го ноября 2019 года уже выложили Embarcadero RAD Studio 10.3.3 Rio Architect Version 26.0.36039.7899 и генератор лицензий для него.

15 нояб. 2019 г.

Embarcadero выпускает СУБД InterBase 2020

Основные новшества InterBase 2020:

1. Добавлена поддержка табличных пространств. Табличные пространства позволят хранить объекты базы данных в коллекции логических файлов на различных носителях. Совместное использование быстрых SSD и больших HDD обеспечит лучшую производительность и более сбалансированное и оптимизированное использование оборудования.

2. Встраиваемая версия InterBase (IBLite и IBToGo) теперь доступна под 64-битные версии Android и MacOS. Это позволяет разработчикам создавать на Delphi 64-х битные приложения с встраиваемой версий InterBase для Google Play Store и macOS App Store. Полный список поддерживаемых IBLite и IBToGo платформ теперь включает: Windows, macOS, Linux, Android и iOS. InterBase 2020 Server Edition поддерживает пока только Windows, поддержка macOS и Linux будет добавлена позже.

3. Улучшенный Performance Monitoring позволяет получать текущую статистику о использовании индексов в базе данных и насколько они активны для различных запросов (оптимизация, сортировка по условию и т. д.).

4. Data Dictionary DDL. Новый синтаксис ALTER DESCRIPTION позволяет описать любой объект базы данных (например, таблицу, индекс, хранимую процедуру, генератор и т. Д.) для документирования схемы базы данных.

5. SQL-оптимизатор теперь может преобразовывать комбинацию оператора неравенства (<, <=, !=, <>, >, >=) и оператора NOT в их противоположное представление. Это повышает производительность за счет использования индекса. Например, условие "NOT A > 0" будет преобразовано в "A <= 0".

6. Улучшена безопасность за счет использования на всех платформах OpenSSL версии 1.0.2.

7. В IBConsole for Windows добавлена поддержка новых функций InterBase 2020: модификацию табличных пространств, словарь данных, расширенную поддержку недавно запатентованной технологии Change Views. А 64-битная версия IBConsole позволяет теперь в окне запроса получать большие наборы данных.

Подробнее: What's new in InterBase 2020.
Скачать InterBase 2020 (v14.0.0.97): Server Edition под Windows и ToGo Edition под Windows, Linux, macOS, iOS и Android.

12 нояб. 2019 г.

SQL доступ к Elasticsearch


    Что делать, если вы хотите использовать SQL-запросы к Elasticsearch, но не купили X-Pack и у вас нет доступа к Elasticsearch SQL?

Вариант первый: смириться и продолжить писать REST-запросы

Вариант второй: использовать специальную библиотеку для SQL-доступа к Elasticsearch. Например, CData Elasticsearch Driver. Она существует в множестве вариантов и позволяет получить доступ к данным в Elasticsearch из любых средств разработки и программ (FireDAC Components, ADO.NET Provider, ODBC Driver, JDBC Driver, Power BI Connectors, BizTalk Adapter, PowerShell Cmdlets, Excel Add-In, Anypoint Connectors, SSIS Component).

Рассмотрим использование CData FireDAC Components for Elasticsearch в Delphi.

8 нояб. 2019 г.

Формирование строкового значения для JSON

    При формировании строки для строкового значения JSON возникает необходимость контролировать некоторые символы. Например, если в содержимом строки есть двойная кавычка, то для получения строки JSON недостаточно взять исходную строку в двойные кавычки. Это двойную кавычку необходимо "экранировать" - поставить перед ней символ обратной косой черты ("\"). Кроме двойной кавычки обязательно необходимо экранировать саму обратную косую черту, а также все управляющие символы от U+0000 до U+001F (т.е. символы от 0 до 31).
    Рассмотрим подробнее, как экранируются символы. Любой символ от U+0000 до U+FFFF (не только управляющий) в строке JSON может быть представлен в виде последовательности из шести символов: обратный косая черта, строчная буква u, код символа в виде четырех шестнадцатеричные цифр. Буквы в шестнадцатеричные цифрах не зависят от регистра и могут быть как прописными, так и строчными. Например, буква "ё" представляется как "\u0451", а буква "к" как "\u043A".

5 нояб. 2019 г.

Elasticsearch. Замена знализатора по умолчанию

    Зачастую при работе с Elasticsearch для полей необходимо указать не стандартный анализатор. Например, если нам нужен анализатор для конкретного языка или необходимо специфическая обработка текста (например, исключить определенные слова, задать список синонимов, или как я уже писал – приравнять Ё к Е...).
    Задать полю не стандартный анализатор можно сделать при маппировании полей индекса:
PUT http://localhost:9200/test/_mappings
{
  "properties": {
    "id": { "type": "long" },
    "num": { "type": "text" },
    "name": {
      "type": "text",
      "analyzer": "new_ analyzer"
    }
  }
}
В этом примере, поле "num" будет обрабатыватсья стандартным анализатором, а поле "name" будет обрабатыватсья нашим собственным анализатором "new_ analyzer".
    А, что делать, если этот не стандартный анализатор нужно задать полям, которые маппируются динамически, а темплейт делать лень? Или для всех полей индекса?