title

text

Andrey Borodin
Andrey Borodin Яндекс.Облако
11:00 26 October
45 мин

CREATE INDEX CONCURRENTLY implementation details

From the very beginning of 2021, I'm fixing a bug in CREATE INDEX CONCURRENTLY. This bug manifests extremely seldom. I could not find any traces of it in mailing lists ever since the introduction of the feature in 8.2. Yet the bug affected our systems, so I decided to fix it. This is how the9i detective bug-hunting story started. In this story, I'll share details of the implementation of transactions and lock mechanics.

Слайды

Бородин Андрей - Детали реализации CREATE INDEX CONCURRENTLY.pptx

Другие доклады

  • Ivan Muratov
    Ivan Muratov ООО "Первая Мониторинговая Компания"
    45 мин

    TimescaleDB 2.0 - Time-series data in TimescaleDB distributed cluster on top of PostgreSQL ORDBMS.

    TimescaleDB extension allows to turn good old Postgres into a real distributed cluster for storing time series data while maintaining the relational model, convenient SQL and a time-tested ecosystem. And additional features such as continuous materialized views and data compression allow to build truly powerful telematic hubs.

  • Nikita Levchenko
    Nikita Levchenko ПАО «Ростелеком»
    Yuriy Plotnikov
    Yuriy Plotnikov ООО «РТК ИТ»
    45 мин

    From Oracle to Postgres using Russian rails. Non-obvious nuances

    We'll discuss our approaches to picking technical solutions for the systems we design. We'll consider their advantages and limitations. We'll share the facts about the changes in our engineering culture when import substitution requirements came into effect. We migrated the system with a classical three-tier architecture from Oracle to Postgres Pro DBMS. In my presentation I'll pay attention to data migration tools and peculiarities of development Java/Kotlin apps and SQL interoperability between two DBMSs.

  • Alexey Fadeev
    Alexey Fadeev Sibedge
    90 мин

    Plv8 Framework: plv8 development in IDE with ES6, debugging, autotests and deployment

    Many application developers prefer not to have logic on the DB side (in functions) as there are no suitable software development tools, especially for development teams. In the plv8 case, the situation worsens as this function contains both SQL and JavaScript code, and popular IDEs have no support for such a symbiosis. At this tutorial, I will introduce my development named "Plv8 Framework", which considerably simplifies the creation of code on plv8.

    The gist is as follows: the JS code that is executed on the DB side can run on the developer's local computer by using node.js, which works on the same v8 interpreter. The plv8.execute special function is replaced by a function from the pg-native npm library, which calls the outer DBMS. I will demonstrate a set of tools chosen by me that enables the following:
    - writing JS code in the IDE you prefer and enjoy syntax highlight;
    - code debugging in real time (with breakpoint, watch, etc.);
    - writing of auto-tests (unit-tests), with a variety of options: Postgres, SQLite, mocks;
    - deploying your code in the DBMS;
    - usage of additional npm packages (the issue is that all code of the plv8-based function should be included in the function's body, in one file).

    You can use this tool regardless of the programming language that you use for the backend. However, it becomes more flexible if you use languages with static typing (like Java, C#, etc.). For the tasks where the backend is an intermediate layer between the frontend and DBMS, logic (or its part) can be placed in plv8/js with dynamic typing, which will simplify the development process.

    In addition to the development of new functions on plv8, the framework provides a set of ready-made functions for CRUD operations. These functions are universal, they aren't tied to a certain database structure, and they can work in any project. If you use them, you can do less backend development, in some projects to a very significant extent.

    The installation of the plv8 extension is the most complicated part of working with it. However, I have good news: my colleagues prepared Docker files and Docker images for PostgreSQL 13 with pre-installed plv8! So your start with plv8 will be super simple: you need to deploy the Docker container using just one command!
    Docker file: PostgreSQL 13 + plv8 v2.13.15
    Demo project for you to participate in the tutorial
    For the tutorial, you need to install the following:
    Node.js (the most desirable is LTS)
    IDE for JS (i.e., free Visual Studio Code)
    GraphQL Playground

  • Sergey Pronin
    Sergey Pronin Percona
    45 мин

    PostgreSQL Disaster Recovery in Kubernetes

    Running PostgreSQL in Kubernetes became a common theme with the rise of the operators. In this talk, we will show you how easy it is to deploy a highly available PostgreSQL cluster in Kubernetes with Operator. We will also show how to prepare for the failure of a data center by running a hot-standby cluster on a DR site.