ЦОДы внедряют долговременные архивы
📍 ЭЛАР представил сегмент долговременного хранения для ЦОД — роботизированные электронные архивы на оптике ЭЛАРобот НСМ
Система построена на оптических носителях:
— хранят информацию свыше 50 лет
— устойчивы к внешним воздействиям и энергоэффективны
— не нуждаются в обновлении и миграции данных
— обеспечивают 100% защиту от перезаписи и удаления
— удешевляют хранение информации, разгружая “горячие” массивы HDD/SSD
📉 ЭЛАРобот НСМ исключает расходы на обслуживание и легко интегрируется в любую ИТ-инфраструктуру.
📦 Модели для ЦОД основаны на роботизированных библиотеках ёмкостью до 1036 ТБ, которые позволяют записывать и долговременно хранить любые критически важных данные:
— документы
— базы данных
— бэкапы и другую информацию.
👉 Подробнее о технологии и преимуществах хранения на оптике
📍 ЭЛАР представил сегмент долговременного хранения для ЦОД — роботизированные электронные архивы на оптике ЭЛАРобот НСМ
Система построена на оптических носителях:
— хранят информацию свыше 50 лет
— устойчивы к внешним воздействиям и энергоэффективны
— не нуждаются в обновлении и миграции данных
— обеспечивают 100% защиту от перезаписи и удаления
— удешевляют хранение информации, разгружая “горячие” массивы HDD/SSD
📉 ЭЛАРобот НСМ исключает расходы на обслуживание и легко интегрируется в любую ИТ-инфраструктуру.
📦 Модели для ЦОД основаны на роботизированных библиотеках ёмкостью до 1036 ТБ, которые позволяют записывать и долговременно хранить любые критически важных данные:
— документы
— базы данных
— бэкапы и другую информацию.
👉 Подробнее о технологии и преимуществах хранения на оптике
Таблицы:
• items(item_id NUMBER, init_qty NUMBER) — стартовый остаток по товару
• movements(item_id NUMBER, ts DATE, qty NUMBER) — движения: приход (qty>0) и расход (qty<0), событий может быть несколько в день
Нужно:
1) Построить помесячный/подневный календарь по каждому item_id между мин(ts) и max(ts).
2) Посчитать ежедневный итоговый остаток (onhand), применяя суммарные дневные движения к старту, даже если в конкретный день не было событий.
3) Найти «окна нулевого остатка» (stockout): количество, самую длинную протяжённость и дату первого пополнения после самого длинного окна.
4) Спрогнозировать риск обнуления в ближайшие 14 дней при текущем тренде: взять 7-дневное скользящее среднее спроса (по расходам), спроецировать остаток и отметить товары, которые уйдут в ноль.
-- Демоданные
WITH items AS (
SELECT 101 item_id, 50 init_qty FROM dual UNION ALL
SELECT 102, 5 FROM dual
),
movements_raw AS (
SELECT 101 item_id, DATE'2025-08-01' ts, 30 qty FROM dual UNION ALL -- приход
SELECT 101, DATE'2025-08-02', -20 FROM dual UNION ALL -- расход
SELECT 101, DATE'2025-08-04', -40 FROM dual UNION ALL -- перерасход → stockout
SELECT 101, DATE'2025-08-06', 60 FROM dual UNION ALL -- пополнение
SELECT 102, DATE'2025-08-01', - 2 FROM dual UNION ALL
SELECT 102, DATE'2025-08-03', - 3 FROM dual UNION ALL
SELECT 102, DATE'2025-08-05', 5 FROM dual
),
-- 1) Свернём движения по дням (может быть несколько событий в день)
movements AS (
SELECT item_id, ts, SUM(qty) qty_per_day
FROM movements_raw
GROUP BY item_id, ts
),
-- 1) Календарь на ежедневной сетке для каждого товара
date_bounds AS (
SELECT item_id,
LEAST(MIN(ts), TRUNC(SYSDATE)) AS dmin,
GREATEST(MAX(ts), TRUNC(SYSDATE)) AS dmax
FROM movements
GROUP BY item_id
),
calendar AS (
SELECT b.item_id, (b.dmin + LEVEL - 1) d
FROM date_bounds b
CONNECT BY LEVEL <= b.dmax - b.dmin + 1
AND PRIOR item_id = item_id
AND PRIOR SYS_GUID() IS NOT NULL
),
-- 2) Посчитаем ежедневный остаток MODEL-ом
onhand AS (
SELECT item_id, d, onhand, qty_per_day
FROM (
SELECT c.item_id,
c.d,
NVL(m.qty_per_day, 0) qty_per_day,
i.init_qty
FROM calendar c
JOIN items i USING(item_id)
LEFT JOIN movements m ON m.item_id = c.item_id AND m.ts = c.d
)
MODEL
PARTITION BY (item_id)
DIMENSION BY (d)
MEASURES (init_qty, qty_per_day, CAST(NULL AS NUMBER) AS onhand)
RULES SEQUENTIAL ORDER (
onhand[MIN(d)] = init_qty[MIN(d)] + qty_per_day[MIN(d)],
onhand[FOR d FROM MIN(d)+1 TO MAX(d)] =
onhand[CV(d)-1] + qty_per_day[CV(d)]
)
),
-- 3) Найдём окна нулевого остатка и их длины
stockout_runs AS (
SELECT *
FROM onhand
MATCH_RECOGNIZE (
PARTITION BY item_id
ORDER BY d
MEASURES
FIRST(d) AS start_d,
LAST(d) AS end_d,
COUNT(*) AS days_zero
ONE ROW PER MATCH
PATTERN (z+)
DEFINE
z AS onhand = 0
)
),
-- 3) Для самого длинного окна найдём дату первого пополнения после него
longest_zero AS (
SELECT s.item_id, s.start_d, s.end_d, s.days_zero,
LEAD(s.end_d) OVER (PARTITION BY s.item_id ORDER BY s.days_zero, s.end_d) dummy
FROM (
SELECT s.*, ROW_NUMBER() OVER (PARTITION BY item_id ORDER BY days_zero DESC, end_d) rn
FROM stock
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
Forwarded from Machinelearning
Модель показывает лучшие результаты в своём классе среди открытых решений, лидируя на 41 бенчмарке.
- Image Reasoning — понимание изображений, анализ нескольких изображений, распознавание объектов.
- Video Understanding — раскадровка длинных видео, определение событий, которые происходят на кадрах из видео.
- GUI-задачи — понимание интрефейсов, распознавание иконок, кнопок и тд, помощь в управлении рабочим столом.
- Сложный анализ графиков и документов — разбор различных отчётов, извлечение информации их них.
- Grounding — точная локализация элементов на изображениях.
Здесь можно почитать про GLM-4.5, а здесь посмотреть техрепорт, там много интересного.
@ai_machinelearning_big_data
#GLM #opensource #vlm
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
GitHub: gigagrug/schema
Что умеет:
-
schema -i
— инициализация проекта (по умолчанию SQLite + `./schema/dev.db`) или подключение к выбранной БД -
schema -pull
— импорт существующей структуры - Миграции:
- создание SQL-файлов
- применение (`schema -migrate`)
- выборочное выполнение (`schema -migrate="имя"`)
- Миграции с данными для повторного использования
- Выполнение произвольных SQL прямо в консоли
- Встроенная TUI-студия для интерактивной работы с БД
- Быстрые и наглядные миграции
- Поддержка нескольких СУБД
- Легкое подключение к существующей базе
- Совмещает миграции, генерацию данных и интерактивный интерфейс
📌 Apache-2.0 • ⭐ 22 звезды • 8 релизов • последний — 2 августа 2025
Если нужен удобный CLI для миграций и работы с базами — Schema точно стоит внимания.
👉 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Разбираем тестовое задание в Яндекс на позицию Junior аналитика данных
Тестовое задание — важная часть трудоустройства аналитика. Это шанс показать свои навыки на практике и получить оффер мечты.
Приглашаем на бесплатный вебинар, где Андрон Алексанян — эксперт в области аналитики и CEO школы аналитики Simulative — в прямом эфире разберет тестовое задание в Яндекс на позицию Junior аналитика данных.
⚡️ На вебинаре вы:
Чему именно научимся на вебинаре:
🕗 Настоятельно рекомендуем не пропускать — для зрителей у нас есть особый бонус, который обеспечит вам уверенный старт в вашей карьере.
😶 Зарегистрироваться на бесплатный вебинар
Тестовое задание — важная часть трудоустройства аналитика. Это шанс показать свои навыки на практике и получить оффер мечты.
Приглашаем на бесплатный вебинар, где Андрон Алексанян — эксперт в области аналитики и CEO школы аналитики Simulative — в прямом эфире разберет тестовое задание в Яндекс на позицию Junior аналитика данных.
🟠 узнаете, какие навыки и знания необходимы для успешного выполнения заданий;🟠 поймёте, что хочет увидеть работодатель;🟠 получите советы и лайфхаки;🟠 вместе с Андроном разберете в прямом эфире реальный пример тестового 🔥
Чему именно научимся на вебинаре:
🟠 С помощью Pandas проанализируем Яндекс-запросы за несколько недель, загрузив их из json-файла;🟠 Найдем закономерности и отличия использования сервиса на мобильных устройствах и компьютерах;🟠 Разберем фишки Pandas: сложную агрегацию, маппинг, конкатенацию, чейнинг и др.
🕗 Настоятельно рекомендуем не пропускать — для зрителей у нас есть особый бонус, который обеспечит вам уверенный старт в вашей карьере.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🐘 Tarantool — необычная платформа, сочетающая in-memory базу данных с полноценным сервером приложений на Lua. Проект имеет два движка хранения: in-memory с WAL и LSM-дерево, поддерживает ANSI SQL и асинхронную репликацию.
Инструмент имеет встроенный JIT-компилятор LuaJIT, позволяющий исполнять бизнес-логику прямо рядом с данными. При этом сохраняется совместимость с внешними СУБД вроде PostgreSQL через коннекторы. Проект полезен для высоконагруженных веб-сервисов, кэширующих слоёв и систем обработки очередей сообщений.
🤖 GitHub
@databases_tg
Инструмент имеет встроенный JIT-компилятор LuaJIT, позволяющий исполнять бизнес-логику прямо рядом с данными. При этом сохраняется совместимость с внешними СУБД вроде PostgreSQL через коннекторы. Проект полезен для высоконагруженных веб-сервисов, кэширующих слоёв и систем обработки очередей сообщений.
🤖 GitHub
@databases_tg
❤3👍3🔥3
🚀 Интересуетесь нейросетями и хотите понять, как эволюция архитектур RNN и Transformer влияет на NLP?🚀
На открытом уроке «От RNN до Transformers: скорость, память, контекст» 19 августа в 20:00 МСК мы разберём, как работают рекуррентные нейросети (RNN), их ограничения и почему современные NLP-системы всё чаще переходят к трансформерам. Мы сравним эти архитектуры по ключевым параметрам: скорости, памяти, контексту и масштабируемости.
Урок даст вам чёткое представление о том, как меняются подходы в обработке текста, а также объяснит, почему трансформеры становятся основой современных NLP-систем.
📚 Посетите вебинар и получите скидку на большое обучение «NLP / Natural Language Processing»: https://otus.pw/QKft/?erid=2W5zFK8ZKSY
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
На открытом уроке «От RNN до Transformers: скорость, память, контекст» 19 августа в 20:00 МСК мы разберём, как работают рекуррентные нейросети (RNN), их ограничения и почему современные NLP-системы всё чаще переходят к трансформерам. Мы сравним эти архитектуры по ключевым параметрам: скорости, памяти, контексту и масштабируемости.
Урок даст вам чёткое представление о том, как меняются подходы в обработке текста, а также объяснит, почему трансформеры становятся основой современных NLP-систем.
📚 Посетите вебинар и получите скидку на большое обучение «NLP / Natural Language Processing»: https://otus.pw/QKft/?erid=2W5zFK8ZKSY
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
❤3🤨1
💡 Полезный хинт для Oracle SQL — ускоряем поиск по последним записям с
Вместо подзапросов для поиска последнего или первого значения по группе можно использовать аналитическую агрегацию с
📍 Пример: для каждой акции получить последнюю цену
📍 Первый тик за день:
⚡ Плюсы:
- Нет лишних джоинов и подзапросов
- Работает прямо в GROUP BY
- Удобно для задач «последнее значение по группе»
KEEP (DENSE_RANK ...)
Вместо подзапросов для поиска последнего или первого значения по группе можно использовать аналитическую агрегацию с
KEEP (DENSE_RANK ...)
. Это делает код короче и часто быстрее.📍 Пример: для каждой акции получить последнюю цену
select symbol,
max(price) keep (dense_rank last order by ts) as last_price,
max(ts) as last_ts
from trades
group by symbol;
📍 Первый тик за день:
select trunc(ts) as trade_day,
symbol,
min(price) keep (dense_rank first order by ts) as first_price
from trades
group by trunc(ts), symbol;
⚡ Плюсы:
- Нет лишних джоинов и подзапросов
- Работает прямо в GROUP BY
- Удобно для задач «последнее значение по группе»
👍6❤2🥰1🤨1
⚡️ SQL на Python: безопасные IN-списки без лимитов + потоковая выборка
Используй «расширяемые» параметры IN в SQLAlchemy + потоковую выборку — это безопаснее, быстрее и не бьёт по памяти. Вместо склейки списка ID в строку передай Python-список как параметр с
Используй «расширяемые» параметры IN в SQLAlchemy + потоковую выборку — это безопаснее, быстрее и не бьёт по памяти. Вместо склейки списка ID в строку передай Python-список как параметр с
expanding=True
: драйвер сам подставит нужное число плейсхолдеров и корректно закэширует план. Совмести это с итерацией по результатам (chunks) — и обрабатывай миллионы строк без OOM. Ставь лайк и подпишись на нас, каждый день мы публикуем полезные и не банальные советы для разработчиков.
pip install sqlalchemy pandas
from typing import Iterable, Sequence, Dict, Any
import pandas as pd
from sqlalchemy import create_engine, text, bindparam, tuple_
from sqlalchemy.engine import Engine, Result
# Пример: engine для Postgres/Oracle/MySQL и т.д.
# engine = create_engine("postgresql+psycopg://user:pass@host/db")
# engine = create_engine("oracle+oracledb://user:pass@tnsname")
def stream_query_in(engine: Engine, table: str, id_list: Sequence[int], chunk_rows: int = 50_000) -> Iterable[pd.DataFrame]:
"""
Потоково выбирает строки по большому списку ID:
- безопасно подставляет массив в IN (:ids) через expanding=True
- возвращает пачки DataFrame фиксированного размера (chunk_rows)
"""
# 1) Готовим SQL с расширяемым параметром
stm = text(f"SELECT * FROM {table} WHERE id IN :ids").bindparams(
bindparam("ids", expanding=True)
)
with engine.connect() as conn:
# 2) Выполняем запрос одним списком (драйвер сам развернёт IN)
result: Result = conn.execution_options(stream_results=True).execute(stm, {"ids": list(id_list)})
# 3) Потоково собираем фреймы по chunk_rows строк
batch = []
for row in result:
batch.append(dict(row._mapping))
if len(batch) >= chunk_rows:
yield pd.DataFrame.from_records(batch)
batch.clear()
if batch:
yield pd.DataFrame.from_records(batch)
def fetch_df_in(engine: Engine, table: str, id_list: Sequence[int]) -> pd.DataFrame:
"""Если нужен единый DataFrame — аккуратно склеиваем поток."""
frames = list(stream_query_in(engine, table, id_list))
return pd.concat(frames, ignore_index=True) if frames else pd.DataFrame()
# Пример использования:
# big_ids = range(1, 2_000_000)
# for df_chunk in stream_query_in(engine, "orders", big_ids, chunk_rows=100_000):
# process(df_chunk) # обрабатываем пачками без OOM
# Бонус: многоколонночный IN (tuple IN) без ручной генерации SQL
def stream_query_tuple_in(engine: Engine, table: str, pairs: Sequence[Dict[str, Any]]):
"""
pairs: [{ "country":"US", "city":"NYC" }, ...]
SELECT * FROM table WHERE (country, city) IN ((:country_1,:city_1), ...)
"""
stm = text(f"""
SELECT * FROM {table}
WHERE (country, city) IN :keys
""").bindparams(bindparam("keys", expanding=True))
# Подготовим данные как кортежи
key_tuples = [(p["country"], p["city"]) for p in pairs]
with engine.connect() as conn:
for row in conn.execution_options(stream_results=True).execute(stm, {"keys": key_tuples}):
yield dict(row._mapping)
# Пример:
# pairs = [{"country":"US","city":"NYC"}, {"country":"JP","city":"TOKYO"}]
# for rec in stream_query_tuple_in(engine, "warehouses", pairs):
# ...
❤5👍4🔥2
🚀 dumper — простой CLI для резервного копирования баз данных
Что это?
dumper — это утилита командной строки для создания бэкапов разных СУБД (PostgreSQL, MySQL и др.) с гибкой настройкой подключения и хранения. Инструмент ориентирован на разработчиков и админов, которым нужны быстрые и надёжные бэкапы.
Ключевые возможности:
- Поддержка нескольких СУБД.
- Гибкая конфигурация источников и мест хранения.
- Простота использования прямо из терминала.
Почему стоит обратить внимание:
- Лёгкая альтернатива тяжёлым системам бэкапов.
- Ускоряет рабочий процесс админов и devops.
- Надёжный инструмент для production и pet-проектов.
👉 Репозиторий: github.com/elkirrs/dumper
Что это?
dumper — это утилита командной строки для создания бэкапов разных СУБД (PostgreSQL, MySQL и др.) с гибкой настройкой подключения и хранения. Инструмент ориентирован на разработчиков и админов, которым нужны быстрые и надёжные бэкапы.
Ключевые возможности:
- Поддержка нескольких СУБД.
- Гибкая конфигурация источников и мест хранения.
- Простота использования прямо из терминала.
Почему стоит обратить внимание:
- Лёгкая альтернатива тяжёлым системам бэкапов.
- Ускоряет рабочий процесс админов и devops.
- Надёжный инструмент для production и pet-проектов.
👉 Репозиторий: github.com/elkirrs/dumper
🔥2❤1👍1
🎮 Учим SQL через захватывающую аркадную игру
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.
Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.
Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
❤4👍4🔥3
SQL — это не просто язык запросов, а ключ к управлению данными и поиску инсайтов. Хотите научиться писать эффективные запросы и работать с БД на продвинутом уровне? Мы научим этому с нашими опытными специалистами.
Если вы разработчик, SQL поможет вам лучше понимать структуру данных и взаимодействовать с аналитиками. Если аналитик — ускорит обработку данных и автоматизирует отчеты. На курсе разберем PostgreSQL, MySQL, SQL Server, научимся оптимизировать запросы и работать с большими объемами данных.
Освойте SQL и станьте ценным специалистом, который умеет не только извлекать данные, но и превращать их в мощный инструмент для бизнеса.
Оставьте заявку и получите скидку на обучение: https://tglink.io/72d4ed74ec67?erid=2W5zFJbiNbr
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Если вы разработчик, SQL поможет вам лучше понимать структуру данных и взаимодействовать с аналитиками. Если аналитик — ускорит обработку данных и автоматизирует отчеты. На курсе разберем PostgreSQL, MySQL, SQL Server, научимся оптимизировать запросы и работать с большими объемами данных.
Освойте SQL и станьте ценным специалистом, который умеет не только извлекать данные, но и превращать их в мощный инструмент для бизнеса.
Оставьте заявку и получите скидку на обучение: https://tglink.io/72d4ed74ec67?erid=2W5zFJbiNbr
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
✨ Возможности:
- Объединение и разделение файлов
- Поворот и обрезка страниц
- Перестановка и удаление страниц
- Интуитивный drag-and-drop интерфейс
Полностью опенсорс (GPL-3.0).
Идеален, если нужно быстро подготовить PDF к печати или презентации — без сложных настроек.
📌 GitHub
#PDF #opensource #Linux #devtools
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1