Design pattern per creare dinamicamente modelli trovati in un elenco di collegamenti

4

Qualcuno può aiutarmi a pensare a un modo per generare dinamicamente la sezione dei pattern di uno strumento che sto creando? Non sono sicuro di come memorizzare e generare questi "pattern" in modo dinamico.

Ciò che fa il programma è prendere una grande lista di link (100.000), inserirli in un database, raggrupparli per dominio e quindi arricciare una pagina da ciascun dominio alla ricerca di collegamenti a ritroso.

Ecco lo schema del database, puoi vedere che la tabella dei domini è dove la maggior parte delle informazioni è memorizzata perché raggruppiamo gli URL insieme dal dominio: link

Quindi ora sappiamo che alcuni domini sono in diretta (e hanno un backlink) e alcuni sono morti (nessun backlink). Questo è relativamente facile, ma ora per la parte divertente.

Ho bisogno di derivare "pattern" dai collegamenti live. Ad esempio, trova un elenco di tutti i domini di collegamento in diretta che hanno più di 25 link da quel dominio. Quindi se joesblog.blogspot ha 33 pagine che si collegano al mio dominio che corrisponde a questo modello. Ecco la mia lista di modelli:

  • Domini che includono un link alla home page
  • Domini raggruppati per dominio di primo livello (.com, .org ecc.)
  • Domini che hanno restituito una risposta di testata 405
  • URL con strutture di directory corrispondenti
  • Domini che contengono la parola _ _ _.
  • URL che contengono la parola _ _ _ nel loro percorso.
  • Testo di ancoraggio comune.
  • Tag del titolo comuni.
  • Obiettivi di backlink comuni (su quale pagina del sito punta il link).

Il problema è che i modelli stanno cambiando COSTANTEMENTE. Ci viene spostato, aggiunto, modificato, rimosso e qualsiasi altra cosa tu possa pensare. Ho davvero bisogno di un sistema di gestione dei contenuti per gestire questi modelli. Ma come potrei immagazzinare qualcosa di così intricato in un database?

Qualcuno ha mai avuto un problema simile e come l'hai risolto?

Se potessi memorizzare tutte le funzioni e le istruzioni MySQL nel database sarebbe bello (ma sbagliato).

(PHP, MySQL, JavaScript / JQuery)

DISCLAIMER: questo è uno strumento interno. Per favore non chiedermi perché sto costruendo questo o pretendo che i requisiti siano sbagliati. Questo è stato progettato dal mio manager e il mio compito è farlo funzionare perché sono uno sviluppatore dell'azienda che ha bisogno di questo strumento. Grazie!

    
posta RachelD 01.05.2013 - 21:12
fonte

3 risposte

3

Sembra che ci siano alcuni tipi di modelli. Riesco a vedere alcuni semplici schemi di corrispondenza (come "nome di dominio contiene $ word"), alcuni basati sull'interazione con l'host (domini che restituiscono un 405), schemi basati su TLD ....

Sono d'accordo sul fatto che la memorizzazione di codice eseguibile nel database non sia probabilmente l'approccio migliore. Potrebbe essere necessario prima trovare i modi per classificare modelli diversi in modelli più generali. Quindi, disporre di uno schema di database per archiviare i metadati del modello e quindi un'interfaccia utente per consentire agli utenti di lavorare con i modelli. Dovresti anche scrivere il codice per ogni tipo di pattern per eseguire i metadati del pattern nello schema del pattern ed elaborare i dati nello schema principale.

Puoi anche farlo interamente in codice invece che nel database, avendo strutture di classi diverse per rappresentare diversi tipi di pattern, quindi leggi la configurazione per diversi pattern da un file XML. Lo svantaggio di questo è che la configurazione dei pattern viene eseguita in XML, che è probabilmente leggermente meno user-friendly di un'interfaccia CRUD basata sul web. Significa anche che quando un utente vuole cambiare / creare un pattern, i file di configurazione XML devono essere distribuiti (perché ovviamente non avranno accesso al server di produzione, giusto?;)), Mentre se è tutto fatto in un database, non è necessario ridistribuire la configurazione modificata (a meno che non si costruisca uno strumento per distribuire automaticamente le modifiche), è immediatamente disponibile.

    
risposta data 01.05.2013 - 21:53
fonte
2

But how would I store something this intricate in a database?

Non lo fai. Ogni modello è una combinazione di codice di programma e query SQL che producono un determinato risultato.

In PHP, puoi scrivere una classe astratta che modella un insieme di classi. Scrivi una classe astratta che prende una stringa che fornisce una breve descrizione del metodo. Questa classe ha anche una funzione execute () che fornisce il risultato come array.

Scrivi una classe di pattern concreta per ciascuno dei pattern che conosci, estendendo la classe astratta. In questo modo, tutte le tue classi di pattern hanno gli stessi metodi e risultati.

Scrivi un'altra classe di loop che attraversa tutte queste classi di pattern con una serie di stringhe delle descrizioni brevi che desideri eseguire.

Infine, si imposta una classe principale in cui è possibile specificare la matrice di stringhe di descrizione breve. Le stringhe possono essere lette da un file, quindi non devi modificare la classe principale.

In questo modo, quando qualcuno presenta un nuovo pattern, crei una nuova classe pattern, aggiungi la classe pattern alla classe loop e il gioco è fatto.

    
risposta data 01.05.2013 - 21:28
fonte
2

Sembra che tu voglia un database grafico . Fondamentalmente tengono traccia dei nodi e delle loro relazioni separatamente e la maggior parte delle query può essere eseguita con i loro linguaggi di query nativi, se si progetta il database correttamente.

Ad esempio, i tuoi nodi potrebbero essere pagine e le tue relazioni potrebbero essere link a , ha TLD , risponde con , ecc. i database possono seguire le relazioni in modo uguale in entrambe le direzioni, quindi trovare tutti i link su una pagina è semplice quanto trovare tutti i link a una pagina.

    
risposta data 01.05.2013 - 21:57
fonte

Leggi altre domande sui tag