Lineage2TS - HF сервер написанный на Typescript

когда ты сначала ее кормишь класс, потом просишь объяснить как она поняла логику, потом корректируешь и объясняешь какие-то важные вещи и она рожает класс на 10к строк, где каждый метод покрыт досконально качественными и очень крутыми доками. Причем все это бесплатно)
чем больше обратной связи тем лучше, как говорится на одной волне нужно быть, а то так да может выдумать конечно
 
Ты про агентов или вообще про мозги ЛЛМ в целом?
LLM

Если для меня брать самую умную - то это Gemini Pro 2.5 Она в рамках AI Studio халявная и контекст 1кк это овердохуя.
Она постоянно путается в контекте, багует, может вместо результата отправить изображение или написать "Я просто текстовая модель..." когда просишь показать полностью содержимое.
К слову, для Claude я пару раз встречал такие баги и отправил только 3-4 тикета с лета того года по сегодня, в гугл 2.5 штук 40-50 тикетов таких ошибок за полтора месяца.
1кк контекста это хорошо, но толку если он в нем путается. Элементарно даже не может парой справится с CSS/HTML разметкой. Даешь такой же промт в клауд и сравниваешь результаты небо и земля.
 
чем больше обратной связи тем лучше, как говорится на одной волне нужно быть, а то так да может выдумать конечно
Дак понятно. Важно просто понимать, че у сетки происходит под капотом. Как работает вообще все, как правильно строить предложения, на что влияет промпт и его состав, как работает токенайзер, как происходит встраивание и прочее. Чем глубже все это понимаешь, тем меньше магии и тем лучше работает этот статистический фильтр, который ошибочно называют ИИ.
 
Я не хочу тебя расстроить, пусть будет так как ты думаешь
:)
Не надо расстраиваться тоже. Так действительно будет. Почемы вы считаете что вы будете правы? Здесь таких мнимых экспертов развилось что пруд пруди. Им главное верить надо. Неправда? Я же вас спрашивал зачем про ИИ а вы со своей настойчивостью все не решите что мне этого не надо, как и ваше мнение.

Как будто ему не похуй на эту лицензию. Вы никогда и никому не докажите, что ваш код использовался для обучения ИИ. Это в принципе нереально доказать) + в ИИ не будет не строчки вашего кода) Она не хранит ваш код в весах и не запоминает его во время обучения. Это просто обучение, продуктом работы которого являются веса модели. Это тоже самое, что заставить меня открыть мой код, после того, как я посмотрел ваш репозиторий, ссылаясь на то, что я использую знания о нем в своей работе)
Это из темы мнительных архитекторов. Бред какой-то не соответстрвующий реальности как и истории. Вы вообще следили за развитием ИИ? Его сразу же натренеровали на всем что было. Было такое дело с Copilot, что немного покорячило как Microsoft так и использование ИИ для программирования. Теперь все тренируют на особенных лицензиях по типу MIT, чтобы их ИИ тоже нe забрали в суд. Может быть на пространстве СНГ такой тренинг возможен, но на западе это уже пережили.

Хочеться напомнить флудерам, что тема о проекте Lineage2TS. Не о своих изласках об ИИ и тем более не про то что вы советуюте. Как я раньше говорил - буду брать советы от тех людей которые либо имеют свой проект, либо тех которые заинтересованны в том что-бы дать что-то проекту (тут можно помочь как и кодом, так и тестированием всего и вся, а не выдумками от архитекторов с ординами вымысленных побед).
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Дружище! Спасибо тебе большое за этот проект) Я учу сейчас javascript в рантайме nodejs, и мне очень полезно изучать твой проект, чтобы понимать как может выглядеть серверный бэкенд на typescript. Продолжай его развивать! Огромное спасибо за open source!
 
Всех приветствую! Не подскажите как вообще менять профы через админку? Не нашёл. Если в кофигах выставить получение профы без квеста у любого мастера - не работает, всё-равно требуются квестовые предметы. Через админку не получить квестовые предметы по-названию также. Запускаю в контейнере, так проще)): docker run -p 7777:7777 -p 2106:2106 -e GS.server.ExternalServerIP=192.168.221.130 -e GS.character.SubclassWithoutQuests=True -e GS.character.SubclassEverywhere=True -e GS.general.EverybodyHasAdminRights=True registry.gitlab.com/mrtrex/lineage2ts/server
 
Последнее редактирование:
Всех приветствую! Не подскажите как вообще менять профы через админку? Не нашёл. Если в кофигах выставить получение профы без квеста у любого мастера - не работает, всё-равно требуются квестовые предметы. Через админку не получить квестовые предметы по-названию также
Попробуйте команду "set-player-classId"

То есть сначала выбираем таргет под себя (нажимаем один раз на свои ХП/МП статы) и пишем команду по типу "set-player-classId bountyHunter". Для этой команды нужен таргет игрока. То есть можно изменять classId как себя так и других игроков.

Вот другие примеры:
Код:
set-player-classId warsmith

set-player-classId destroyer

set-player-classId assasin

set-player-classId necromancer

set-player-classId prophet

set-player-classId treasureHunter

set-player-classId gladiator

Имена можно взять тут:
 
Попробуйте команду "set-player-classId"

То есть сначала выбираем таргет под себя (нажимаем один раз на свои ХП/МП статы) и пишем команду по типу "set-player-classId bountyHunter". Для этой команды нужен таргет игрока. То есть можно изменять classId как себя так и других игроков.

Вот другие примеры:
set-player-classId warsmith
set-player-classId destroyer
set-player-classId assasin
set-player-classId necromancer
set-player-classId prophet
set-player-classId treasureHunter
set-player-classId gladiator

Имена можно взять тут:
Благодарю !
 
Всех приветствую! Не подскажите как вообще менять профы через админку? Не нашёл. Если в кофигах выставить получение профы без квеста у любого мастера - не работает, всё-равно требуются квестовые предметы. Через админку не получить квестовые предметы по-названию также. Запускаю в контейнере, так проще)): docker run -p 7777:7777 -p 2106:2106 -e GS.server.ExternalServerIP=192.168.221.130 -e GS.character.SubclassWithoutQuests=True -e GS.character.SubclassEverywhere=True -e GS.general.EverybodyHasAdminRights=True registry.gitlab.com/mrtrex/lineage2ts/server
Насчет опций конфигурации SubclassEverywhere и SubclassWithoutQuests. Это относиться именно к сабклассам (сабам, subclass), но не главной професси.
 
Насчет опций конфигурации SubclassEverywhere и SubclassWithoutQuests. Это относиться именно к сабклассам (сабам, subclass), но не главной професси.
Да, вы правы. Это я так, из серии "а вдруг прокатит". Спасибо ещё раз!

Добрый день! Не подскажите что случилось с промисами в новом обновлении, походу что-то сломалось и теперь при попытке купить что-либо вылезает следующая ошибка. Она одна, просто разные попытки)). Появилось с новым коммитом, раньше этой проблемы не было. Да, и кнопка HealTarget в админке забавно работает ;)
 

Вложения

  • Screenshot_20251105_144605.webp
    Screenshot_20251105_144605.webp
    298,8 КБ · Просмотры: 35
Последнее редактирование модератором:
Добрый день! Не подскажите что случилось с промисами в новом обновлении, походу что-то сломалось и теперь при попытке купить что-либо вылезает следующая ошибка. Она одна, просто разные попытки)). Появилось с новым коммитом, раньше этой проблемы не было. Да, и кнопка HealTarget в админке забавно работает ;)
Спасибо, буду править.
 
Лично рекомендую, перед тем как ты не начал получать попабольные проблемы, удалить SQLite и заменить на MySQL
Подниму тему и отвечу на свой же комментарий.
Прошло время, понадобилась простая и портативная бд и я вспомнил о SQLite.
Должен сказать, я очень удивился, результаты намного лучше чем я ожидал увидеть, если задать PRAGMA.
Всё таки за 20 лет, SQLite отполировали хорошо.

📊 Тестирование in-memory:
Создание таблиц...
✓ Таблицы созданы за 1.1292ms
Вставка 10000 пользователей...
✓ Вставлено 10000 пользователей за 177.9093ms
Вставка 50000 заказов...
✓ Вставлено 50000 заказов за 894.2216ms
Тестирование простых SELECT...
✓ Выполнено 17830 простых запросов за 4.4378ms
Тестирование сложных SELECT...
✓ Выполнено 7832 сложных запросов за 47.6676ms
Тестирование массовых UPDATE...
✓ Обновлено 17488 строк за 124.5116ms

💾 Тестирование базы данных на диске:
Создание таблиц...
✓ Таблицы созданы за 4.9696ms
Вставка 10000 пользователей...
✓ Вставлено 10000 пользователей за 206.6905ms
Вставка 50000 заказов...
✓ Вставлено 50000 заказов за 1.1274145s
Тестирование простых SELECT...
✓ Выполнено 17830 простых запросов за 0s
Тестирование сложных SELECT...
✓ Выполнено 7832 сложных запросов за 53.6555ms
Тестирование массовых UPDATE...
✓ Обновлено 17488 строк за 203.6559ms
 
Подниму тему и отвечу на свой же комментарий.
Прошло время, понадобилась простая и портативная бд и я вспомнил о SQLite.
Должен сказать, я очень удивился, результаты намного лучше чем я ожидал увидеть, если задать PRAGMA.
Всё таки за 20 лет, SQLite отполировали хорошо.

📊 Тестирование in-memory:
Создание таблиц...
✓ Таблицы созданы за 1.1292ms
Вставка 10000 пользователей...
✓ Вставлено 10000 пользователей за 177.9093ms
Вставка 50000 заказов...
✓ Вставлено 50000 заказов за 894.2216ms
Тестирование простых SELECT...
✓ Выполнено 17830 простых запросов за 4.4378ms
Тестирование сложных SELECT...
✓ Выполнено 7832 сложных запросов за 47.6676ms
Тестирование массовых UPDATE...
✓ Обновлено 17488 строк за 124.5116ms

💾 Тестирование базы данных на диске:
Создание таблиц...
✓ Таблицы созданы за 4.9696ms
Вставка 10000 пользователей...
✓ Вставлено 10000 пользователей за 206.6905ms
Вставка 50000 заказов...
✓ Вставлено 50000 заказов за 1.1274145s
Тестирование простых SELECT...
✓ Выполнено 17830 простых запросов за 0s
Тестирование сложных SELECT...
✓ Выполнено 7832 сложных запросов за 53.6555ms
Тестирование массовых UPDATE...
✓ Обновлено 17488 строк за 203.6559ms
Это с WAL?

Код:
PRAGMA journal_mode=WAL;
 
Подниму тему и отвечу на свой же комментарий.
Прошло время, понадобилась простая и портативная бд и я вспомнил о SQLite.
Должен сказать, я очень удивился, результаты намного лучше чем я ожидал увидеть, если задать PRAGMA.
Всё таки за 20 лет, SQLite отполировали хорошо.

📊 Тестирование in-memory:
Создание таблиц...
✓ Таблицы созданы за 1.1292ms
Вставка 10000 пользователей...
✓ Вставлено 10000 пользователей за 177.9093ms
Вставка 50000 заказов...
✓ Вставлено 50000 заказов за 894.2216ms
Тестирование простых SELECT...
✓ Выполнено 17830 простых запросов за 4.4378ms
Тестирование сложных SELECT...
✓ Выполнено 7832 сложных запросов за 47.6676ms
Тестирование массовых UPDATE...
✓ Обновлено 17488 строк за 124.5116ms

💾 Тестирование базы данных на диске:
Создание таблиц...
✓ Таблицы созданы за 4.9696ms
Вставка 10000 пользователей...
✓ Вставлено 10000 пользователей за 206.6905ms
Вставка 50000 заказов...
✓ Вставлено 50000 заказов за 1.1274145s
Тестирование простых SELECT...
✓ Выполнено 17830 простых запросов за 0s
Тестирование сложных SELECT...
✓ Выполнено 7832 сложных запросов за 53.6555ms
Тестирование массовых UPDATE...
✓ Обновлено 17488 строк за 203.6559ms
Где можно посмотреть код который вы использовали. Я почему спрашиваю? Мне интересно провести свои бенчмарки как используя другие БД, так и посмотреть какую библиотеку от SQLite вы использовали.
 
Где можно посмотреть код который вы использовали. Я почему спрашиваю? Мне интересно провести свои бенчмарки как используя другие БД, так и посмотреть какую библиотеку от SQLite вы использовали.
Нигде, я не публиковал исходный код, слишком сырой много багов с боевкой и т.д. и пока времени и желания нет разбираться.
 
Нигде, я не публиковал исходный код, слишком сырой много багов с боевкой и т.д. и пока времени и желания нет разбираться.
Решил протестировать свой вариант который я модифицировал из оригинала тут:
из статьи про еще одну БД похожую на SQLite :

У меня свои результаты которые я только что провел на тестовом компе (5800х, 128GB RAM, Debian 12, NVME v4) с локальным MariaDB используя докер образ
mariadb:12-ubi10 :
Код:
MariaDb vs SQLite (better-sqlite3) — Node.js Benchmark                    
Configuration: 10000 rows, 500 iterations per test                        
Ratio > 1x = MariaDb faster  |  * = SQLite faster                         
                                                                          
                                                                          
================================================================================
CORE OPERATIONS                                                           
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
SELECT by ID                 |          81.906 |           3.363 |    24.36x*
SELECT by index (exact)      |         295.611 |         105.818 |     2.79x*
SELECT by index (range)      |        2964.599 |        1115.571 |     2.66x*
SELECT complex               |        1935.827 |         716.486 |     2.70x*
SELECT * (full scan)         |        4168.046 |        3300.021 |     1.26x*
UPDATE by ID                 |        1000.959 |          12.932 |    77.40x*
UPDATE complex               |        2042.000 |        1954.022 |     1.05x*
INSERT single                |        1021.823 |          45.701 |    22.36x*
DELETE by ID                 |        1027.492 |          29.847 |    34.43x*
DELETE complex               |         157.944 |         549.080 |      3.48x
Aggregation (GROUP BY)       |        1649.128 |        1729.336 |      1.05x
                                                                          
================================================================================
ADVANCED OPERATIONS                                                       
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
INNER JOIN                   |         493.426 |          64.448 |     7.66x*
LEFT JOIN + GROUP BY         |       63009.481 |         121.304 |   519.43x*
Scalar subquery              |        1804.993 |         622.512 |     2.90x*
IN subquery                  |        1220.496 |        2199.071 |      1.80x
EXISTS subquery              |        4389.873 |         103.278 |    42.51x*
CTE + JOIN                   |        7055.833 |         129.633 |    54.43x*
Window ROW_NUMBER            |       12777.052 |        1841.738 |     6.94x*
Window ROW_NUMBER (PK)       |       12435.783 |          61.843 |   201.09x*
Window PARTITION BY          |       13615.561 |         129.275 |   105.32x*
UNION ALL                    |        4058.085 |          29.121 |   139.35x*
CASE expression              |         120.070 |          28.421 |     4.22x*
Complex JOIN+GRP+HAVING      |       11919.925 |         165.025 |    72.23x*
Batch INSERT (100 rows)      |        1908.546 |         315.455 |     6.05x*
                                                                          
================================================================================
BOTTLENECK HUNTERS                                                        
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
DISTINCT (no ORDER)          |          96.260 |         209.022 |      2.17x
DISTINCT + ORDER BY          |          96.965 |         274.433 |      2.83x
COUNT DISTINCT               |          86.459 |         193.628 |      2.24x
LIKE prefix (User_1%)        |         181.945 |          55.610 |     3.27x*
LIKE contains (%50%)         |        1950.834 |         252.218 |     7.73x*
OR conditions (3 vals)       |         220.988 |          62.495 |     3.54x*
IN list (7 values)           |         225.935 |          63.607 |     3.55x*
NOT IN subquery              |        7311.586 |        2388.185 |     3.06x*
NOT EXISTS subquery          |        7397.314 |        2752.029 |     2.69x*
OFFSET pagination (5000)     |        1331.244 |          88.929 |    14.97x*
Multi-col ORDER BY (3)       |        3307.064 |         715.670 |     4.62x*
Self JOIN (same age)         |         175.872 |          41.577 |     4.23x*
Multi window funcs (3)       |       24475.698 |        1906.217 |    12.84x*
Nested subquery (3 lvl)      |       15573.116 |        9302.142 |     1.67x*
Multi aggregates (6)         |        1854.213 |        1339.528 |     1.38x*
COALESCE + IS NOT NULL       |         108.108 |          23.858 |     4.53x*
Expr in WHERE (funcs)        |         182.714 |          62.533 |     2.92x*
Math expressions             |         118.044 |          71.818 |     1.64x*
String concat (||)           |         164.530 |          24.095 |     6.83x*
Large result (no LIMIT)      |        3009.888 |        1705.205 |     1.77x*
Multiple CTEs (2)            |         314.126 |          39.210 |     8.01x*
Correlated in SELECT         |        4425.863 |         947.640 |     4.67x*
BETWEEN (non-indexed)        |         169.246 |          53.087 |     3.19x*
GROUP BY (2 columns)         |        2305.473 |        2908.755 |      1.26x
CROSS JOIN (limited)         |      155302.344 |        2196.705 |    70.70x*
Derived table (FROM sub)     |        2711.761 |        1191.713 |     2.28x*
Window ROWS frame            |       20950.227 |        1922.258 |    10.90x*
HAVING complex               |        1644.300 |        1715.867 |      1.04x
Compare with subquery        |        6725.179 |        2299.208 |     2.92x*
                                                                          
================================================================================
SCORE: MariaDb 8 wins  |  SQLite 45 wins                                  
                                                                          
NOTES:                                                                    
- Both use autocommit (each write = implicit transaction + commit)        
- Ratio > 1x = MariaDb faster  |  * = SQLite faster                       
================================================================================

Код теста с простой инструкцией находится здесь:
Там также есть уже готовый compose.yaml для запуска локального MariaDB со всеми нужными параметрами.

Ну и хочеться почеркнуть что MariaDB ну уж совсем не быстрая как я ожидал. Единственное что у нее лучше идет так это DELETE да и DISTINCT запросы. Из того что я видел в сервераx для линейки такие запросы очень редки, а вот обычные SELECT и INSERT/UPDATE очень часто используються (99% всеx запросов).

Так что делайте вывод сами. Стоит ли вам использовать SQLite или нет. А вот тем товарищам которые уж очень любили свои традиционные (по 2000-м годам ценностям) базы данных, дерзайте, скоро и в 21-й век перейдете. То ли еще будет!

В дополнение другой тест уже с моего компа на Windows, но на одном сетевом соединении (буквально метр по кабелю):
Код:
MariaDb vs SQLite (better-sqlite3) — Node.js Benchmark
Configuration: 10000 rows, 500 iterations per test
Ratio > 1x = MariaDb faster  |  * = SQLite faster


================================================================================
CORE OPERATIONS
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
SELECT by ID                 |         161.127 |           1.601 |   100.65x*
SELECT by index (exact)      |         436.946 |          76.859 |     5.69x*
SELECT by index (range)      |        3151.223 |         738.980 |     4.26x*
SELECT complex               |        2018.449 |         505.996 |     3.99x*
SELECT * (full scan)         |        6263.636 |        1924.558 |     3.25x*
UPDATE by ID                 |        1004.705 |           7.375 |   136.23x*
UPDATE complex               |        2106.880 |        1748.354 |     1.21x*
INSERT single                |        1044.908 |          35.992 |    29.03x*
DELETE by ID                 |        1024.011 |          21.502 |    47.62x*
DELETE complex               |         242.316 |         383.432 |      1.58x
Aggregation (GROUP BY)       |        1740.381 |        1165.345 |     1.49x*

================================================================================
ADVANCED OPERATIONS
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
INNER JOIN                   |         590.966 |          48.505 |    12.18x*
LEFT JOIN + GROUP BY         |       63257.326 |          89.072 |   710.18x*
Scalar subquery              |        1894.822 |         415.593 |     4.56x*
IN subquery                  |        1328.110 |        1681.250 |      1.27x
EXISTS subquery              |        4524.191 |          71.393 |    63.37x*
CTE + JOIN                   |        7150.430 |          92.900 |    76.97x*
Window ROW_NUMBER            |       12788.840 |        1342.608 |     9.53x*
Window ROW_NUMBER (PK)       |       12436.724 |          45.064 |   275.98x*
Window PARTITION BY          |       13698.528 |          89.361 |   153.29x*
UNION ALL                    |        3949.894 |          21.149 |   186.77x*
CASE expression              |         209.148 |          20.061 |    10.43x*
Complex JOIN+GRP+HAVING      |       11891.965 |         115.455 |   103.00x*
Batch INSERT (100 rows)      |        2036.251 |         208.348 |     9.77x*

================================================================================
BOTTLENECK HUNTERS
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
DISTINCT (no ORDER)          |         180.020 |         139.114 |     1.29x*
DISTINCT + ORDER BY          |         180.560 |         166.401 |     1.09x*
COUNT DISTINCT               |         160.877 |         120.250 |     1.34x*
LIKE prefix (User_1%)        |         324.636 |          35.388 |     9.17x*
LIKE contains (%50%)         |        2098.800 |         191.286 |    10.97x*
OR conditions (3 vals)       |         368.303 |          42.052 |     8.76x*
IN list (7 values)           |         369.516 |          43.347 |     8.52x*
NOT IN subquery              |        7494.180 |        1748.120 |     4.29x*
NOT EXISTS subquery          |        7533.561 |        1877.873 |     4.01x*
OFFSET pagination (5000)     |        1486.504 |          53.233 |    27.92x*
Multi-col ORDER BY (3)       |        3441.755 |         475.886 |     7.23x*
Self JOIN (same age)         |         271.833 |          29.129 |     9.33x*
Multi window funcs (3)       |       24674.733 |        1386.573 |    17.80x*
Nested subquery (3 lvl)      |       15787.760 |        6841.845 |     2.31x*
Multi aggregates (6)         |        1959.439 |         842.736 |     2.33x*
COALESCE + IS NOT NULL       |         192.881 |          16.154 |    11.94x*
Expr in WHERE (funcs)        |         329.953 |          43.703 |     7.55x*
Math expressions             |         266.612 |          52.096 |     5.12x*
String concat (||)           |         254.017 |          17.958 |    14.14x*
Large result (no LIMIT)      |        3162.995 |        1110.175 |     2.85x*
Multiple CTEs (2)            |         418.228 |          30.809 |    13.57x*
Correlated in SELECT         |        4628.635 |         737.973 |     6.27x*
BETWEEN (non-indexed)        |         371.033 |          38.627 |     9.61x*
GROUP BY (2 columns)         |        2420.167 |        1940.417 |     1.25x*
CROSS JOIN (limited)         |      155565.358 |        1364.126 |   114.04x*
Derived table (FROM sub)     |        2784.065 |         759.621 |     3.67x*
Window ROWS frame            |       21027.201 |        1475.135 |    14.25x*
HAVING complex               |        1693.512 |        1148.161 |     1.47x*
Compare with subquery        |        6859.625 |        1594.954 |     4.30x*

================================================================================
SCORE: MariaDb 2 wins  |  SQLite 51 wins

NOTES:
- Both use autocommit (each write = implicit transaction + commit)
- Ratio > 1x = MariaDb faster  |  * = SQLite faster
================================================================================
 
Последнее редактирование:

User

Баллов: -9
Клоун
Решил протестировать свой вариант который я модифицировал из оригинала тут:
из статьи про еще одну БД похожую на SQLite :

У меня свои результаты которые я только что провел на тестовом компе (5800х, 128GB RAM, Debian 12, NVME v4) с локальным MariaDB используя докер образ
mariadb:12-ubi10 :
Код:
MariaDb vs SQLite (better-sqlite3) — Node.js Benchmark                       
Configuration: 10000 rows, 500 iterations per test                           
Ratio > 1x = MariaDb faster  |  * = SQLite faster                            
                                                                             
                                                                             
================================================================================
CORE OPERATIONS                                                              
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
SELECT by ID                 |          81.906 |           3.363 |    24.36x*
SELECT by index (exact)      |         295.611 |         105.818 |     2.79x*
SELECT by index (range)      |        2964.599 |        1115.571 |     2.66x*
SELECT complex               |        1935.827 |         716.486 |     2.70x*
SELECT * (full scan)         |        4168.046 |        3300.021 |     1.26x*
UPDATE by ID                 |        1000.959 |          12.932 |    77.40x*
UPDATE complex               |        2042.000 |        1954.022 |     1.05x*
INSERT single                |        1021.823 |          45.701 |    22.36x*
DELETE by ID                 |        1027.492 |          29.847 |    34.43x*
DELETE complex               |         157.944 |         549.080 |      3.48x
Aggregation (GROUP BY)       |        1649.128 |        1729.336 |      1.05x
                                                                             
================================================================================
ADVANCED OPERATIONS                                                          
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
INNER JOIN                   |         493.426 |          64.448 |     7.66x*
LEFT JOIN + GROUP BY         |       63009.481 |         121.304 |   519.43x*
Scalar subquery              |        1804.993 |         622.512 |     2.90x*
IN subquery                  |        1220.496 |        2199.071 |      1.80x
EXISTS subquery              |        4389.873 |         103.278 |    42.51x*
CTE + JOIN                   |        7055.833 |         129.633 |    54.43x*
Window ROW_NUMBER            |       12777.052 |        1841.738 |     6.94x*
Window ROW_NUMBER (PK)       |       12435.783 |          61.843 |   201.09x*
Window PARTITION BY          |       13615.561 |         129.275 |   105.32x*
UNION ALL                    |        4058.085 |          29.121 |   139.35x*
CASE expression              |         120.070 |          28.421 |     4.22x*
Complex JOIN+GRP+HAVING      |       11919.925 |         165.025 |    72.23x*
Batch INSERT (100 rows)      |        1908.546 |         315.455 |     6.05x*
                                                                             
================================================================================
BOTTLENECK HUNTERS                                                           
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
DISTINCT (no ORDER)          |          96.260 |         209.022 |      2.17x
DISTINCT + ORDER BY          |          96.965 |         274.433 |      2.83x
COUNT DISTINCT               |          86.459 |         193.628 |      2.24x
LIKE prefix (User_1%)        |         181.945 |          55.610 |     3.27x*
LIKE contains (%50%)         |        1950.834 |         252.218 |     7.73x*
OR conditions (3 vals)       |         220.988 |          62.495 |     3.54x*
IN list (7 values)           |         225.935 |          63.607 |     3.55x*
NOT IN subquery              |        7311.586 |        2388.185 |     3.06x*
NOT EXISTS subquery          |        7397.314 |        2752.029 |     2.69x*
OFFSET pagination (5000)     |        1331.244 |          88.929 |    14.97x*
Multi-col ORDER BY (3)       |        3307.064 |         715.670 |     4.62x*
Self JOIN (same age)         |         175.872 |          41.577 |     4.23x*
Multi window funcs (3)       |       24475.698 |        1906.217 |    12.84x*
Nested subquery (3 lvl)      |       15573.116 |        9302.142 |     1.67x*
Multi aggregates (6)         |        1854.213 |        1339.528 |     1.38x*
COALESCE + IS NOT NULL       |         108.108 |          23.858 |     4.53x*
Expr in WHERE (funcs)        |         182.714 |          62.533 |     2.92x*
Math expressions             |         118.044 |          71.818 |     1.64x*
String concat (||)           |         164.530 |          24.095 |     6.83x*
Large result (no LIMIT)      |        3009.888 |        1705.205 |     1.77x*
Multiple CTEs (2)            |         314.126 |          39.210 |     8.01x*
Correlated in SELECT         |        4425.863 |         947.640 |     4.67x*
BETWEEN (non-indexed)        |         169.246 |          53.087 |     3.19x*
GROUP BY (2 columns)         |        2305.473 |        2908.755 |      1.26x
CROSS JOIN (limited)         |      155302.344 |        2196.705 |    70.70x*
Derived table (FROM sub)     |        2711.761 |        1191.713 |     2.28x*
Window ROWS frame            |       20950.227 |        1922.258 |    10.90x*
HAVING complex               |        1644.300 |        1715.867 |      1.04x
Compare with subquery        |        6725.179 |        2299.208 |     2.92x*
                                                                             
================================================================================
SCORE: MariaDb 8 wins  |  SQLite 45 wins                                     
                                                                             
NOTES:                                                                       
- Both use autocommit (each write = implicit transaction + commit)           
- Ratio > 1x = MariaDb faster  |  * = SQLite faster                          
================================================================================

Код теста с простой инструкцией находится здесь:
Там также есть уже готовый compose.yaml для запуска локального MariaDB со всеми нужными параметрами.

Ну и хочеться почеркнуть что MariaDB ну уж совсем не быстрая как я ожидал. Единственное что у нее лучше идет так это DELETE да и DISTINCT запросы. Из того что я видел в сервераx для линейки такие запросы очень редки, а вот обычные SELECT и INSERT/UPDATE очень часто используються (99% всеx запросов).

Так что делайте вывод сами. Стоит ли вам использовать SQLite или нет. А вот тем товарищам которые уж оцень любили свои традиционные (по 2000-х ценностям) базы данных, дерзайте, скоро и в 21-й век перейдете. То ли еще будет!
сейчас модно хвалить postgres, интересно было бы взглянуть на её прозиводительность в сравнении с устоявшейся mariadb
 
сейчас модно хвалить postgres, интересно было бы взглянуть на её прозиводительность в сравнении с устоявшейся mariadb
Я попробую добавить его в тестированиe. Когда я это все делал я пришел к выводу что почти все драйвера для PostgreSQL на Nodejs работают достаточно примитивно, то есть нет операции batch например, что конечно не критично, но усложняет сравнение по фукциям.
 
Боже какой же клоун. Круто наверное писать с нейронками и указывать придуманные ими имена. - 404 Держи не позорься на офиц репо мамкин модификатор
Решил протестировать свой вариант который я модифицировал из оригинала тут:
из статьи про еще одну БД похожую на SQLite :

У меня свои результаты которые я только что провел на тестовом компе (5800х, 128GB RAM, Debian 12, NVME v4) с локальным MariaDB используя докер образ
mariadb:12-ubi10 :
Код:
MariaDb vs SQLite (better-sqlite3) — Node.js Benchmark                   
Configuration: 10000 rows, 500 iterations per test                       
Ratio > 1x = MariaDb faster  |  * = SQLite faster                        
                                                                         
                                                                         
================================================================================
CORE OPERATIONS                                                          
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
SELECT by ID                 |          81.906 |           3.363 |    24.36x*
SELECT by index (exact)      |         295.611 |         105.818 |     2.79x*
SELECT by index (range)      |        2964.599 |        1115.571 |     2.66x*
SELECT complex               |        1935.827 |         716.486 |     2.70x*
SELECT * (full scan)         |        4168.046 |        3300.021 |     1.26x*
UPDATE by ID                 |        1000.959 |          12.932 |    77.40x*
UPDATE complex               |        2042.000 |        1954.022 |     1.05x*
INSERT single                |        1021.823 |          45.701 |    22.36x*
DELETE by ID                 |        1027.492 |          29.847 |    34.43x*
DELETE complex               |         157.944 |         549.080 |      3.48x
Aggregation (GROUP BY)       |        1649.128 |        1729.336 |      1.05x
                                                                         
================================================================================
ADVANCED OPERATIONS                                                      
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
INNER JOIN                   |         493.426 |          64.448 |     7.66x*
LEFT JOIN + GROUP BY         |       63009.481 |         121.304 |   519.43x*
Scalar subquery              |        1804.993 |         622.512 |     2.90x*
IN subquery                  |        1220.496 |        2199.071 |      1.80x
EXISTS subquery              |        4389.873 |         103.278 |    42.51x*
CTE + JOIN                   |        7055.833 |         129.633 |    54.43x*
Window ROW_NUMBER            |       12777.052 |        1841.738 |     6.94x*
Window ROW_NUMBER (PK)       |       12435.783 |          61.843 |   201.09x*
Window PARTITION BY          |       13615.561 |         129.275 |   105.32x*
UNION ALL                    |        4058.085 |          29.121 |   139.35x*
CASE expression              |         120.070 |          28.421 |     4.22x*
Complex JOIN+GRP+HAVING      |       11919.925 |         165.025 |    72.23x*
Batch INSERT (100 rows)      |        1908.546 |         315.455 |     6.05x*
                                                                         
================================================================================
BOTTLENECK HUNTERS                                                       
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
DISTINCT (no ORDER)          |          96.260 |         209.022 |      2.17x
DISTINCT + ORDER BY          |          96.965 |         274.433 |      2.83x
COUNT DISTINCT               |          86.459 |         193.628 |      2.24x
LIKE prefix (User_1%)        |         181.945 |          55.610 |     3.27x*
LIKE contains (%50%)         |        1950.834 |         252.218 |     7.73x*
OR conditions (3 vals)       |         220.988 |          62.495 |     3.54x*
IN list (7 values)           |         225.935 |          63.607 |     3.55x*
NOT IN subquery              |        7311.586 |        2388.185 |     3.06x*
NOT EXISTS subquery          |        7397.314 |        2752.029 |     2.69x*
OFFSET pagination (5000)     |        1331.244 |          88.929 |    14.97x*
Multi-col ORDER BY (3)       |        3307.064 |         715.670 |     4.62x*
Self JOIN (same age)         |         175.872 |          41.577 |     4.23x*
Multi window funcs (3)       |       24475.698 |        1906.217 |    12.84x*
Nested subquery (3 lvl)      |       15573.116 |        9302.142 |     1.67x*
Multi aggregates (6)         |        1854.213 |        1339.528 |     1.38x*
COALESCE + IS NOT NULL       |         108.108 |          23.858 |     4.53x*
Expr in WHERE (funcs)        |         182.714 |          62.533 |     2.92x*
Math expressions             |         118.044 |          71.818 |     1.64x*
String concat (||)           |         164.530 |          24.095 |     6.83x*
Large result (no LIMIT)      |        3009.888 |        1705.205 |     1.77x*
Multiple CTEs (2)            |         314.126 |          39.210 |     8.01x*
Correlated in SELECT         |        4425.863 |         947.640 |     4.67x*
BETWEEN (non-indexed)        |         169.246 |          53.087 |     3.19x*
GROUP BY (2 columns)         |        2305.473 |        2908.755 |      1.26x
CROSS JOIN (limited)         |      155302.344 |        2196.705 |    70.70x*
Derived table (FROM sub)     |        2711.761 |        1191.713 |     2.28x*
Window ROWS frame            |       20950.227 |        1922.258 |    10.90x*
HAVING complex               |        1644.300 |        1715.867 |      1.04x
Compare with subquery        |        6725.179 |        2299.208 |     2.92x*
                                                                         
================================================================================
SCORE: MariaDb 8 wins  |  SQLite 45 wins                                 
                                                                         
NOTES:                                                                   
- Both use autocommit (each write = implicit transaction + commit)       
- Ratio > 1x = MariaDb faster  |  * = SQLite faster                      
================================================================================

Код теста с простой инструкцией находится здесь:
Там также есть уже готовый compose.yaml для запуска локального MariaDB со всеми нужными параметрами.

Ну и хочеться почеркнуть что MariaDB ну уж совсем не быстрая как я ожидал. Единственное что у нее лучше идет так это DELETE да и DISTINCT запросы. Из того что я видел в сервераx для линейки такие запросы очень редки, а вот обычные SELECT и INSERT/UPDATE очень часто используються (99% всеx запросов).

Так что делайте вывод сами. Стоит ли вам использовать SQLite или нет. А вот тем товарищам которые уж очень любили свои традиционные (по 2000-м годам ценностям) базы данных, дерзайте, скоро и в 21-й век перейдете. То ли еще будет!

В дополнение другой тест уже с моего компа на Windows, но на одном сетевом соединении (буквально метр по кабелю):
Код:
MariaDb vs SQLite (better-sqlite3) — Node.js Benchmark
Configuration: 10000 rows, 500 iterations per test
Ratio > 1x = MariaDb faster  |  * = SQLite faster


================================================================================
CORE OPERATIONS
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
SELECT by ID                 |         161.127 |           1.601 |   100.65x*
SELECT by index (exact)      |         436.946 |          76.859 |     5.69x*
SELECT by index (range)      |        3151.223 |         738.980 |     4.26x*
SELECT complex               |        2018.449 |         505.996 |     3.99x*
SELECT * (full scan)         |        6263.636 |        1924.558 |     3.25x*
UPDATE by ID                 |        1004.705 |           7.375 |   136.23x*
UPDATE complex               |        2106.880 |        1748.354 |     1.21x*
INSERT single                |        1044.908 |          35.992 |    29.03x*
DELETE by ID                 |        1024.011 |          21.502 |    47.62x*
DELETE complex               |         242.316 |         383.432 |      1.58x
Aggregation (GROUP BY)       |        1740.381 |        1165.345 |     1.49x*

================================================================================
ADVANCED OPERATIONS
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
INNER JOIN                   |         590.966 |          48.505 |    12.18x*
LEFT JOIN + GROUP BY         |       63257.326 |          89.072 |   710.18x*
Scalar subquery              |        1894.822 |         415.593 |     4.56x*
IN subquery                  |        1328.110 |        1681.250 |      1.27x
EXISTS subquery              |        4524.191 |          71.393 |    63.37x*
CTE + JOIN                   |        7150.430 |          92.900 |    76.97x*
Window ROW_NUMBER            |       12788.840 |        1342.608 |     9.53x*
Window ROW_NUMBER (PK)       |       12436.724 |          45.064 |   275.98x*
Window PARTITION BY          |       13698.528 |          89.361 |   153.29x*
UNION ALL                    |        3949.894 |          21.149 |   186.77x*
CASE expression              |         209.148 |          20.061 |    10.43x*
Complex JOIN+GRP+HAVING      |       11891.965 |         115.455 |   103.00x*
Batch INSERT (100 rows)      |        2036.251 |         208.348 |     9.77x*

================================================================================
BOTTLENECK HUNTERS
================================================================================
Operation                    |    MariaDb (μs) |     SQLite (μs) |      Ratio
--------------------------------------------------------------------------------
DISTINCT (no ORDER)          |         180.020 |         139.114 |     1.29x*
DISTINCT + ORDER BY          |         180.560 |         166.401 |     1.09x*
COUNT DISTINCT               |         160.877 |         120.250 |     1.34x*
LIKE prefix (User_1%)        |         324.636 |          35.388 |     9.17x*
LIKE contains (%50%)         |        2098.800 |         191.286 |    10.97x*
OR conditions (3 vals)       |         368.303 |          42.052 |     8.76x*
IN list (7 values)           |         369.516 |          43.347 |     8.52x*
NOT IN subquery              |        7494.180 |        1748.120 |     4.29x*
NOT EXISTS subquery          |        7533.561 |        1877.873 |     4.01x*
OFFSET pagination (5000)     |        1486.504 |          53.233 |    27.92x*
Multi-col ORDER BY (3)       |        3441.755 |         475.886 |     7.23x*
Self JOIN (same age)         |         271.833 |          29.129 |     9.33x*
Multi window funcs (3)       |       24674.733 |        1386.573 |    17.80x*
Nested subquery (3 lvl)      |       15787.760 |        6841.845 |     2.31x*
Multi aggregates (6)         |        1959.439 |         842.736 |     2.33x*
COALESCE + IS NOT NULL       |         192.881 |          16.154 |    11.94x*
Expr in WHERE (funcs)        |         329.953 |          43.703 |     7.55x*
Math expressions             |         266.612 |          52.096 |     5.12x*
String concat (||)           |         254.017 |          17.958 |    14.14x*
Large result (no LIMIT)      |        3162.995 |        1110.175 |     2.85x*
Multiple CTEs (2)            |         418.228 |          30.809 |    13.57x*
Correlated in SELECT         |        4628.635 |         737.973 |     6.27x*
BETWEEN (non-indexed)        |         371.033 |          38.627 |     9.61x*
GROUP BY (2 columns)         |        2420.167 |        1940.417 |     1.25x*
CROSS JOIN (limited)         |      155565.358 |        1364.126 |   114.04x*
Derived table (FROM sub)     |        2784.065 |         759.621 |     3.67x*
Window ROWS frame            |       21027.201 |        1475.135 |    14.25x*
HAVING complex               |        1693.512 |        1148.161 |     1.47x*
Compare with subquery        |        6859.625 |        1594.954 |     4.30x*

================================================================================
SCORE: MariaDb 2 wins  |  SQLite 51 wins

NOTES:
- Both use autocommit (each write = implicit transaction + commit)
- Ratio > 1x = MariaDb faster  |  * = SQLite faster
================================================================================
Не родной mysql2 драйвер, и зачем конечно брать 8 мускул который выигрывает по всем и брать без полных данных. Что с настройками бд? дефолт конечно же, что по innodb_flush_log_at_trx_commit? innodb_buffer_pool_size? Что по использованию сокета? Prepared statements? очень легко с дефолт настройками тестами и показывать смотрите. Где пул соединений? Используется createConnection() никакого пула. Все запросы строго последовательны с await. Крутые тесты для клиент-серверной архитектуры, мастер тестов.
LEFT JOIN + GROUP BY: 63000 мкс vs 121 мкс (519x) - это не проблема сети, нужно смотреть план запросов, к тому же как обычно не знаем ещё о версии и версии оптимизаторов когда были сломаны в mariadb. Где нагрузки, адекватные сценарии? Филькина грамота, до этих технологий аффтар ещё не дошёл или нейронка не помогла

сейчас модно хвалить postgres, интересно было бы взглянуть на её прозиводительность в сравнении с устоявшейся mariadb
До таких технологий аффтор не сможет дойти и уж темболее настроить и поднять его
 
Боже какой же клоун. Круто наверное писать с нейронками и указывать придуманные ими имена. - 404 Держи не позорься на офиц репо мамкин модификатор

Не родной mysql2 драйвер, и зачем конечно брать 8 мускул который выигрывает по всем и брать без полных данных. Что с настройками бд? дефолт конечно же, что по innodb_flush_log_at_trx_commit? innodb_buffer_pool_size? Что по использованию сокета? Prepared statements? очень легко с дефолт настройками тестами и показывать смотрите. Где пул соединений? Используется createConnection() никакого пула. Все запросы строго последовательны с await. Крутые тесты для клиент-серверной архитектуры, мастер тестов.
LEFT JOIN + GROUP BY: 63000 мкс vs 121 мкс (519x) - это не проблема сети, нужно смотреть план запросов, к тому же как обычно не знаем ещё о версии и версии оптимизаторов когда были сломаны в mariadb. Где нагрузки, адекватные сценарии? Филькина грамота, до этих технологий аффтар ещё не дошёл или нейронка не помогла


До таких технологий аффтор не сможет дойти и уж темболее настроить и поднять его
Вы идиот? Вы в своем уме? Какой 8 Mysql? Я уже написал что для теста используеться драйвер mariadb тут а для сервиса ипользуеться докер изображение (mariadb:12-ubi10)

Я так понимаю вам сначала нужно читать научиться а потом перестать другим людям морочить голову. Ну конечно я понимаю что вы ИИ начитались и вот так ответили (здесь обычно так мнимые архитекторы делают). А слабо самому научиться протестировать или даже код посмотреть? Или подобное сделать на чем-либо? Тест был как раз на дефолтные параметры. Если же действительно все оптимизировать, то можно и SQLite также настроить что-бы он вообще летал (тут не будет никакой конкурентности так как все будет работать в памяти и всеравно сливаться на файловую систему).

A то что было сломанно в mariaDB... не нужно плакать. Нужно тестировать и говорить о фактах, а не o мнимых достижениях или же там конфигурациях. Да и я так понимаю что вы ожидали результат по лучше, а получилось как всегда....

Ну а насчет того что я изменял, так это бралось из того что другой человек делал для другой БД. Я только подстроил другой драйвер, так что возможно там и было использованно ИИ, но так как SQL запросы буквально одинаковы (я уже напомнил что нужно читать код, нет?), то тут не важно что ИИ или не ИИ делало, а то что сами запросы идут одинаково на тестирование.

Так что давайте будем сначала смотреть код а потом из себя строить клоуна. Я понимаю что тут не технический форум и знающих людей уж очень мало, зато мнимых программистов и архитекторов обычно выманивает моя тема... дерзайте!
 
Последнее редактирование:
Назад
Сверху Снизу