The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск DuckDB 0.10.0, варианта SQLite для аналитических запросов

18.02.2024 12:24

Представлен выпуск СУБД DuckDB 0.10.0, сочетающей такие свойства SQLite, как компактность, возможность подключения в форме встраиваемой библиотеки, хранение БД в одном файле и удобный CLI-интерфейс, со средствами и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, например, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц. Код проекта распространяется под лицензией MIT. Разработка пока находится на стадии формирования экспериментальных выпусков, так как формат хранилища пока не стабилизирован и меняется от версии к версии.

В DuckDB предоставляется расширенный диалект языка SQL, включающий дополнительные возможности для обработки очень сложных и длительно выполняемых запросов. Поддерживается использование сложных типов (массивы, структуры, объединения) и возможность выполнения произвольных и вложенных коррелирующих подзапросов. Поддерживается одновременное выполнение нескольких запросов, выполнение запросов напрямую из файлов в формате CSV и Parquet. Имеется возможность импорта из СУБД PostgreSQL.

Помимо кода оболочки из SQLite проектом используется вынесенный в отдельную библиотеку парсер из PostgreSQL, компонент Date Math из MonetDB, своя реализация оконных функций (на базе алгоритма Segment Tree Aggregation), обработчик регулярных выражений на основе библиотеки RE2, собственные оптимизатор запросов, MVCC-механизм управления одновременным выполнением заданий (Multi-Version Concurrency Control), а также векторизированный движок выполнения запросов на базе алгоритма Hyper-Pipelining Query Execution, позволяющий в одной операции разом обрабатывать большие наборы значений.

Среди изменений в новом выпуске:

  • Значительно увеличена производительность разбора данных в формате CSV. Например, чтение CSV-файла с 11 млн строк в новой версии сократилось с 2.6 сек. до 1.15 сек., а выполнение операции "SELECT COUNT(*)" поверх CSV-файла с 1.8 сек. до 0.3 сек.
  • Добавлена поддержка массивов фиксированного размера, которые напоминают списки, содержащие фиксированное число элементов ("CREATE TABLE vectors(v DOUBLE[3]);").
  • Добавлена поддержка подключения к СУБД MySQL, PostgreSQL и SQLite, что позволяет загружать в DuckDB данные из внешних СУБД и перемещать их между разными системами. Обращение к внешним БД осуществляется с использованием типовых таблиц.
    
       ATTACH 'postgres:dbname=postgresscanner' AS postgres;
       SELECT title, release_year, length FROM postgres.film LIMIT 5;
    
  • Добавлена поддержка выражения "COMMENT ON" для сохранения комментария об объекте в БД.
  • Добавлена поддержка выражения "COPY FROM DATABASE" для копирования всего содержимого из одной БД в другую.
  • Добавлена поддержка модификатора "ALL" в выражениях EXCEPT и INTERSECT.
  • Реализован тип "UHUGEINT" (UINT128, беззнаковое 128-разрядное целое).
  • Добавлена экспериментальная поддержка шифрования Parquet.
  • Добавлены новые функции parquet_kv_metadata, parquet_file_metadata, read_text, read_blob, list_reduce, list_where, list_zip, list_select, list_grade_up.
  • Добавлен Secrets Manager для безопасного хранения учётных данных, таких как ключи для обращения к хранилищам Amazon S3, Google Cloud Storage, Cloudflare R2 и Azure Blob Storage. Учётные данные сохраняются в файле ~/.duckdb/stored_secrets.
  • Добавлен менеджер временной памяти, координирующий работу операций, приводящих к использованию временных файлов из-за нехватки оперативной памяти, а также позволяющий определить лимиты на расходование оперативной памяти, после исчерпания которых включаются файлы подкачки.
  • Добавлена поддержка адаптивного сжатия чисел с плавающей запятой (ALP, Adaptive Lossless Floating-Point Compression), позволяющая заметно сократить размер хранилища. Например, включение ALP позволило уменьшить размер БД с 489 MB до 184 MB, ценой увеличения времени прохождения теста с 0.316 до 0.434 сек.
  • В CLI-интерфейсе по умолчанию включена поддержка многострочного редактирования, улучшена подсветка синтаксиса, улучшено наглядное выделение ошибок.
  • При вызове функций по умолчанию отключено автоматическое неявное преобразование типов в VARCHAR (например, теперь не сработает вызов "substring(42, 1, 1)" вместо "substring('42', 1, 1)") в пользу обязательного явного приведения типов.
  • Разделены числовые и строковые литералы. Числовые литералы (INTEGER_LITERAL) могут неявно преобразовываться только в целочисленный тип, а строковые (STRING_LITERAL) могут неявно преобразовываться в любой другой тип.


  1. Главная ссылка к новости (https://duckdb.org/2024/02/13/...)
  2. OpenNews: Выпуск DuckDB 0.9.0, варианта SQLite для аналитических запросов
  3. OpenNews: Опубликован PRQL, компилируемый в SQL язык обработки данных
  4. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
  5. OpenNews: Проекты CBS и sqld развивают облачный и серверный варианты SQLite
  6. OpenNews: Выпуск СУБД SQLite 3.45
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60621-duckdb
Ключевые слова: duckdb, sqlite, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:54, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Разработчики из поисковика DuckDuckGo?
     
     
  • 2.2, Аноним (2), 13:17, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет. "DuckDB is maintained by Dr. Mark Raasveldt & Prof. Dr. Hannes Mühleisen. DuckDB’s initial development took place at the Database Architectures Group at the Centrum Wiskunde & Informatica (CWI) in Amsterdam, The Netherland"
     
     
  • 3.7, Аноним (7), 14:26, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >Prof. Dr. Hannes Mühleisen.

    Интересно конечно и профессор и доктор сразу.

     
     
  • 4.22, ы (?), 17:29, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А для вас докто - это врач, да?
     
     
  • 5.30, Аноним (30), 18:36, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да.
     
  • 3.41, Аноним (41), 00:55, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Интересно, он сам код писал или припахал студентов "за оценки" чтобы нагло стырить результаты их работы и выдать за своё?
     
     
  • 4.51, Аноним (-), 15:01, 19/02/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     

  • 1.4, михаилка (?), 13:38, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    И зачем это нужно, когда есть clickhouse-local, который 1) умеет примерно все (без шуток) 2) делает это с несравнимо более хорошей производительностью
     
     
  • 2.5, Аноним (5), 13:49, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ...Ты серьёзно предлагаешь БД для хранения гигабайтов данных использовать вместо склайта?
     
     
  • 3.16, Аноним (16), 15:52, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Т.е. не подходит для хранения сотен терабайт данных, как скулайт? Вообще, я заметил, что мало кто может конкурировать со скулайтом в этом, в том числе, это касается большинства проприетарных бд.
     
  • 3.28, михаилка (?), 18:25, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    кликхаус - это не только БД для хранения гигабайтов данных. это еще и инструмент (который может работать без сервера в clickhouse-local), который позволяет делать сложные запросы читать (да и писать) примерно из любого формата в данных (от файла с CSV до postgresql и parquet на s3) и делать это в общем случае быстрее любых других инструментов.
     
  • 2.13, Аноним (13), 15:49, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Кликхаус проприетарь, сабж нет
     
     
  • 3.26, михаилка (?), 18:18, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эмм, кликхаус под apache, сабж под mit
     
  • 2.19, похъ (?), 17:11, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    он умеет все исключительно на бумаге. А на деле умеет только сегфолтиться на любом ровном месте.
    Или просто не работать.

    Не говоря уже о разнице между базкой для time-value записей и базой для аналитики - из первой никто и никогда никаких сложных запросов делать не будет.

     
     
  • 3.27, михаилка (?), 18:21, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > он умеет все исключительно на бумаге. А на деле умеет только сегфолтиться на любом ровном месте.
    > Или просто не работать.

    ога, конечно

    > Не говоря уже о разнице между базкой для time-value записей и базой для аналитики - из первой никто и никогда никаких сложных запросов делать не будет

    а где вы увидели time-value записей? и то, и другое - OLAP

     
  • 2.59, Аноним (59), 21:33, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    CH мало чего умеет из списка. Это сильно специализированная СУБД, не подходит для многих видов работ
     

  • 1.6, Аноним (6), 14:13, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А возможна ли прозрачная замена libsqlite на встраиваемую либу этой дакдб? Чтобы в системе просто заменить — и всё её юзало, в том числе все питоньи приложения через обычный import sqlite3, с дополнительными фичами — через SQL-запросы.
     
     
  • 2.17, Аноним (16), 16:33, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет надежды, для начала пришлось бы переписать её с плюсов на си.
     
     
  • 3.55, Аноним (55), 18:42, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Звездеть — не мешки ворочать.

    >We also provide a SQLite API wrapper which means that if your applications is programmed against the SQLite C API, you can re‑link to DuckDB and it should continue working. See the sqlite_api_wrapper folder in our source repository for more information.

    Можно.

     
     
  • 4.56, Аноним (16), 18:55, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если у плюсов нет аби (до сих пор!), так о чём можно говорить? Замена уже никак не получится.
     
     
  • 5.57, Аноним (57), 19:14, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    libsqlite - это сишная биба, не плюсовая.
     
     
  • 6.58, Аноним (16), 19:29, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > libsqlite - это сишная биба, не плюсовая.

    Ты всё правильно понял.

     
     
  • 7.61, Аноним (61), 03:18, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что сказать-то хотел, сишник ты наш? Любая плюсовая обычная функция может быть экспортирована как сишная через extern "C".
     
     
  • 8.62, Аноним (-), 06:28, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот поэтому плюсы не нужны ... текст свёрнут, показать
     

  • 1.8, Аноним (7), 14:28, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так и не понял в чем уникальное торговое предложение (УТП) сабжа.
     
     
  • 2.14, Аноним (13), 15:50, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Встраемавая бд для аналитических запросов
     

  • 1.9, Аноним (7), 14:29, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Какая база данных лучше всего, почему, какую выбрать?
     
     
  • 2.33, Вы забыли заполнить поле Name (?), 19:53, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    От задачи зависит. Универсальных нет. Пойми свой workload, потом выбирай.
     
  • 2.40, Баба Ванга (?), 21:57, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для тебя — MS Access.
     
     
  • 3.64, Anonim (??), 11:05, 21/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В Access можно искать семантические циклы, но ... только до семи вложений. Не имею опыта - в других SQL системах есть такая опция как "копия таблицы"?
     
  • 2.44, Аноним (44), 08:57, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    текстовый файл
     

  • 1.10, penetrator (?), 14:50, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > DuckDB is a fast in-process analytical database

    кто-нибудь может объяснить это как?

    олап кубы это же подготовили в фоне для будущего массивного чтения

    а что делать если это в пределах моего процесса? т.е. скрыть наличие еще одной базы? и стучаться к локальному файлу? а зачем?

    что я не понял?

     
     
  • 2.23, Аноним (-), 17:45, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >олап кубы это же подготовили

    Ты где-нибудь рабочие olap-системы вживую видел? У меня вот в вузе одна такая была, сервер насиловали одновременно 30 человек и было проще стянуть базу и сделать дома, чем насиловать в 30 рыл один сервер за 40 минут, когда запрос проходил за 20. Дома этот запрос на sqlite проходил за пять - никто не насиловал диск в 30 рыл.

     
     
  • 3.31, penetrator (?), 19:27, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    так может это не OLAP? а OLTP?

    странная оптимизация под запросы, если он потом выполняется 20 минут

     
  • 3.39, Аноним (39), 21:39, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У нас был redshift на aws проекте, было норм как data lake
     
  • 3.42, Аноним (39), 05:37, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Дак ты сравнил тоже. Российские вузы в среднем неплохо обучают фундаменталке, что не мешает им быть рассадником профнепригодного технического персонала, сроду не имевшего опыта работы в коммерческих IT-компаниях, в силу чего уровень администрирования чего-либо в вузах чудовищно убог.
     
     
  • 4.45, Аноним (-), 10:06, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Дак ты сравнил тоже. Российские вузы в среднем неплохо обучают фундаменталке

    В среднем по России образование отсталое. И обучают фундаменталке плохо.

     
     
  • 5.47, Аноним (39), 10:24, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дискретке и алгоритмам обучают нормально, всякие нейросети студенты сами осилят
     
     
  • 6.48, Витюшка (?), 10:48, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нейросетям обучают офигенно.

    Особенно в ВШЭ, я сам туда как-то планировал поступать на Machine Learning в магистратуру. Но потом передумал (уже специалист).

    В МФТИ скорее всего очень хорошо обучают, в МГУ.

    Есть офигенный курс по Deep Learning от НГУ, кажется. Его читал мужчина прямо из Кремниевой Долины (наш, русский).

    А так... в каком-нибудь Арканзасском Университете ничерта не обучают нейронкам нормально тоже.

    Более того смотрел лекции и слайды от топовых мировых университетов американских. Там там просто ужас и кошмар, разобраться в этом невозможно. В общем зависит от курса к курсу.

     
     
  • 7.49, Бывалый Смузихлёб (ok), 11:44, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А так... в каком-нибудь Арканзасском Университете ничерта не обучают нейронкам нормально
    > тоже.
    > Более того смотрел лекции и слайды от топовых мировых университетов американских. Там
    > там просто ужас и кошмар, разобраться в этом невозможно. В общем
    > зависит от курса к курсу.

    А зачем им это с махрово-платным образованием ?
    Чем лучше открытые курсы и лекции - тем меньше смысла студенту брать кредит( который не спишут при банкротстве ) и дарить деньги ВУЗу

     
     
  • 8.52, Витюшка (?), 15:22, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю, но образование ты таким образом не получишь Как минимум нет экзаменов ... текст свёрнут, показать
     
  • 5.50, Бывалый Смузихлёб (ok), 11:53, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В среднем по России образование отсталое. И обучают фундаменталке плохо.

    Это смотря кто и как считает
    Некоторые любят рассказывать сказки про американское супер-образование, но, почему-то огромное количество идей и достижений получается за счёт приезжих 1-2 поколения( бСССР / азия )
    Тогда как итогом чисто американского образования( 2+ поколение жителей штатов ) является исчезающе-малое количество открытый, наработок и прочего

     
     
  • 6.54, Аноним (-), 18:34, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В твоём сообщении смешаны времена, люди и кони 1 Советское Российское образова... большой текст свёрнут, показать
     
  • 2.43, Витюшка (?), 08:15, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    OLAP кубы - это древняя технология. Попытка добавить аналитику в OLTP (row-store) базы данных. Нужно заранее их готовить, на конкретные запросы.

    Сейчас хотят из коробки иметь аналитические запросы. Для этого и создали OLAP (column-store) базы данных.

    Там на индексы пофиг, на транзакции пофиг (в целом). Главное иметь быстрый table scan - сканирование всей таблицы с диска. И читать только несколько колонок (для этого и сделали column-store хранилище).

     

  • 1.15, Аноним (13), 15:51, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Проблема у неё та же, что и у склайт: может только в один процесс.
     
     
  • 2.21, swarus (ok), 17:20, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    уточняй insert update в один процесс (да и то если один закрыл файл-базу, то другой может продолжить), чтение в сколько хочешь
     

  • 1.18, Аноним (18), 17:00, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Учётные данные сохраняются в файле ~/.duckdb/stored_secrets

    Расскажите им кто-нибудь про XDG Base Directory Specification.

     
     
  • 2.32, Витюшка (?), 19:28, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы какой-нибудь дурачок потом переписал файлы в этих директориях и повредил базу данных?

    Уверен сами дистрибутивы (и пакеты которые они предоставляют) НЕ используют и применяют эту спецификацию. Кто во что горазд.

    И сегодня твоя $XDG_DATA_HOME выставлена, а завтра нет (или по дефолту указывает на другую директорию, или просто указывает на другую директорию).

    И тютю твоя база данных. Удачи тебе собрать все компоненты теперь (файлы таблиц, файлы индексов, write-ahead log, и ещё кучу всего).

    А также удачи упаковать всё в один архив (для бэкапа) и т.п.

    Snap и Flatpak тоже так не работают.

     
     
  • 3.34, Вы забыли заполнить поле Name (?), 19:54, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Уверен сами дистрибутивы (и пакеты которые они предоставляют) НЕ используют и применяют эту спецификацию. Кто во что горазд.

    Если бы это было так, то директория $HOME/.config/ была бы пустой.

     
     
  • 4.36, Витюшка (?), 20:04, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я не говорю что полностью не используют. Но помимо этой директории появляется куча своих. Даже у neovim свои директории, у VS Code, у кучи консольных утилит.
     
     
  • 5.38, Аноним (16), 20:18, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > кучи помойных утилит

    исправил

     
  • 3.46, Аноним (-), 10:09, 19/02/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

  • 1.24, голос из леса (?), 17:59, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >> формат хранилища пока не стабилизирован и меняется от версии к версии.

    Ну то есть кроме идеи самого главного еще и нет. даю 95% что не взлетит.

     
     
  • 2.25, похъ (?), 18:06, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    оно изначально затевалось для работы с чужими данными (внезапно - один из форматов - csv) выгружаемыми откуда-то где нельзя трахать сервер аналитикой за полтора квартала. Внутренний формат можно при этом  переделывать для лучшей оптимизации сколько угодно.

     

  • 1.29, Витюшка (?), 18:33, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Шикарная передовая база данных. Очень интересная. Передовые структуры данных и алгоритмы.

    База данных нового поколения.

     
     
  • 2.35, Вы забыли заполнить поле Name (?), 19:56, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Передовые структуры данных и алгоритмы.

    Можно примеры?

     
     
  • 3.37, Витюшка (?), 20:12, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я всё не знаю, но видел их презентации и исследования немного.

    Например Partitioned Attributes Across (PAX) формат хранения данных. Такой гибрид row-store и column-store.

    В классических column-store базах данных каждая колонка хранится в отдельном файле. И чтобы собрать строчку из 20-30 столбцов, нужно прочитать отдельно все эти 20-30 столбцов.

    Многое у них в блоге можно посмотреть. Performance у них очень хороший.

    Читал про адаптивные индексы (деталей не помню и не могу сказать имплементировы они или нет).

    Но это целая научная группа, эксперты в базах данных. Альтернатив особо нет. У sqlite выигрывает вчистую (column-store позволяет сжимать данные одного типа хорошо, например, там много интересных оптимизаций в отличии от row-store (sqlite), тот же SIMD и т.п.)

     

  • 1.60, Аноним (60), 00:31, 20/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сначала подумал, что кто-то сделал форк с обвесами. Смотрю, а вот на гитхабе и вебсайте у них нет ни единой отсылки на скулайт. Всё своё, видимо.

    Должен заметить, что их релизная либа .so занимает толстенные 49MiB, в то время как старый добрый sqlite довлеет только на полторушку, так что я бы десять раз подумал о том, что а зачем оно мне.

     
  • 1.65, nc (ok), 09:23, 22/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересный проект. Я вот сейчас пишу на Go свой проект для исследования социального графа соцсетей, база на sqlite. При размере базы в несколько гигов уже стало подтормаживать, а ведь это не предел, по идее база может  быть и больше.
    Но обертка для Go к этому вряд ли в ближайшее время появится.
     
     
  • 2.67, ibnteo (ok), 00:06, 06/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https://duckdb.org/docs/api/go
     

  • 1.66, Аноним (66), 01:52, 27/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прочитал доку Вердикт 8212 мусор, написанный в процессе детской игры разраба... большой текст свёрнут, показать
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру