ULID не корректно сортируется на MS SQL SERVER. ULID предполагает сортировку слева на право (левая сторона дата) Если вы создатите таблицу с uniqueidentifier и DateTime, а затем вставите в нее данные в хронологическом порядке (ULID и дата созданные в одно время) То вы увидите что даты идут в случайном порядке. Также мои тесты с бенчмарком показали что время вставки имеет большой разброс от 2 до 22 секунд на вставку 100_000 строк. Если вы будете конвертировать ваш ULID в string => nvarchar(26) то он будет сортироватся корректно.
ULID не корректно сортируется на MS SQL SERVER. ULID предполагает сортировку слева на право (левая сторона дата) Если вы создатите таблицу с uniqueidentifier и DateTime, а затем вставите в нее данные в хронологическом порядке (ULID и дата созданные в одно время) То вы увидите что даты идут в случайном порядке. Также мои тесты с бенчмарком показали что время вставки имеет большой разброс от 2 до 22 секунд на вставку 100_000 строк. Если вы будете конвертировать ваш ULID в string => nvarchar(26) то он будет сортироватся корректно.
ULID не корректно сортируется на MS SQL SERVER. ULID предполагает сортировку слева на право (левая сторона дата) Если вы создатите таблицу с uniqueidentifier и DateTime, а затем вставите в нее данные в хронологическом порядке (ULID и дата созданные в одно время) То вы увидите что даты идут в случайном порядке. Также мои тесты с бенчмарком показали что время вставки имеет большой разброс от 2 до 22 секунд на вставку 100_000 строк. Если вы будете конвертировать ваш ULID в string => nvarchar(26) то он будет сортироватся корректно.
Пора бы уже Scala 4.
Почему на Java Based языках все реализации ORM такие убогие
После EF Core выглядит довольно убого
Статья на уровне HelloWorld/
Чтобы это статья была действительно полезной нужно описать как создавать:
контроллеры
эндпоинты (GET\POST хотя бы)
как биндить параметры(примитивы и модели) из Route, Params, Body, Form.
Описать как производится валидация полей.
Следующей статьёй можно было бы описать фреймворк для работы с бд:
Создание доменных моделей
Создание конфигов моделей(Настройка полей, типов, PK, индексов, внешних ключей, отношений)
Чтение из бд включая с динамическими запросами с Where \ GroupBy\ OrderBy.
Как производится включение в запрос связанных сущностей
Создание \ Обновление \ Удаление
Когда понадобятся сложные динамические запросы будет боль и печаль
Проект не особо соответствует чистой архитектуре. Интрефейсы не выделены, сервисы и код связанный с БД в одном проекте.
От чистой архитектуры только пара названий.
Для логов, метрик и готовых аналитических витрин идеально подходит.
Мне нравится для логов - LSM-Tree + TLL + PARTITION BY toYYYYMM(DATE).
YDB под Windows Server?
Я про Scala => Java => Oracle
А библиотек - контейнеров DI нет?
На данный момент 5 вакансий по всей России
Потому что Microsoft это фуфуфу, а Oracle православный
Scala - сложнее.
Сложный код на Scala 1.5-2 раза больше.
Scala расходует больше памяти изза Immutable Scala Way.
Коллекции в Scala имеют более высокую алгоритмическую сложность изза иммутабельности.
Scala - легаси, большинство проектов так и остались на Scala 2.
Scala - убогая экосистема и зоопарк библиотек на коленке.
Начиная с 24.3 версии там новое лицензирование, которое требует ключ для кластера.
ULID не корректно сортируется на MS SQL SERVER.
ULID предполагает сортировку слева на право (левая сторона дата)
Если вы создатите таблицу с uniqueidentifier и DateTime, а затем вставите в нее данные в хронологическом порядке (ULID и дата созданные в одно время)
То вы увидите что даты идут в случайном порядке.
Также мои тесты с бенчмарком показали что время вставки имеет большой разброс от 2 до 22 секунд на вставку 100_000 строк.
Если вы будете конвертировать ваш ULID в string => nvarchar(26) то он будет сортироватся корректно.
ULID не корректно сортируется на MS SQL SERVER.
ULID предполагает сортировку слева на право (левая сторона дата)
Если вы создатите таблицу с uniqueidentifier и DateTime, а затем вставите в нее данные в хронологическом порядке (ULID и дата созданные в одно время)
То вы увидите что даты идут в случайном порядке.
Также мои тесты с бенчмарком показали что время вставки имеет большой разброс от 2 до 22 секунд на вставку 100_000 строк.
Если вы будете конвертировать ваш ULID в string => nvarchar(26) то он будет сортироватся корректно.
ULID не корректно сортируется на MS SQL SERVER.
ULID предполагает сортировку слева на право (левая сторона дата)
Если вы создатите таблицу с uniqueidentifier и DateTime, а затем вставите в нее данные в хронологическом порядке (ULID и дата созданные в одно время)
То вы увидите что даты идут в случайном порядке.
Также мои тесты с бенчмарком показали что время вставки имеет большой разброс от 2 до 22 секунд на вставку 100_000 строк.
Если вы будете конвертировать ваш ULID в string => nvarchar(26) то он будет сортироватся корректно.
Обычно все примеры на ORM фреймворках - уровня детского сада)))
А как там делается ветвление - опциональные фильтры, сортировка по выбору пользователя, группировка по выбору?
Как там добавить конструкции вида
foreach(paramFilter in paramFilters)
{
productsQuery = productsQuery
.Where(product => product .Params
.Any(param => param.ParamId == paramFilter.ParamId &&
paramFilter.Values.Contains(param.Value)));
}
Который транслируется в список
AND EXISTS(select 1
from ProductParamValues
where ProductId = ... AND ParamId = ... AND VALUE IN (...))
Но я думаю ты согласишься что ты даже не зная что это за язык и фреймворк, понял каждую строчку.
меня смущает то что на скале это всё делается намного сложнее и преимуществ в этой сложности я не вижу
Есть ли на скале фреймворк который может строить запросы в бд таким образом:
Например Include(x => x.SomeProperty) это Join
Остальное думаю и так понятно.
Вся логика будет выполнена на стороне БД