Ho cercato di ottenere una buona conoscenza dello storage di Azure Table per un po 'di tempo e, mentre capisco in generale come funziona, sto davvero cercando di scuotere il pensiero del mio database relazionale. Di solito imparo meglio con l'esempio, quindi mi chiedo se qualcuno può darmi una mano. Descriverò una semplice configurazione per come risolverei un problema utilizzando un database relazionale, qualcuno può aiutarmi a convertirli per utilizzare l'archiviazione di Azure Table?Come è possibile scuotere il pensiero del database relazionale per progettare un archivio dati di archiviazione tabella azzerato?
Diciamo che ho un'app per appunti semplice, ha utenti e ogni utente può avere tutte le note che desidera e ogni nota può avere quanti utenti (proprietari o spettatori) di cui ha bisogno. Se dovessi schierare questa operazione utilizzando un database relazionale avrei probabilmente schierarlo come segue:
Per il database, mi piacerebbe iniziare con qualcosa di simile:
CREATE TABLE [dbo].[Users](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Username] [nvarchar](20) NOT NULL)
CREATE TABLE [dbo].[UsersNotes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[NoteID] [int] NOT NULL)
CREATE TABLE [dbo].[Notes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[NoteData] [nvarchar](max) NULL)
Vorrei quindi impostare una relazione tra Users.ID and UsersNotes.UserID
e Notes.ID and UsersNotes.NoteID
con vincoli per imporre l'integrità referenziale.
Per l'applicazione, avrei un ORM generare alcune entità con corrispondenti proprietà del nome per ognuno di questi, e probabilmente sarei chiamare un giorno:
public class Users
{
public int ID { get; set; }
public String Username { get; set; }
}
// and so on and so forth
mi rendo conto che questo disegno è completamente dipendente sul database relazionale, e quello che sto cercando è qualche consiglio su come scuotere questo ragionamento per usare lo storage di Azure Table, o qualsiasi altra tecnica di memorizzazione dei dati non relazionali.
Supponiamo inoltre di aver installato l'SDK di Azure e di averlo giocato, ma le mie conoscenze sull'utilizzo dell'SDK sono limitate, preferisco non concentrarmi su questo, ma piuttosto su quale sarebbe una buona soluzione per quanto sopra. Un buon punto di partenza aiuterà a rendere sensato l'SDK, poiché avrò un punto di riferimento.
Per ragioni di completezza, consente di dire che
- tecniche Nota cambieranno frequentemente quando creato per primo, e il ridursi nel tempo
- Gli utenti avranno molte note, e le note possono avere più utenti (non concorrenti, solo gli spettatori)
- mi aspetto abbastanza pochi utenti (poche centinaia), ma mi aspetto un buon numero di note (poche centinaia, per utente)
- mi aspetto di interrogare contro
Username
di più, e poi mostrare le note l'utente ha accesso a - Mi aspetto anche durante la visualizzazione di una nota, per mostrare gli altri utenti con accesso a tale nota, una ricerca inversa
La domanda è "come" ma la mia domanda è "perché"? Lo hai valutato in SQL Azure? 1 TB di file di registro è ATS. 10 GB di relazionale è SQL. In mezzo a un'ulteriore analisi. Ma 10 GB di relazione sono molti dati. – Paparazzi
@Blam Sono interessato a un esercizio di apprendimento e al costo. – Nate
Cool ma SO è per domande di programmazione specifiche. Se vuoi imparare ci sono molti libri e materiale online. – Paparazzi