Eredmény: 1 - 6 (6) összesen

Téma: adatbazis archivalas es visszaolvasas

  1. #1
    Bölcs
    Csatlakozott
    11-03-05
    Hely
    UK
    Hozzászólás
    500
    Begyűjtött 66 köszönetet
    52 hozzászólásával

    Alapbeállítás adatbazis archivalas es visszaolvasas

    Egy projecten dolgozok (php/mysql), ami eladasokat, log-okat...stb kezel/tarol. Az adatbazist adott idokozonkent (pl havonta) archivalni kellene, viszont fontos, hogy az archivumbol visszakereshessek adatokat ugyanugy mintha az "elo" adatbazisbol keresnek. Szoval ha mult honap eladasait learchivaltam, akkor is kepesnek kell lennem lekerni a mult honapbol 5 napot es a jelenlegibol 5 napot egyben.
    Dump-olni akartam az adabazist, es visszatolteni egy temp adatbazisba majd unionnal lekerdezni, de nincs erre valami szebb/gyorsabb megoldas?
    Es azt sem tudom megoldani, hogy egyszerre tobb archiumbol es az elo adatbazisbol is lekerhessek egyszerre.


    Utoljára módosítva: frankcrk által : 2014-10-11 18:34
    Notex az online notesz, linkkatalógus, tartalommegosztó és még sok más...

  2. #2
    Bölcs
    Csatlakozott
    07-08-28
    Hozzászólás
    1.024
    Begyűjtött 146 köszönetet
    105 hozzászólásával

    Alapbeállítás re: adatbazis archivalas es visszaolvasas

    A mysql tud olyan hogy partition, ezen belül is dátum tipusú particionálást. Ha ezt megcsinálod, akkor logikailag 1 táblába kerülnek a dolgaid, fizikailag pedig több táblában tárolódnak. Igy ha a megfelelő adatbázis lekérdezés esetén mindig csak az adott darabból kérdez le a rendszer.

    Ezzel eléred, hogy a folyamatban lévő dolgok gyorsak legyenek, viszont nem veszted el a hisztorikus adatokhoz való hozzáférést.

    Ha ez a funkció számodra nem elérhető, akkor marad a régi módszer.

    Lessz egy adat táblád amiben tartod az utolsó x nap adatit.
    Lessz egy pár adat_2014_xx táblád ahol a régi adatokat tartod.
    Lessz egy adat_index táblád, amiben pedig a létrehozott táblákat tartod, az első és az utolsó rekord dátumával kiegészítve.
    Egy cronjob minden reggel átmozgatja a már nem aktuális adatokat az adat táblából az adat_2014_xx -be, majd törli őket az adat-ből és frissiti az adat_index tábládat.

    A lekérdezés pedig mehet egy php függvényen keresztül ami a szükséges elemeket egy union-al össze fűzi.

    Azonban felmerül a kérdés, hogy miért van erre szükséged. A mysql még myisam esetében is igen jól elvan 20-40 millió sorral egy táblában, az innodb pedig ennél is jobban teljesit, ha be van, kapcsolva, hogy minden tábla külön file. Persze ha nagy text mezőket és blobokat használsz, akkor drasztikusan vissza esik a teljesítmény.



  3. Az alábbi felhasználók hálásak a válaszért:

    frankcrk (2014-10-11)

  4. #3
    Bölcs charlie logója
    Csatlakozott
    09-11-23
    Hely
    Budapest
    Hozzászólás
    1.477
    Begyűjtött 362 köszönetet
    282 hozzászólásával

    Alapbeállítás re: adatbazis archivalas es visszaolvasas

    Vagy ott van még az ARCHIVE tábla típus, direkt ilyen célra. Ezt csak olvasni lehet, viszont nem tárolja a memóriába, csak diszken.



  5. Az alábbi felhasználók hálásak a válaszért:

    frankcrk (2014-10-11)

  6. #4
    Bölcs
    Csatlakozott
    11-03-05
    Hely
    UK
    Hozzászólás
    500
    Begyűjtött 66 köszönetet
    52 hozzászólásával

    Alapbeállítás re: adatbazis archivalas es visszaolvasas

    Idézet TLoF eredeti hozzászólása Hozzászólás megtekintése
    Azonban felmerül a kérdés, hogy miért van erre szükséged.
    Ezt most hosszu lenne elmagyarazni, de fontos, hogy uritsem a tablakat havonta, es csak az nezhesse vissza akinek fizikailag a birtokaban vannak az arhivok (cd-n...stb)

    Errol a partition es archive tipusrol meg nem hallottam de most utannaneztem es ugy tunik megoldottatok a problemam Koszi szepen!



  7. #5
    Bölcs charlie logója
    Csatlakozott
    09-11-23
    Hely
    Budapest
    Hozzászólás
    1.477
    Begyűjtött 362 köszönetet
    282 hozzászólásával

    Alapbeállítás re: adatbazis archivalas es visszaolvasas

    Ha fizikailag külön adathordozón kell lennie, akkor egyik megoldás se jó, mert ezek a MySQL szerveren belül vannak.

    Ezt nézd meg esetleg: http://www.maatkit.org/doc/mk-archiver.html


    Utoljára módosítva: charlie által : 2014-10-12 19:49

  8. #6
    Bölcs
    Csatlakozott
    11-03-05
    Hely
    UK
    Hozzászólás
    500
    Begyűjtött 66 köszönetet
    52 hozzászólásával

    Alapbeállítás re: adatbazis archivalas es visszaolvasas

    az nem problema mert magat az adatbazis fajlt mentem es toltom vissza (frm,myd). Pontosabban akartam, de mivel 4-5 tabla osszekapcsolasaval tudok lekerdezni, igy azokat is mentenem kell meg visszatolteni. Szoval vegul maradt a legrondabb megoldas. Dump-al mentem a teljes adatbazist, es temp adatbazisba toltom vissza es osszekapcsolom az elo adatbazissal lekerdezesnel. Eleg kokany megoldas, de nem akartam mar tobbet veszodni vele.
    Mindenesetre koszonom a segitseget!

    Idézet charlie eredeti hozzászólása Hozzászólás megtekintése
    Ha fizikailag külön adathordozón kell lennie, akkor egyik megoldás se jó, mert ezek a MySQL szerveren belül vannak.

    Ezt nézd meg esetleg: mk-archiver - Archive rows from a MySQL table into another table or a file.




Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •