Ho la sintassi giù ma mi chiedo se qualcuno possa fornire un caso d'uso illustrativo in cui i sinonimi dei database sono molto utili.Quando devono essere utilizzati i sinonimi dei database?
risposta
È eccellente per la gestione di tabelle fittizie durante il test. Ad esempio, se le tabelle di origine contengono milioni di record e si desidera testare un piccolo sottoinsieme di dati, è possibile utilizzare i sinonimi per reindirizzare la tabella di origine a una tabella più piccola che si controlla in modo da poter mettere in scena vari scenari.
In questo modo, è possibile aggiornare/eliminare i dati nella tabella fittizia senza influire sulla tabella di origine. Quando sei pronto per utilizzare la tabella di origine, tutto ciò che devi fare è reindirizzare il sinonimo.
Ovviamente, i sinonimi pubblici consentono di fare riferimento a un oggetto senza che la sintassi dello schema.object aumenti la leggibilità di PL/SQL e del codice SQL. –
@Darren Atkinson: E i sinonimi pubblici aumentano la possibilità di colmare il nome se si decide di consolidare i database. –
quanto sono utili in caso di pacchetti, di recente non ero in grado di accedere a un pacchetto dalla mia applicazione anche se la concessione di esecuzione era lì. dopo aver creato il sinonimo sono stato in grado di accedere al pacchetto dall'applicazione. – viveksinghggits
Dire, quando è necessario creare un'applicazione scritta male (che non emette ALTER SESSION SET CURRENT_SCHEMA
) per funzionare contro un altro schema.
I sinonimi sono principalmente utilizzati come soluzione alternativa per casi come quello. Con un'applicazione correttamente scritta, non dovrai quasi mai usarli.
Non sono d'accordo con l'idea che i sinonimi siano inutili per le applicazioni "scritte correttamente". Li uso sempre per evitare i nomi degli schemi hardcoding nella mia applicazione. Ad esempio, potrei avere una vista che unisce due tabelle; se ho bisogno di spostare una delle tabelle in un altro schema, 'ALTER SESSION SET CURRENT_SCHEMA' non funzionerà. –
Quando i nomi degli oggetti del database sono codificati nel codice esistente.
L'utilizzo di sinonimi potrebbe risparmiare l'angoscia di riscrivere il vecchio codice, a volte da più fonti, che ha le proprie idee sulla tabella o sui nomi di database.
Ho visto, ad esempio, un codice che è stato scritto per alcuni server di produzione. Il codificatore è convenientemente codificato il nome della tabella principale è test_data
, che ha funzionato bene sulla sua workstation. Usare sinonimi piuttosto che riscrivere il suo codice mi ha portato a casa presto.
Di solito vedo i sinonimi utilizzati quando l'amministratore di database desidera separare gli oggetti di database in schemi diversi, ma desidera/richiede che alcuni di questi oggetti siano visibili ad altri schemi (ma non vuole concedere loro l'accesso diretto).
Un esempio che ho visto più di recente: diverse app Web gestite dalla stessa azienda. Gli utenti di solito hanno accesso a più di una di queste app e avranno solo un account utente per accedere a queste app. Le informazioni dell'account utente sono memorizzate in uno schema USER_ACCOUNTS
e tutte le altre app sono nei propri schemi e accedono allo schema USER_ACCOUNTS
tramite sinonimi.
Controlla il Oracle documentation on synonyms.
In aggiunta alle altre risposte qui, sono anche comunemente utilizzati per:
- Fornendo un facile da usare i nomi per le tabelle remote, cioè su collegamenti di database
- tabelle che avete bisogno di essere accessibile a tutti utenti, ovvero sinonimi pubblici
In generale, è una pratica scorretta incorporare i nomi di schema in SQL o PL * SQL. Quindi, se stai scrivendo un codice che deve fare riferimento a una tabella in un altro schema come: "seleziona id da OtherSchema.OtherTable", ti consigliamo di definire un sinonimo per la tabella (crea sinonimo OtherTable per OtherSchema.OtherTable) e scrivi "select id" da OtherTable ".
In questo modo, se OtherTable si sposta su un nome schema diverso o si dispone di un'altra installazione del sistema che utilizza un nome schema diverso, è possibile ridefinire i sinonimi anziché modificare il codice.
Può anche essere utilizzato per passare il codice tra due schemi con la stessa struttura ridefinendo i sinonimi.
- 1. I caricatori devono essere utilizzati per accedere ai servizi Web?
- 2. Quando devono essere utilizzati i flussi di autenticazione Facebook lato server vs lato client?
- 3. quali database possono essere utilizzati con java?
- 4. Fitness- I test devono essere comunicati al database?
- 5. I file dei metadati del parquet devono essere riavvolti?
- 6. Gestori di eventi di dominio: devono essere utilizzati per i problemi relativi al livello di applicazione?
- 7. Android onStop/onDestroy - quando potrebbero essere utilizzati?
- 8. Come devono essere documentati i test unitari?
- 9. Quali sono gli esempi reali di quando devono essere utilizzati gli elenchi collegati?
- 10. Soggetti RX: devono essere evitati?
- 11. I file .dmg devono essere firmati?
- 12. Perché i metodi parziali devono essere annullati?
- 13. Quando BOOL e bool devono essere usati in C++?
- 14. Quando devono essere specificati in modo esplicito gli interi?
- 15. Perché i bean Java devono essere serializzabili?
- 16. I parametri del modello devono essere tipi?
- 17. I distruttori virtuali devono essere pubblici?
- 18. Quanto devono essere diversi i semi casuali?
- 19. I flag enum C# devono essere sequenziali
- 20. I frammenti Android devono essere statici
- 21. I comandi devono essere asincroni in CQRS?
- 22. Perché i tipi WinRT devono essere sigillati?
- 23. Regex - I trattini devono essere sfuggiti?
- 24. Quando, dove e come devono essere utilizzate le code?
- 25. Cercare il dizionario dei sinonimi Dati
- 26. Come far funzionare i sinonimi solr
- 27. I campi non possono essere utilizzati nell'espressione parametro report
- 28. Come devono essere applicate le regole per i Root aggregati?
- 29. Quando devono essere scritti gli scenari di test BDD?
- 30. Qual è la differenza tra il vettore di hashing e il vettore di conteggio, quando devono essere utilizzati?
Link: http://www.dba-oracle.com/concepts/synonyms.htm –
Funzione assolutamente inutile: http://vadimtropashko.wordpress.com/2012/12/12/synonyms-do-we-need -them/ –