| DBIX :: OO :: Boom DBIX :: OO :: Boom is een PERL-module om hiërarchische gegevens te manipuleren met behulp van het model "Genested Sets". |
Download nu |
DBIX :: OO :: Boom Rangschikking & Samenvatting
- Vergunning:
- Perl Artistic License
- Naam uitgever:
- Mihai Bazon
- Uitgever website:
- http://search.cpan.org/~mishoo/DBIx-OO-v0.0.4/lib/DBIx/OO.pm
DBIX :: OO :: Boom Tags
DBIX :: OO :: Boom Beschrijving
DBIx :: OO :: Tree is een Perl module om hiërarchische gegevens met behulp van de "nested sets" model te manipuleren. DBIx :: OO :: Tree is een Perl module om hiërarchische gegevens te manipuleren met behulp van de "nested sets" model.SYNOPSYS CREATE TABLE categorieën (id INTEGER UNSIGNED AUTO_INCREMENT primaire sleutel label VARCHAR (255), - deze kolommen zijn vereist door DBIx: : OO :: Tree ouder INTEGER UNSIGNED, lft INTEGER UNSIGNED NOT NULL, rgt INTEGER UNSIGNED NOT NULL, mvg TINYINT STANDAARD 0, INDEX (lft), INDEX (RGT), INDEX (MVG), INDEX (ouder)); * * * Pakket Categorie; gebruik base 'DBIx :: OO'; gebruik DBIx :: OO :: Tree; __PACKAGE __-> table ( 'categorieën'); __PACKAGE __-> kolommen (P => , E => ); # Nota Het is niet nodig om lft, rgt, mvg of ouder verklaren. We # declare ouder simpelweg omdat het nuttig zou kunnen zijn, maar # DBIx :: OO: Boom werkt met low-level SQL daarom niet # vereisen dat de DBIx :: OO object heeft deze gebieden. # Onderstaande code creëert de structuur voorgesteld in mijn $ elektronica = Categorie-> tree_append ({label => 'electronics'}); mijn $ tvs = $ elektronica-> tree_append ({label => 'televisies'}); mijn $ tube = $ tvs-> tree_append ({label => 'tube'}); mijn $ plasma = $ tvs-> tree_append ({label => 'plasma'}); mijn $ lcd = $ plasma-> tree_insert_before ({label => 'lcd'}); mijn $ draagbare = $ tvs-> tree_insert_after ({label => 'draagbare elektronica'}); mijn $ mp3 = $ portable-> tree_append ({label => 'mp3-spelers'}); mijn $ flash = $ MP3-> tree_append ({label => 'flash'}); mijn $ cds = $ portable-> tree_append ({label => 'cd-spelers'}); mijn $ radio = Categorie-> tree_append ($ portable-> id, {label => '2-weg radio's'}); # Halen en weer te geven een subtree mijn $ data = $ elektronica-> tree_get_subtree ({fields => }); mijn $ levels = Categorie-> tree_compute_levels ($ data); foreach my $ i (@ $ data) {print '' x $ niveaus -> {$ i -> {id}}, $ i -> {label}, "n"; } ## of, maak DBIx :: OO objecten uit geretourneerde gegevens: my $ serie = Categorie-> init_from_data ($ data); afdrukt join ( "n", (kaart { '' x $ niveaus -> {$ _-> id} $ _-> label.} @ $ array)); # Beeldscherm pad info my $ data = $ Flash-> tree_get_path; afdrukt join ( "n", (kaart {$ _-> {label}} @ $ data)); # Beweging nodes ongeveer $ MP3-> tree_reparent ($ LCD-> id); $ Tvs-> tree_reparent ($ portable-> id); $ Cds-> tree_reparent (undef); $ Plasma> tree_move_before ($ buis-> id); $ Portable-> tree_move_before ($ elektronica-> id); # Delete knooppunten $ LCD-> tree_delete; Deze module is een aanvulling op DBIx :: OO op het opslaan van bomen in de database met behulp van de "geneste sets model", gepresenteerd in te vergemakkelijken. De belangrijkste ambitie is om zeer snel bij het ophalen van gegevens zijn (te offeren voor deze de prestaties van de UPDATE-s, INSERT-s of DELETE-s). Momenteel is deze module vereist om deze kolommen in de tabel hebben: - id: primaire sleutel (integer) - ouder: integer, verwijst naar de bovenliggende node (NULL voor root nodes) - lft, RGT: Bewaar de knooppuntpositie - MVG: alleen gebruikt bij verplaatsing nodes "ouder" en "MVG" niet esentially vereist door de geneste sets model zoals gepresenteerd in , maar zijn nodig voor deze module werken. Vooral "MVG" is alleen vereist functies knooppunten bewegen, zoals tree_reparent (). Als u niet wilt knooppunten om je heen te bewegen kunt weglaten "mvg" .Retrieval functies moeten zeer snel (een SQL uitgevoerd). Om verder te bevorderen snelheid, ze niet DBIx terugkeren :: OO gezegend objecten, maar een reeks van hashes plaats. Het is gemakkelijk om DBIx creëren :: OO objecten uit deze, indien nodig, door te bellen naar DBIx :: OO-> init_from_data () (zie DBIx :: OO voor meer informatie) .Gebruik / verwijderen / verplaatsen functies echter noodzaak om te zorgen voor de boom integriteit. Hier is wat momenteel gebeurt: - tree_append, tree_insert_before, tree_insert_after - deze uit te voeren een SELECT en twee UPDATE-s (die mogelijk van invloed kunnen zijn een zeer groot aantal rijen). - tree_delete: uitvoeren van een SELECT, een DELETE en twee UPDATE-s. - tree_reparent - 2 voert SELECT-s en 7 UPDATE-s. Ik weet het, dit klinkt verschrikkelijk - als u een beter idee zou ik graag horen. Vereisten: · Perl
DBIX :: OO :: Boom Gerelateerde software