Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  13 3246
Jeg er i planleggingsfasen for en nettside, så prøver å skaffe meg litt oversikt over potensielle utfordringer.

Jeg skal ha en nettside hvor jeg potensielt sett skal ha tusenvis av brukere, alle brukere skal ha muligheten til å lage nye og unike tabeller, derfor ser jeg for meg at man må ha egne databaser for hver bruker.
  1. Den globale brukerdatabasen:
    Slik jeg ser det for meg, så vil jeg ha en egen database hvor alle brukere er lagret, den vil se ca. slik ut:

    Kode

    Global UserDB: Table User
    ------------------------------------------------------------
    UserID Email	    Password Gender DOB      Location
    ------------------------------------------------------------
    1      bob1@etc.com Per      M      1/1/2001 Trondheim
    2      bob2@etc.com Ola      M      2/2/2002 Drammen
    3      bob3@etc.com Jon      M      1/2/2003 Oslo
    UserID vil da være referanse til databasen til hver individuelle bruker.

  2. Den individuelle brukerens database:
    Hver unike bruker skal også ha en egen database, i og med at de skal kunne lage egne tables så vil utgangspunktet kun inneholde et basetable med UserID:

    Kode

    Individual UserDB: Table Base
    ------------------------------------------------------------
    UserID
    ---------------------------------------------------------------
    1
    2
    3

Her er mine spørsmål:
  1. I og med at brukere både skal kunne lagre "privat" data i tillegg til å kunne opprette egne tables, er det ikke da hensiktsmessig at hver bruker har en egen database?

  2. Om man har individuelle databaser pr bruker, kan man på et senere tidspunkt kjøre operasjoner (eksempelvis sammenligning) på tvers av disse databasene på en hensiktsmessig måte?

  3. Om hver bruker skal ha en egen database, finnes det noen webhoteller som støtter dette? Jeg ser at domeneshop kun støtter 10 unike databaser.

  4. Vil MySQL klare å håndtere tusenvis av operasjoner i minuttet? Vil det være raskt nok? Eller bør man se på andre alternativer enn MySQL?

  5. Noen andre ting jeg bør tenke på?
Nei. Du trenger nok neppe mer enn en database. Du bør nok lese deg litt opp på relasjoner og normalisering. Jeg skjønner ikke hva du mener du skal ha i en egen database for hver bruker. Rader som inndeholder samme type data men er knyttet mot en bruker ville man vanligvis samlet i en tabell der en har en fremmed nøkkel til brukerID.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
En virkelig gigantisk no-no jeg kan peke på med en gang, er at du ALDRI lagrer passord i klartekst. Just Don't Do It™.

Når det gjelder selve database-schemaet ditt, analyse osv., er det vanskelig å kommentere dette uten noen idé om hva du har tenkt til å lagre i dem.
Rent konkret hva er det brukerene skal lagre i sine egne tabeller/databaser for?
Trigonoceps occipita
vidarlo's Avatar
Donor
Det er ikkje mogeleg å svare fornuftig på spørsmålet ditt før vi veit kva du faktisk skal lagre.

Det sagt så er hverken domeneshop eller andre shared hosting-opplegg tingen om du skal ha mange tusen brukarar med mykje datalagring. Da er VPS eller dedikert boks langt meir fornuftig.

Og MySQL har ingen spesielle problem med mange databaser og eit titalls tusen rader i ein tabell. Men igjen; er det GIS du skal drive med er jo PostgreSQL langt meir opplagt val enn my. Så du stiller eit spørsmål som er så åpent at det ikkje har eit fornuftig svar.
Takker for svar. Jeg skjønner ikke helt hvordan relasjoner og normalisering skal gjøre at individuelle brukere kan ha sine egne unike tabeller, kun forbeholdt de.

Eksempel:
  • Brukeren Ole har via. webgrensesnittet opprettet tabellen "Bøker", under denne har han laget "Krimbøker" (ID, Title) og "Romaner" (ID, Title). For brukeren så vil dette enkelt og greit være å lage en gruppe med to undergrupper, måten det lagres på vil være egne tabeller, linktables for relasjoner settes også opp uten at brukeren gjør det. Han vil da kunne gjøre søk og browse bøker på en enkel og oversiktelig måte.

  • Brukeren Per har via. webgrensesnittet opprettet tabellen "Vitser" (ID, VitsCat, VitsText), under denne kan han opprette vitser, han setter også kategorien for hver enkelt vits.

Jeg vet at dersom man hadde hatt predefinerte ting som brukerene skulle kunne bruke så kunne man enkelt ha brukt én database, og heller bare spesifisert alle kolonnene som potensielt skulle brukes. Utfordringen min er at hver enkelt bruker skal kunne opprette totalt forskjellige tabeller. Antall kolonner, hva slags type data som lagres i hver kolonne og relasjoner vil være forskjellig for hver enkelt bruker.

Jeg er på ingen måte noen ringrev når det kommer til databaser, jeg har kun erfaring fra et par python + sqlite applikasjoner, så jeg klarer ikke å forstå hvordan man kan unngå egne databaser når man ikke vet hvordan databasestrukturen for hver enkelt bruker vil være?
Sist endret av simchris; 5. februar 2016 kl. 22:57.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av simchris Vis innlegg
Jeg er på ingen måte noen ringrev når det kommer til databaser, jeg har kun erfaring fra et par python + sqlite applikasjoner, så jeg klarer ikke å forstå hvordan man kan unngå egne databaser når man ikke vet hvordan databasestrukturen for hver enkelt bruker vil være?
Vis hele sitatet...
Du kan t.d. la brukere opprette tabeller, der tabellnavn er f.eks. ID, som du korelaterer med bruker og brukervalt navn på tabellen, slik at du viser heilt anna navn enn det du faktisk har i DBen.
Sitat av vidarlo Vis innlegg
Du kan t.d. la brukere opprette tabeller, der tabellnavn er f.eks. ID, som du korelaterer med bruker og brukervalt navn på tabellen, slik at du viser heilt anna navn enn det du faktisk har i DBen.
Vis hele sitatet...
Herregud, jeg er dum! Uff, dette var faktisk litt flaut Da skjønner jeg at dere ikke forstod poenget med egne databaser, takker og bukker
▼ ... over en uke senere ... ▼
Sitat av simchris Vis innlegg
Herregud, jeg er dum! Uff, dette var faktisk litt flaut Da skjønner jeg at dere ikke forstod poenget med egne databaser, takker og bukker
Vis hele sitatet...
Det meste virker enkelt når man har skjønt det, men mye virker uforståelig når man ikke har sett sammenhengen enda. Sånn er det bare
Er dette en "akseptert" måte å gjøre det på?

Har en database med 11000 brukere/11000 tabeller, da hver bruker skal kunne lagre opp til 50 rader med data.

Har planer å skrive om en del for å få mindre data lagret/overført, da mye av innholdet går igjen (lagre som tallverdi mot en ny tabell, istedet for fulle stringer), og har derfor begynnt å kikke etter andre måter å samtidig optimalisere på.

Jeg har fått foreslått å ha en stor tabell med all brukerinput lagret i, og knytte hver enkel rad opp mot bruker, men har ikke fått bekreftet/avkreftet hva som er "den beste måten" å gjøre det på.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av Lanjelin Vis innlegg
Har en database med 11000 brukere/11000 tabeller, da hver bruker skal kunne lagre opp til 50 rader med data.
Vis hele sitatet...
Om kvar brukar har så lite som femti rader er det kanskje betre å lagre radene i ein tabell, og heller ha med eit felt for brukarid, eller dele dei på ulike tabeller basert på datatype. Forslaget ditt høyres lite effektivt ut, med så mange tabeller... Det er lite oversiktleg og tungt å spørre mot.
Hvorfor ikke lagre hver enkelt brukers "tabell" som ett felt under brukeren der hvor du benytter deg av F.eks JSON for å håndtere informasjon?
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Sitat av Kroniz Vis innlegg
Hvorfor ikke lagre hver enkelt brukers "tabell" som ett felt under brukeren der hvor du benytter deg av F.eks JSON for å håndtere informasjon?
Vis hele sitatet...
Fordi det er snakk om en relasjonell database, noe som gjør denne typen spørring ganske klønete. Man lagrer helst ikke sammensatt data i en relasjonell base.
postgreSQL har datatype JSON som er fult soekbart.