Fájlok tárolására a mysql és gyors szétosztását, számítógépes nyilvántartás tól Z-ig

Fájlok tárolására MySQL és gyors elosztás

De ez a klasszikus túra számos hátránya van:
  • fájlok nem törlődnek, ha törli a megfelelő adatbázis rekord
  • problémákat, miközben egyidejűleg próbál frissíteni a fájl
  • elvesztése közötti szinkronizálás az adatbázis és a fájlrendszer, ha rollback
  • amikor mentése és visszaállítása adatokat az adatbázisban lehet a szinkront a fájlrendszer
  • fájlok nem vonatkoznak a hozzáférési korlátozásokat az OBD
  1. Törlése előtt rekordok addig SELECT ugyanolyan állapotban és fájlnevek el kell távolítani. A probléma az, hogy ha sok fájlt kell törölni, ezt a műveletet bizonyos időt vehet igénybe, és jó ebben az időben, meg kell zárolni a táblát írni és olvasni, és sok esetben ez elfogadhatatlan.
  2. Mielőtt eltávolítaná az telepített törölt rekordok label „el kell távolítani,” kap az összes bejegyzést ezzel a címkével, és távolítsa el a kapcsolódó fájlokat ezeket a feljegyzéseket, és végül minden rekordot törölni ebből a címkét. Kérelem dolgozik ebben a táblázatban kell továbbfejleszteni, hogy azok nem választotta a felvételi zászlóval. Hátrányok - annak szükségességét, hogy módosítsa a halmazát mellett van a projektben írásban a eltávolítása a SELECT választjuk meglehetősen összetett, hogy nem lehet alakítani egyetlen UPDATE.
  3. Az első két módon próbálja megoldani a problémát a „elveszett” fájlok törlése esetén az adatbázist, amely akkor következik be, amikor a „klasszikus” fájl tárolási módszer, de nem oldja meg a másik probléma ez a megközelítés, így igyekeztünk megoldásokat találni, amelyek kihasználják a pozitív aspektusait tárolja a fájlokat közvetlenül az adatbázisból, és megszabadulni a hátránya ennek a megközelítésnek.
  4. Felhasználási kiváltja. Sajnos, a MySQL nem a saját nyelvén támogató csoportok dolgozni fájlokat, mint csapatok kellene végre saját, felvette a forrás MySQL. Árnyoldala - a fájlokat kell tárolni ugyanazon a gépen, mint az adatbázis, MySQL javításra szorulnak, így kész megoldásokat találtunk.
  5. Fájlok tárolása az adatbázisban, de nekik közvetlenül egy webszerver, PHP részvétel nélkül. Lehetőség van, hogy észre írásban a modult a webszervert (nginx például), ami lehetővé tenné, hogy a fájlokat közvetlenül a MySQL vagy alkalmazása MySQLfs fájlrendszer driver. Ez a megközelítés megoldja a fenti problémákat, de a hiánya is - további többletterhelést a fájlok tárolására a MySQL.
  6. Specialized Storage Engine for MySQL, nyilvántartása a fájlokat.


Nézzük az utolsó bekezdésben részletesebben. Végtére is, mi is az a fájlrendszer - egy speciális adatbázis, amely a legfontosabb „fájlnév” lehetővé teszi, hogy a rekord - annak tartalmát. Ez lehet megvalósítani egy olyan mechanizmust adatok tárolására MySQL, amelyben minden bejegyzés lesz három területen:

CREATE TABLE `data_storage`.`files` (
`Id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Path` VARCHAR (255)
`Data` BLOB
) MOTOR = FILES


Adatok beszúrása egy táblázatot csak a `data`, miközben csak egy fájlba, egyedi nevet, hogy ugyanabban az időben keletkezik automatikusan (mint a mező prefix` id`) - például 764 533, és a` path` automatikusan bekerülnek a helyes módja, hogy a MySQL adatokat - mint például a „/mnt/storage/mysqldata/76/45/33/764533_myfile.jpg”. Így a tárolt adatok egy ilyen táblázatot lehet hozzáférni, mint egy egyszerű fájlt, és ahol a MySQL fenntartja az adatok integritását. Így ez a módszer a fájl tárolására van fosztva szinte minden hátrányát a klasszikus megközelítés (kivéve a hozzáférés korlátozásával, de meg lehet csinálni egy egyszerű script, és a cím X-Accel-átirányítás nginx) és ugyanakkor nem csökkenti a teljesítményt hatását fájlokat az ügyfeleknek.
A probléma a kis - nem találja a végső megvalósítása egy ilyen tároló motort MySQL, bár az alapötlet egyszerű. Lehet, hogy valaki megmondja habrolyudey linket készen végrehajtásának tároló motor, mert az ötlet, a vízen úszó, és határozottan valaki végre.