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) то он будет сортироватся корректно.
Яндекс добавьте уже нативную поддержку типа ULID в YDB и Clickhouse
чтобы в базе хранилось как 16 байт а выбиралось как строка вида '01HVKYP9G7FMC83W2KN18W87AG'
'01HVKYW041S595FT04KDZAM4M2'
для тех кто не в курсе ULID это UUID у которого левая часть это DateTime и таким образом он становится сортируемым и запись идет всегда в конец. По аналогии с autoincrement / identity
Интересный вариант использовать в коде классы-модули которые грузятся через рефлексию. Добавить несколько тысяч фейковых модулей и потом еще поверх этого пройтись обфускацией.
А библиотек - контейнеров 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
Остальное думаю и так понятно.
Вся логика будет выполнена на стороне БД
Это всё классно конечно но без нормальных драйверов абсолютно бесполезно.
Например у YugabyteDb есть смарт драйвер который реализует ADO.NET стандартный и благодаря этому они смогли сделать реализацию поставщика EF Core
https://docs.yugabyte.com/preview/drivers-orms/csharp/ysql/
https://www.nuget.org/packages/NpgsqlYB.EntityFrameworkCore.YugabyteDB/
А YDB в этом плане абсолютно бесполезен для меня как разработчика
Это всё классно конечно но без нормальных драйверов абсолютно бесполезно.
Например у YugabyteDb есть смарт драйвер который реализует ADO.NET стандартный и благодаря этому они смогли сделать реализацию поставщика EF Core
https://docs.yugabyte.com/preview/drivers-orms/csharp/ysql/
https://www.nuget.org/packages/NpgsqlYB.EntityFrameworkCore.YugabyteDB/
А YDB в этом плане абсолютно бесполезен для меня как разработчика
Akka изначально была частью Scala потом ее вынесли как отдельную библиотеку
Ты наверное имеешь в виду SQL SERVER Management Studio?
Скорее уж Data Science, ML, Backend и автоматизация.
Яндекс добавьте уже нативную поддержку типа ULID в YDB и Clickhouse
чтобы в базе хранилось как 16 байт а выбиралось как строка вида '01HVKYP9G7FMC83W2KN18W87AG'
'01HVKYW041S595FT04KDZAM4M2'
для тех кто не в курсе ULID это UUID у которого левая часть это DateTime и таким образом он становится сортируемым и запись идет всегда в конец. По аналогии с autoincrement / identity
не логичнее 202 - Accepted?
Если всё правильно сделать то повлияет только на время загрузки.
К сожалению если не обфусцировать саму логику и не добавлять некоторые элементы в IL то ваш код деобфусцируют.
Интересный вариант использовать в коде классы-модули которые грузятся через рефлексию. Добавить несколько тысяч фейковых модулей и потом еще поверх этого пройтись обфускацией.