minulla on tieteellinen tietokanta, jossa on tällä hetkellä 4 300 000 tallennetta. Se on tieteellinen tietokanta, jota API syöttää. Kesäkuussa 2020 minulla on todennäköisesti noin 100 000 000 levyä.

this is de layout of the table ”output’:

ID | sensor_ID | speed | velocity | direction-----------------------------------------------------1 | 1 | 10 | 1 | up2 | 2 | 12 | 2 | up3 | 2 | 11.5 | 1.5 | down4 | 1 | 9.5 | 0.8 | down5 | 3 | 11 | 0.75 | up...

btw, tämä on valetietoa. Mutta lähtö on taulukko, jossa on 5 saraketta: ID, sensor_ID, nopeus, nopeus ja suunta.

haluan saavuttaa kunnollisen sivutus-ja suodatusmenetelmän. Haluan luoda sivuston (nodejs), jossa tämä +4,000,000 tietueet (nyt) näytetään, 10,000 tietueet per sivu. Haluan myös pystyä suodattamaan sensor_ID, nopeus, nopeus tai suunta.

tällä hetkellä minulla on tämä kysely tiettyjen rivien valitsemiseksi:

SELECT * FROM output ORDER BY ID DESC OFFSET 0 LIMIT 10000 // first 10,000 rowsSELECT * FROM output ORDER BY ID DESC OFFSET 10000 LIMIT 10000 // next 10,000 rows...

etsin joitakin tietoja / vinkkejä luoda kunnollinen sivutus menetelmä. Toistaiseksi on vielä hiljaista vauhdilla, mutta uskon, että se on paljon hitaampaa, kun lyömme +50 000 000 levyä.

ensinnäkin löysin tämän sivun: https://www.citusdata.com/blog/2016/03/30/five-ways-to-paginate/. Olen kiinnostunut keysetin sivusta. En tiedä, mistä aloittaa.

What I think I must do:

Create an index on the ID-field:

CREATE UNIQUE INDEX index_id ON output USING btree (ID)

löysin myös tämän sivun: https://leopard.in.ua/2014/10/11/postgresql-paginattion. Kun vierität alas kohtaan ”Improvement #2: The Seek Method”, voit nähdä, että he pudottivat OFFSET-lausekkeen ja käyttävät missä-lauseketta. Näen myös, että he käyttävät viimeistä insert ID: tä kyselyssään:

SELECT * FROM output WHERE ID < <last_insert_id_here> ORDER BY ID DESC LIMIT 10000

en ymmärrä tätä täysin. Ensimmäiselle sivulle, tarvitsen aivan viimeinen lisää ID. Sitten haen 10 000 uusinta levyä. Mutta sen jälkeen, saada toinen sivu, en tarvitse aivan viimeinen lisää ID, tarvitsen 10,000 TH viimeinen lisää ID (kai).

Voiko joku antaa minulle hyvän selityksen sivuuttamisesta ja suodattamisesta nopealla tavalla.

the stuff I ’ m using: – postgresql – pgadmin (for database management) – node.js (uusin versio)

Kiitos kaikille! Ja mukavaa vuotta 2020!

EDIT 1: minulla ei ole hajuakaan, mutta voisiko massivejistä (https://massivejs.org/) olla jotain hyvää hyötyä? Ja pitäisikö minun käyttää sitä kaikissa kyselyissä, vai vain sivunumerokyselyissä?

EDIT 2: Luulen, että sain sen selvitettyä hieman (korjaa, jos olen väärässä).

Let ’ s say I have 100,000 records:

1) Get The last inserted ID

2) Use this last inserted ID to fetch the last 10,000 records

SELECT * FROM output WHERE ID < 100000 ORDER BY ID DESC LIMIT 10000 // last insert ID is here 100,000 because I have 100,000 records

3) Näytä 10 000 tietuetta, mutta tallenna myös tietueen 10 000 lisätunniste, jota käytetään seuraavassa kyselyssä

4) Hanki seuraavat 10 000 tietuetta uudella viimeisen lisäyksen id: llä

SELECT * FROM output WHERE ID < 90000 ORDER BY ID DESC LIMIT 10000 // 90,000 is the very last insert id - 10,000

Vastaa

Sähköpostiosoitettasi ei julkaista.