Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск LIKE по тексту биржевых сообщений FIX-протокола. / 14 сообщений из 14, страница 1 из 1
07.07.2018, 14:52
    #39671016
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
Добрый день коллеги.

Имеется табличка. 200 Гб. Непартицированная. Что-то типа.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
create table msg_log(
  id VARCHAR2(36) primary key,
  dt TIMESTAMP(6) not null,
  msg CLOB not null
  ...
  ...
);



Есть еще куча других полей но в данном контексте они не суть важны.
Необходимо оптимизировать поиск вида.

SELECT * FROM msg_log WHERE dt BETWEEN :d1 AND :d2 AND msg LIKE '%'||:text||'%';

Msg внутри себя хранит текст формата FIX ( https://ru.wikipedia.org/wiki/Financial_Information_eXchange).

Например. С той-же вики

Код: plsql
1.
8=FIX.4.2 | 9=178 | 35=D | 34=123123 | 49=BROKER11 | 56=PHLX | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 55=MSFT | 167=FUT | 54=1 | 38=15 | 40=2 | 44=15 | 59=0 | 10=128 | 



Теоретически кастомер может лупить в поле текст все что угодно. Но предположительно он будет искать
ордеры за вчерашний день d1=trunc(sysdate - 1), и по определенному номеру заявки 11=ATOMNOCCC9990900.

Не исключено что он может просто поискать всё по подстроке "%8=FIX.4.2 | 9=178%". Тоесть для сверки чего-либо.

Query работает 1 минуту в типичном юзкейсе. По SLA - должно быть несколько секунд. Ну там 2-3.

Oracle 11g R2.
Oracle Text - не установлен.

В рамках мозгового штурма мы рассматривали самые разные варианты вплоть до ElasticSearch, и выноса
этой таблички в уровень NoSQL. Но пока нет четкого понимания размеров (сколько), цены апдейта,
и лага между обновлением лога и текстового индекса.

Ничего с PROD копи-пастить не могу. Сорян. Ограничен NDA. Буду отвечать на словах. Надеюсь на ваше понимание.

Рад выслушать ваши советы и узнать как сделать подобный поиск у вас.
...
Рейтинг: 0 / 0
07.07.2018, 14:58
    #39671017
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
Сколько записей всего? Сколько записей обычно выводится пользователю?
Каково распределение :d1 AND :d2 ?
Есть ли индекс по полю dt ?
...
Рейтинг: 0 / 0
07.07.2018, 15:54
    #39671037
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
90 млн records.
За сутки ~ 600 000
Индекс по дате есть. SYS_EXTRACT_UTC(dt).

Распределение очень равномерное. Каждый день - примерно одно и то-же количество записей.

Обычно пользователю выдается первые 25 записей из ... хер ево знает сколько возможных.

Приложение сделано так что сначала делается count(*) по всей выборке. Оценивается размер
для pagination. Потом вторым запросом выводится первые 25 rows. Оба запроса работают
одинаковое время (~90 sec).
...
Рейтинг: 0 / 0
07.07.2018, 16:13
    #39671041
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
Распарсить и нормализовать в другую табличку msg.
Деномализовать туда же дату.
Изменить форму ввода кастомерских запросов на формализованную с парами параметр=значение.
Правильные индексы на второй табличке должны позволить свести время поиска до миллисекунд.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.07.2018, 16:18
    #39671042
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
Dimitry SibiryakovРаспарсить и нормализовать в другую табличку msg.

На след. неделе я посчитаю количество тегов которые мы используем. Актуальных там будет с пол-сотни.
По протоколу их намного больше + еще есть кастомные расширения.

Изменить форму ввода кастомерских запросов на формализованную с парами параметр=значение.

Это исключено. Кастомер не пойдет на такое.
...
Рейтинг: 0 / 0
07.07.2018, 16:21
    #39671043
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
maytonЭто исключено. Кастомер не пойдет на такое.

Они всерьёз заставляют пользователей вводить "8=FIX.4.2 | 9=178"?
Пофиг: распарсить такой ввод точно так же как msg перед перековыванием параметров в запрос
и задача сводится к уже решённой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.07.2018, 16:31
    #39671046
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
Ввести могут 90% тела сообщения.
...
Рейтинг: 0 / 0
07.07.2018, 17:37
    #39671055
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
maytonИзменить форму ввода кастомерских запросов на формализованную с парами параметр=значение.

Это исключено. Кастомер не пойдет на такое.Парсить пользовательский ввод тоже.
...
Рейтинг: 0 / 0
09.07.2018, 18:46
    #39671777
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
maytonВвести могут 90% тела сообщения.
Ну и парсите эти 90% сообщения. Формат то стандартный
...
Рейтинг: 0 / 0
09.07.2018, 19:39
    #39671794
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
Сделайте свой кастомный доменный индекс и не ломайте никому мозг эластиками.
...
Рейтинг: 0 / 0
09.07.2018, 19:44
    #39671796
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
как минимум от каунта можно освободиться
...
Рейтинг: 0 / 0
10.07.2018, 10:00
    #39671909
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
andrey_anonymous,

Я думал об этом. Не укладываюсь в estimation. Я готов поднять отдельный топик об этом и тихонько кодить с тестами перформанса. Но в рамках данной задачи я поскипаю этот пункт.
...
Рейтинг: 0 / 0
10.07.2018, 10:06
    #39671911
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
По топику. Я смигрировал clob =>varchar2(4000). Благо длина сообщений позволяет и я имею еще двукратный запас.

Время уменьшилось 10 кратно.

Прошу тех кому не лень проверить мою версию.

Параметры
enable storage in row
Basic file
Nocaching
Nologging.

Все остальные по дефолту.
...
Рейтинг: 0 / 0
11.07.2018, 22:31
    #39672779
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
По задаче пока отбой. Постановку изменим. LIKE уберем. Поиск вообще пойдет по отдельным полям.
Будет композитный индекс который включит в себя набор искомых атрибутов.

От темы индексирования фиксов я не отказываюсь но она будет фоновая
и долгоиграющая.

Чуть позже я сделаю форк на тему Domain Indexes.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск LIKE по тексту биржевых сообщений FIX-протокола. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]