SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Grazie a
           Sponsor
Davide Mauri
Microsoft SQL Server MVP
Works with SQL Server from 6.5, on BI from 2003
Specialized in Data Solution Architecture, Database Design, Performance Tuning, BI
President of UGISS (Italian SQL Server UG)
Regular Speaker @ SQL Server events
Consulting & Training
Mentor @ SolidQ
•   Italian Subsidiary

dmauri@solidq.com
Twitter: @mauridb
http://www.davidemauri.it
Agenda
• Schema, Schemaless & Implicit Schemas
• Possibili soluzioni
• Conclusioni
Schema
• Definizione «a priori» della struttura dei
  dati
• Permette l’inserimento dei dati solo se
  compatibili con lo schema definito
• Es: Tabella in un RDBMS, XML Schema,
  Classe, Struttura
Schemaless(?)
• Nessuna definizione dello schema. Dati
  non strutturati
  – File di testo, file binari (senza metadati)


• In poche parole un caos.
Implict Schema
• In realtà c’è sempre uno schema implicito
  – Altrimenti non si saprebbe come trattare i dati
Implicit Schema

«Ogni valore al di fuori dello schema
implicito non può essere gestito in modo
corretto»
    (Schemaless data structures, Martin Fowler)
Pro
• Flessibilità
  – Immediatezza
  – Estendibilità
  – Facilità
Contro
• Le informazioni sullo schema sono nascoste
  – Sono sparse nel codice


• E’ molto difficile governare la confusione che
  si può venire a creare
  – Es: campi diversi che contengono lo stesso dato
     • RagioneSociale vs Ragione_Sociale
Contro
• Molto molto difficile definire dei vincoli di
  integrità dai dati
  – L’integrità dei dati è un valore da preservare!
  – Gli schemi XML non sono nati a caso 

• Le performance in fase di inserimento e
  ricerca possono essere problematiche
Cosa dice il saggio?

«Schemaless => implicit schema = bad.
Prefer an explicit schema»
                   (Schemaless data structures, Martin Fowler)
E se serve ugualmente?
• Ma se effettivamente sono nel corretto
  use-case per l’uso di un implicit schema?

• L’unica soluzione è un database
  documentale o un key-value store?
Schemaless & RBMS
• Sono agli antipodi

• Eppure è una richiesta molto frequente
  – Es: CRM, eCommerce, ecc.


• Non stiamo parlando di sola persistenza!
Soluzioni con un RDBMS
• Colonne «Custom»
  – Custom1, Custom2

• In-Table Data Structures
  – Colonne contenenti XML, JSON


• Entity-Attribute-Value Models
Colonne «Custom»
• Fino a SQL Server 2008 un problema

• Da SQL Server 2008 le Sparse Columns
  vengono in aiuto
  – La modifica dello schema deve essere ancora
    fatta tramite ALTER TABLE
Colonne «Custom»
• Sparse Columns
  – Sono colonne a tutti gli effetti
  – Opzionalmente restituite come XML
    • «Column Set» column
  – Non occupano spazio se non usate 
    • Ma ne occupano un po’ di più quando usate 
Dynamic Schema & Sparse Columns

DEMO
In-Table Data Structures
• Supporto completo per XML
  – XPath / XQuery
  – XML Index

• Performance buone
  – Ma non ottimali (rispetto all’equivalente
    relazionale)
  – Notevole consumo di spazio
In-Table Data Structures
• Sarebbe bello avere la possibilità di
  «promuovere» degli elementi XML in
  automatico
  – Soluzione: Trigger a/o DAL con SP
In-Table Data Structures
• Supporto a JSON assente nativamente,
  volendo disponibile tramite SQLCLR
  – Perfomance non ottimale nella ricerca
    • Non è possibile indicizzare nulla…
Dynamic Schema & XML

DEMO
Entity-Attribute-Values
• Tecnica molto utilizzata
   – Ad esempio in Wordpress

• Funziona su qualisiasi RDBMS
   – Non richiede funzionalità «speciali»

• Molto discussa e discutibile
   – Ma fino a SQL 2005 nessuna vera alternativa
Entity-Attribute-Values
• Le query richiedono l’implementazione di
  un operatore non supportato dagli RDMBS
  – «Relational Division»
  – E’ documentato e ben spiegato nella teoria
    • Diventa quindi molto facile da implementare 
Relational Division

   Dividend




                      Divisor   Result



          Remainder
Relational Division
• L’algebra relazionale ci dice che si
  implementa cosi:


  – Generare tutte le coppie di valori
  – Rimuovere tutte le coppie GIA esistenti
     • Cosi che abbiamo tutte le non-risposte
  – Rimuvere tutte le non-risposte
                                                26
Relational Division
• Il bello degli RDBMS è che possiamo
  prendere la soluzione e scriverla tale e
  quale in SQL 

• Applicando opportune semplificazioni si
  ottengono anche delle performance molto
  buone
Dynamic Schema & EAV

DEMO
Conclusioni
• Si può fare! 
  – Performance più che buone
  – Bisogna scegliere la soluzione che si adatta
    meglio al nostro use-case
     • Ricerca di attributi?
     • Ricerca di attributi & valori?
     • Performance read, write, read/write?
Conclusioni
• Non abusatene!

• Ricordate sempre il saggio 
  – Se possibile usate lo schema, nel medio e
    lungo termine è la soluzione che da più
    benefici
Q&A
Tutto il nateriale di questa sessione su
http://www.communitydays.it/

#CDays13

Weitere ähnliche Inhalte

Ähnlich wie Dynamic Schema e Schemaless Tables

PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL ServerGianluca Hotz
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databasesGianluca Hotz
 
Power B: Cleaning data
Power B: Cleaning dataPower B: Cleaning data
Power B: Cleaning dataMarco Pozzan
 
SlideModellingDataSat.pdf
SlideModellingDataSat.pdfSlideModellingDataSat.pdf
SlideModellingDataSat.pdfMarco Pozzan
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Emanuele Zanchettin
 
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Gianluca Hotz
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Simone Deponti
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.PyCon Italia
 
Metadata Driven Pipeline with Microsoft Fabric
Metadata Driven Pipeline  with Microsoft FabricMetadata Driven Pipeline  with Microsoft Fabric
Metadata Driven Pipeline with Microsoft FabricMarco Pozzan
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Multitenancy con SQL Server e Azure SQL Database
Multitenancy con SQL Server e Azure SQL DatabaseMultitenancy con SQL Server e Azure SQL Database
Multitenancy con SQL Server e Azure SQL DatabaseGianluca Hotz
 

Ähnlich wie Dynamic Schema e Schemaless Tables (20)

PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
Data grid
Data gridData grid
Data grid
 
Azure sql database
Azure sql databaseAzure sql database
Azure sql database
 
Power B: Cleaning data
Power B: Cleaning dataPower B: Cleaning data
Power B: Cleaning data
 
SlideModellingDataSat.pdf
SlideModellingDataSat.pdfSlideModellingDataSat.pdf
SlideModellingDataSat.pdf
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.
 
Metadata Driven Pipeline with Microsoft Fabric
Metadata Driven Pipeline  with Microsoft FabricMetadata Driven Pipeline  with Microsoft Fabric
Metadata Driven Pipeline with Microsoft Fabric
 
Presentazione bd2
Presentazione bd2Presentazione bd2
Presentazione bd2
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Multitenancy con SQL Server e Azure SQL Database
Multitenancy con SQL Server e Azure SQL DatabaseMultitenancy con SQL Server e Azure SQL Database
Multitenancy con SQL Server e Azure SQL Database
 

Mehr von Davide Mauri

Azure serverless Full-Stack kickstart
Azure serverless Full-Stack kickstartAzure serverless Full-Stack kickstart
Azure serverless Full-Stack kickstartDavide Mauri
 
Agile Data Warehousing
Agile Data WarehousingAgile Data Warehousing
Agile Data WarehousingDavide Mauri
 
Dapper: the microORM that will change your life
Dapper: the microORM that will change your lifeDapper: the microORM that will change your life
Dapper: the microORM that will change your lifeDavide Mauri
 
When indexes are not enough
When indexes are not enoughWhen indexes are not enough
When indexes are not enoughDavide Mauri
 
Building a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with AzureBuilding a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with AzureDavide Mauri
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveDavide Mauri
 
Azure SQL & SQL Server 2016 JSON
Azure SQL & SQL Server 2016 JSONAzure SQL & SQL Server 2016 JSON
Azure SQL & SQL Server 2016 JSONDavide Mauri
 
SQL Server & SQL Azure Temporal Tables - V2
SQL Server & SQL Azure Temporal Tables - V2SQL Server & SQL Azure Temporal Tables - V2
SQL Server & SQL Azure Temporal Tables - V2Davide Mauri
 
SQL Server 2016 Temporal Tables
SQL Server 2016 Temporal TablesSQL Server 2016 Temporal Tables
SQL Server 2016 Temporal TablesDavide Mauri
 
SQL Server 2016 What's New For Developers
SQL Server 2016  What's New For DevelopersSQL Server 2016  What's New For Developers
SQL Server 2016 What's New For DevelopersDavide Mauri
 
Azure Stream Analytics
Azure Stream AnalyticsAzure Stream Analytics
Azure Stream AnalyticsDavide Mauri
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine LearningDavide Mauri
 
Dashboarding with Microsoft: Datazen & Power BI
Dashboarding with Microsoft: Datazen & Power BIDashboarding with Microsoft: Datazen & Power BI
Dashboarding with Microsoft: Datazen & Power BIDavide Mauri
 
Azure ML: from basic to integration with custom applications
Azure ML: from basic to integration with custom applicationsAzure ML: from basic to integration with custom applications
Azure ML: from basic to integration with custom applicationsDavide Mauri
 
Event Hub & Azure Stream Analytics
Event Hub & Azure Stream AnalyticsEvent Hub & Azure Stream Analytics
Event Hub & Azure Stream AnalyticsDavide Mauri
 
SQL Server 2016 JSON
SQL Server 2016 JSONSQL Server 2016 JSON
SQL Server 2016 JSONDavide Mauri
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveDavide Mauri
 
Real Time Power BI
Real Time Power BIReal Time Power BI
Real Time Power BIDavide Mauri
 
AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)Davide Mauri
 
Datarace: IoT e Big Data (Italian)
Datarace: IoT e Big Data (Italian)Datarace: IoT e Big Data (Italian)
Datarace: IoT e Big Data (Italian)Davide Mauri
 

Mehr von Davide Mauri (20)

Azure serverless Full-Stack kickstart
Azure serverless Full-Stack kickstartAzure serverless Full-Stack kickstart
Azure serverless Full-Stack kickstart
 
Agile Data Warehousing
Agile Data WarehousingAgile Data Warehousing
Agile Data Warehousing
 
Dapper: the microORM that will change your life
Dapper: the microORM that will change your lifeDapper: the microORM that will change your life
Dapper: the microORM that will change your life
 
When indexes are not enough
When indexes are not enoughWhen indexes are not enough
When indexes are not enough
 
Building a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with AzureBuilding a Real-Time IoT monitoring application with Azure
Building a Real-Time IoT monitoring application with Azure
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep Dive
 
Azure SQL & SQL Server 2016 JSON
Azure SQL & SQL Server 2016 JSONAzure SQL & SQL Server 2016 JSON
Azure SQL & SQL Server 2016 JSON
 
SQL Server & SQL Azure Temporal Tables - V2
SQL Server & SQL Azure Temporal Tables - V2SQL Server & SQL Azure Temporal Tables - V2
SQL Server & SQL Azure Temporal Tables - V2
 
SQL Server 2016 Temporal Tables
SQL Server 2016 Temporal TablesSQL Server 2016 Temporal Tables
SQL Server 2016 Temporal Tables
 
SQL Server 2016 What's New For Developers
SQL Server 2016  What's New For DevelopersSQL Server 2016  What's New For Developers
SQL Server 2016 What's New For Developers
 
Azure Stream Analytics
Azure Stream AnalyticsAzure Stream Analytics
Azure Stream Analytics
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine Learning
 
Dashboarding with Microsoft: Datazen & Power BI
Dashboarding with Microsoft: Datazen & Power BIDashboarding with Microsoft: Datazen & Power BI
Dashboarding with Microsoft: Datazen & Power BI
 
Azure ML: from basic to integration with custom applications
Azure ML: from basic to integration with custom applicationsAzure ML: from basic to integration with custom applications
Azure ML: from basic to integration with custom applications
 
Event Hub & Azure Stream Analytics
Event Hub & Azure Stream AnalyticsEvent Hub & Azure Stream Analytics
Event Hub & Azure Stream Analytics
 
SQL Server 2016 JSON
SQL Server 2016 JSONSQL Server 2016 JSON
SQL Server 2016 JSON
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep Dive
 
Real Time Power BI
Real Time Power BIReal Time Power BI
Real Time Power BI
 
AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)
 
Datarace: IoT e Big Data (Italian)
Datarace: IoT e Big Data (Italian)Datarace: IoT e Big Data (Italian)
Datarace: IoT e Big Data (Italian)
 

Dynamic Schema e Schemaless Tables

  • 1.
  • 2. Grazie a Sponsor
  • 3. Davide Mauri Microsoft SQL Server MVP Works with SQL Server from 6.5, on BI from 2003 Specialized in Data Solution Architecture, Database Design, Performance Tuning, BI President of UGISS (Italian SQL Server UG) Regular Speaker @ SQL Server events Consulting & Training Mentor @ SolidQ • Italian Subsidiary dmauri@solidq.com Twitter: @mauridb http://www.davidemauri.it
  • 4. Agenda • Schema, Schemaless & Implicit Schemas • Possibili soluzioni • Conclusioni
  • 5. Schema • Definizione «a priori» della struttura dei dati • Permette l’inserimento dei dati solo se compatibili con lo schema definito • Es: Tabella in un RDBMS, XML Schema, Classe, Struttura
  • 6. Schemaless(?) • Nessuna definizione dello schema. Dati non strutturati – File di testo, file binari (senza metadati) • In poche parole un caos.
  • 7. Implict Schema • In realtà c’è sempre uno schema implicito – Altrimenti non si saprebbe come trattare i dati
  • 8. Implicit Schema «Ogni valore al di fuori dello schema implicito non può essere gestito in modo corretto» (Schemaless data structures, Martin Fowler)
  • 9. Pro • Flessibilità – Immediatezza – Estendibilità – Facilità
  • 10. Contro • Le informazioni sullo schema sono nascoste – Sono sparse nel codice • E’ molto difficile governare la confusione che si può venire a creare – Es: campi diversi che contengono lo stesso dato • RagioneSociale vs Ragione_Sociale
  • 11. Contro • Molto molto difficile definire dei vincoli di integrità dai dati – L’integrità dei dati è un valore da preservare! – Gli schemi XML non sono nati a caso  • Le performance in fase di inserimento e ricerca possono essere problematiche
  • 12. Cosa dice il saggio? «Schemaless => implicit schema = bad. Prefer an explicit schema» (Schemaless data structures, Martin Fowler)
  • 13. E se serve ugualmente? • Ma se effettivamente sono nel corretto use-case per l’uso di un implicit schema? • L’unica soluzione è un database documentale o un key-value store?
  • 14. Schemaless & RBMS • Sono agli antipodi • Eppure è una richiesta molto frequente – Es: CRM, eCommerce, ecc. • Non stiamo parlando di sola persistenza!
  • 15. Soluzioni con un RDBMS • Colonne «Custom» – Custom1, Custom2 • In-Table Data Structures – Colonne contenenti XML, JSON • Entity-Attribute-Value Models
  • 16. Colonne «Custom» • Fino a SQL Server 2008 un problema • Da SQL Server 2008 le Sparse Columns vengono in aiuto – La modifica dello schema deve essere ancora fatta tramite ALTER TABLE
  • 17. Colonne «Custom» • Sparse Columns – Sono colonne a tutti gli effetti – Opzionalmente restituite come XML • «Column Set» column – Non occupano spazio se non usate  • Ma ne occupano un po’ di più quando usate 
  • 18. Dynamic Schema & Sparse Columns DEMO
  • 19. In-Table Data Structures • Supporto completo per XML – XPath / XQuery – XML Index • Performance buone – Ma non ottimali (rispetto all’equivalente relazionale) – Notevole consumo di spazio
  • 20. In-Table Data Structures • Sarebbe bello avere la possibilità di «promuovere» degli elementi XML in automatico – Soluzione: Trigger a/o DAL con SP
  • 21. In-Table Data Structures • Supporto a JSON assente nativamente, volendo disponibile tramite SQLCLR – Perfomance non ottimale nella ricerca • Non è possibile indicizzare nulla…
  • 22. Dynamic Schema & XML DEMO
  • 23. Entity-Attribute-Values • Tecnica molto utilizzata – Ad esempio in Wordpress • Funziona su qualisiasi RDBMS – Non richiede funzionalità «speciali» • Molto discussa e discutibile – Ma fino a SQL 2005 nessuna vera alternativa
  • 24. Entity-Attribute-Values • Le query richiedono l’implementazione di un operatore non supportato dagli RDMBS – «Relational Division» – E’ documentato e ben spiegato nella teoria • Diventa quindi molto facile da implementare 
  • 25. Relational Division Dividend Divisor Result Remainder
  • 26. Relational Division • L’algebra relazionale ci dice che si implementa cosi: – Generare tutte le coppie di valori – Rimuovere tutte le coppie GIA esistenti • Cosi che abbiamo tutte le non-risposte – Rimuvere tutte le non-risposte 26
  • 27. Relational Division • Il bello degli RDBMS è che possiamo prendere la soluzione e scriverla tale e quale in SQL  • Applicando opportune semplificazioni si ottengono anche delle performance molto buone
  • 28. Dynamic Schema & EAV DEMO
  • 29. Conclusioni • Si può fare!  – Performance più che buone – Bisogna scegliere la soluzione che si adatta meglio al nostro use-case • Ricerca di attributi? • Ricerca di attributi & valori? • Performance read, write, read/write?
  • 30. Conclusioni • Non abusatene! • Ricordate sempre il saggio  – Se possibile usate lo schema, nel medio e lungo termine è la soluzione che da più benefici
  • 31. Q&A Tutto il nateriale di questa sessione su http://www.communitydays.it/ #CDays13

Hinweis der Redaktion

  1. Inserite l’eventuale vostro logo in basso a destra
  2. Slide da mostrare prima di iniziare la sessione – non rimuovere!
  3. http://martinfowler.com/articles/schemaless/
  4. http://martinfowler.com/articles/schemaless/
  5. Ultima slide, obbligatoria