Непрерывное представление PIpelineDB с оболочкой внешних данных mysql

Когда я завершаю потоковое соединение с чужой таблицей, я получаю разные результаты по сравнению с тем, когда я соединяю непрерывное представление с внешней таблицей. Два запроса, которые я ожидал бы быть одинаковыми, кажутся разными. Влияет ли задержка между моим локальным экземпляром конвейера и таблицей в fdw на мое соединение с непрерывным потоком? Я пытаюсь агрегировать rx_bytes и tx_bytes baesd для идентификатора сторонней таблицы.

Я использую mysql_fdw из последних

https://github.com/EnterpriseDB/mysql_fdw

  1. Создать чужую таблицу

    CREATE EXTENSION mysql_fdw;
    
    CREATE SERVER local_mysql
        FOREIGN DATA WRAPPER mysql_fdw
        OPTIONS (host 'localhost', port '3306', secure_auth 'true');
    
    CREATE USER MAPPING FOR pipeline
        SERVER local_mysql 
        OPTIONS(username 'username', password 'password');
    
    CREATE FOREIGN TABLE "foo_instance" (
         "id" bigint,
         "foo_id" bigint,
    )
    SERVERlocal_mysql
    OPTIONS(dbname 'schema', table_name 'foo_instance');
    
  2. Я ожидаю, что после 10 вставок эти два запроса дадут одинаковые результаты:

а)

    CREATE CONTINUOUS VIEW total_bytes
    AS SELECT date_trunc('minute', time_stamp::timestamp) AS minute,
        id::integer,
        sum(tx_bytes::bigint) AS tx_bytes,
        sum(rx_bytes::bigint) AS rx_bytes
     FROM byte_count_stream GROUP BY minute, id;

    SELECT minute, sum(tx_bytes) AS tx_bytes, sum(rx_bytes) AS rx_bytes, foo_id 
    FROM total_bytes JOIN foo_instance 
         ON total_bytes.id=foo_instance.id GROUP BY minute, foo_instance.foo_id;

           minute        | tx_bytes | rx_bytes | foo_id 
    ---------------------+----------+----------+---------
     2016-02-22 09:04:00 |      450 |      513 |    7939
     2016-02-22 09:04:00 |     2762 |     2210 |    7940
     2016-02-22 09:04:00 |      143 |      332 |    7941
     2016-02-22 09:04:00 |      371 |     1042 |    7942
     2016-02-22 09:04:00 |      865 |      987 |    7943
     (5 rows)

б)

    CREATE CONTINUOUS VIEW joined_foo_total_bytes
        AS SELECT date_trunc('minute', byte_count_stream.time_stamp::timestamp) AS minute,
            sum(byte_count_stream.tx_bytes::bigint) AS tx_bytes,
            sum(byte_count_stream.rx_bytes::bigint) AS rx_bytes,
            foo_instance.foo_id
        FROM byte_count_stream JOIN foo_instance ON byte_count_stream.id::integer = foo_instance.id
        GROUP BY minute, foo_instance.foo_id;



    pipeline=# select * from joined_user_total_bytes;       
           minute        | tx_bytes | rx_bytes | foo_id 
    ---------------------+----------+----------+---------
     2016-02-22 09:04:00 |      371 |     1042 |    7942
     2016-02-22 09:04:00 |      143 |      332 |    7941
     2016-02-22 09:04:00 |      865 |      987 |    7943
     2016-02-22 09:04:00 |     2762 |     2210 |    7940
     (4 rows)

Очевидно, что результаты не совпадают. Я могу выполнить соединение из непрерывного представления с внешней таблицей, но предпочел бы использовать потоковое соединение.

0 ответов

Другие вопросы по тегам