Size: a a a

2020 November 20

DS

Dmitry Sharonov in Tarantool
Dmitry Sharonov
или мыло?
источник

c

car1ot in Tarantool
Я использую typeorm с базой данных postgresql.
Для конкретного маршрута требуются транзакции в высоконагруженном веб-приложении:

import { Router, Request, Response } from 'express';
import { getManager } from 'typeorm';

const router = Router();

router.post('/apply', async (request: Request, response: Response) => {
await getManager().transaction('SERIALIZABLE', async (txManager) => {
/* Много select и insert здесь */
});
});

Но если есть два одновременных запроса, один запрос будет иметь ошибку: "could not serialize access due to read/write dependencies among transactions."

Как этого избежать? Может быть, обрабатывать каждый запрос один за другим? Но я не знаю, как это сделать. Возможно, есть еще какие-то способы совершения транзакций, но я прочитал документацию и ничего не нашел для этого.
источник

AK

Alexey Kuzin in Tarantool
car1ot
Я использую typeorm с базой данных postgresql.
Для конкретного маршрута требуются транзакции в высоконагруженном веб-приложении:

import { Router, Request, Response } from 'express';
import { getManager } from 'typeorm';

const router = Router();

router.post('/apply', async (request: Request, response: Response) => {
await getManager().transaction('SERIALIZABLE', async (txManager) => {
/* Много select и insert здесь */
});
});

Но если есть два одновременных запроса, один запрос будет иметь ошибку: "could not serialize access due to read/write dependencies among transactions."

Как этого избежать? Может быть, обрабатывать каждый запрос один за другим? Но я не знаю, как это сделать. Возможно, есть еще какие-то способы совершения транзакций, но я прочитал документацию и ничего не нашел для этого.
Не совсем понятно, где тут Тарантул
источник
2020 November 21

DK

Denis Kozlov in Tarantool
Ребята, а дистриба для Fedora 32 нет по какой-то особой причине или просто не собрали ещё?
источник

AT

Alexander Turenko in Tarantool
Есть ворнинги на GCC 10 (в работе) — надо перепроверить, что false positive. Потом надо будет для тестовой системы пересобрать недостающие питоновые пакеты и воткнуть в CI. В общем-то, руки не доходят — каких-то особых проблем нет.
источник

AT

Alexander Turenko in Tarantool
Собрать пакет несложно.
источник

AT

Alexander Turenko in Tarantool
Только, видимо, тестовые зависимости надо будет убрать из rpm/tarantool.spec.
источник

DK

Denis Kozlov in Tarantool
Alexander Turenko
Есть ворнинги на GCC 10 (в работе) — надо перепроверить, что false positive. Потом надо будет для тестовой системы пересобрать недостающие питоновые пакеты и воткнуть в CI. В общем-то, руки не доходят — каких-то особых проблем нет.
Уяснил, спасибо!
источник

Д

Дмитрий in Tarantool
О, а у меня провокационный вопрос для разработчиков из Mail Group. Тут пришла вакансия на Java-разработчика онлайн-игры, и там в стеке вижу Cassandra (тут всё понятно) и, что неожиданно, Hazelcast. Почему не Tarantool? 🧐
источник

IL

Ilya Letunov in Tarantool
А сдайте нам эту вакансию)
источник

Д

Дмитрий in Tarantool
Если хотите, могу в личку кинуть канал с ними, тут не очень корректно будет писать. Мне именно был интересен тот момент, почему не Tarantool, а именно Hazelcast? Может ограничения какие-то были или что-то иное. Я думаю тут есть люди, которые знают :)
источник

ИЛ

Илья Лебедев... in Tarantool
вечер добрый. а подскажите, как получить от fiber.clock64() время в number?
источник

MA

Mons Anderson in Tarantool
Илья Лебедев
вечер добрый. а подскажите, как получить от fiber.clock64() время в number?
tonumber
источник

ИЛ

Илья Лебедев... in Tarantool
спасибо. и извините за глупый вопрос)
источник

MA

Mons Anderson in Tarantool
Но учтите, теряется точность.
Кстати, а зачем вам перевод в number?
источник

ИЛ

Илья Лебедев... in Tarantool
Mons Anderson
Но учтите, теряется точность.
Кстати, а зачем вам перевод в number?
нужно в спейсе хранить timestamp и иметь по нему индекс
источник

MA

Mons Anderson in Tarantool
Илья Лебедев
нужно в спейсе хранить timestamp и иметь по нему индекс
Time64 прекрасно укладывается в спейс без потери точности
источник

ИЛ

Илья Лебедев... in Tarantool
действительно. а сравнивать их можно как то между собой? math.* все равно number просит
источник

MA

Mons Anderson in Tarantool
ну в прнципе на них работает вся арифметика
источник

VG

Vladislav Grubov in Tarantool
Илья Лебедев
действительно. а сравнивать их можно как то между собой? math.* все равно number просит
math.{min,max} работать не будут, они просят number. Но вы очень легко можете написать свои min/max и использовать в проекте. Но это ограничение luajit'a, потому что time64 возвращает cdata
источник