van egy tudományos adatbázisom, amely jelenleg 4 300 000 rekordot tartalmaz. Ez egy tudományos adatbázis, és egy API táplálja. 2020 júniusában valószínűleg körülbelül 100 000 000 rekordom lesz.

ez a táblázat kimenetének de elrendezése’:

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, ez dummy data. De a kimenet egy 5 oszlopos táblázat: ID, sensor_ID, speed, velocity and direction.

amit el akarok érni, az egy tisztességes lapozási és szűrési módszer. Szeretnék létrehozni egy weboldalt (nodejs – ben), ahol ez a +4 000 000 rekord (egyelőre) megjelenik, oldalanként 10 000 rekord. Azt is szeretném, hogy képes legyen szűrni sensor_ID, sebesség, sebesség vagy irány.

jelenleg ez a lekérdezés az egyes sorok kiválasztására szolgál:

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...

néhány információt/tippet keresek egy tisztességes lapozási módszer létrehozásáról. Egyelőre még mindig csendes gyors, ahogy én csinálom, de azt hiszem, sokkal lassabb lesz, amikor +50 000 000 rekordot érünk el.

először is ezt az oldalt találtam: https://www.citusdata.com/blog/2016/03/30/five-ways-to-paginate/. Érdekel a kulcskészlet lapozása. De hogy őszinte legyek, fogalmam sincs, hogyan kezdjem.

mit kell tennem:

hozzon létre egy indexet az ID-mezőben:

CREATE UNIQUE INDEX index_id ON output USING btree (ID)

ezt az oldalt is találtam: https://leopard.in.ua/2014/10/11/postgresql-paginattion. Amikor lefelé görget a “Improvement #2: The Seek Method” pontra, láthatja, hogy elvetették az OFFSET-záradékot, és WHERE-záradékot használnak. Azt is látom, hogy a lekérdezésben az utolsó beszúrási azonosítót használják:

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

nem teljesen értem ezt. Az első oldalhoz szükségem van a legutolsó beszúrási azonosítóra. Aztán elhozom a 10.000 legújabb lemezt. De ezt követően a második oldal megszerzéséhez nem a legutolsó beszúrási azonosítóra van szükségem, hanem a 10 000.utolsó beszúrási azonosítóra (azt hiszem).

tud valaki adni nekem egy jó magyarázat a lapozás és a szűrés egy gyors módja.

az általam használt dolgok:- postgresql – pgadmin (adatbázis – kezeléshez) – csomópont.js (legújabb verzió)

Köszönöm mindenkinek! Szép 2020-at!

EDIT 1: fogalmam sincs, de lehet massiveJS (https://massivejs.org/) valami jó használni? Minden lekérdezésnél használjam, vagy csak a lapozási lekérdezéseknél?

2. szerkesztés: Azt hiszem, egy kicsit kitaláltam (javítson ki, ha tévedek).

tegyük fel, hogy 100 000 rekordom van:

1) Szerezd meg az utoljára beillesztett azonosítót

2) Használja ezt az utoljára beillesztett azonosítót az utolsó 10 000 rekord letöltéséhez

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) mutassa meg a 10 000 rekordot, de mentse el a következő lekérdezésben használni kívánt 10 000 rekord beszúrási azonosítóját is

4) szerezze be a következő 10 000 rekordot az új Utolsó beszúrási azonosítóval

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

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.