Moi,
jos minulla on palvelu, jossa jokaista asiakastani kohden tarvitsen sanotaanko vaikkapa 20 taulukkoa tietokantaan. Jos minulla olisi asiakkaita vaikkapa 500, niin taulukoiden määrä nousisi jo 10000. Voiko tämä hidastaa? Olisiko parempi että luon jokaiselle asiakkaalle oman tietokannan, johon sitten tulevat asiakkaan taulukot?
Asiakkaille luodaan omat taulut tai tietokannat pääsääntöisesti vain siinä tapauksessa, että joka asiakkaalla on myös oma kopio sovelluksesta ja mahdollisesti jopa oma palvelin. Jos asiakkaat käyttävät samaa sovellusta, tauluja ei kuulu luoda lisää. Kaikkien asiakkaiden data tallennetaan samoihin tauluihin, ja joihinkin tauluihin lisätään silloin sarake asiakas_id. Toisin sanoen kyselyissä esiintyviä taulujen nimiä ei pidä vaihdella sen mukaan, kuka on kirjautuneena.
Siltä varalta, että kuitenkin haluat jatkaa nykyisellä, luultavasti täysin virheellisellä linjallasi, vastaan, että nopeuden kannalta ei liene mitään merkitystä, ovatko taulut samassa vai eri tietokannoissa.
Kiitokset vastauksesta. Rupesin jo pohtimaan vastaustasi, ja tulin siihen tulokseen että on varmasti järkevämpi ja helpompi toteuttaa tietojen tallennus mainitsemallasi tavalla. Eikö tämä kuitenkin nosta tietoturvariskiä huomattavasti? Jos jokaisen asiakkaan data on omassa tietokannassaan, ei yksittäinen tuholainen pääse niin helpolla vahingoittamaan kuin kyseisen asiakkaan dataa. Palvelu on yrityksille suunnattu ja maksullinen, joten koetan olla saada tietoturvan niin hyväksi kuin vain ikinä kykenen.
Ei ole mitään väliä pistätkö kaikkien asiakkaiden tiedot eri tietokantoihin. Ei se hidastu, ainakaan ellei kaikkia tietoja ladata samanaikaisesti. Jos ohjelmoit PHP:ta ja sen ilman mitään tietoturva-aukkoja ja webhotelli on DDoS-suojattu, nopea ja kaistanleveys on suuri, ei sivustossa ole mitään riskiä ellei MySQL salasana vuoda.
PHP/MySQL: http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php
timoteijo kirjoitti:
Eikö tämä kuitenkin nosta tietoturvariskiä huomattavasti?
Ei valtiokaan suojaa salaisuuksiaan kirjoittamalla niitä epäselvällä käsialalla pienille paperilappusille. Huonoa tietoturvaa ei voi paikata sillä, että tekee sotkuisen tietokannan. Jos hakkeri pystyy lukemaan tietokantaa, vika on koodissa eikä tietokannassa.
Jos osaa edes perusasiat kunnolla, tietoturvariskiä ei ole kummallakaan tavalla. Jos taas ei osaa, luultavasti aukkoja tulee joka tapauksessa. Toki jo tuo taulujen dynaaminen lisääminen vihjaa, että järjestelmä on huonosti tehty ja täynnä aukkoja.
Hyvin sanottu. Tarkoitinkin juuri tuota, mutta eiväthän kaikki kysymykset ole ongelmia tai ei voi ainakaan yleistää niin, että vihjaisi tuota.
Kiitoksia. Ajattelin juurikin tuota sql-injektiota, ettei pääsisi sorkkimaan kaikkien asiakkaiden dataa. Mutta ehkäpä parempi ratkaisu tosiaan on varmistaa ettei injektiota pääse tapahtumaan :D
timoteijo kirjoitti:
Mutta ehkäpä parempi ratkaisu tosiaan on varmistaa ettei injektiota pääse tapahtumaan :D
Ajattelit siis alunperin antaa käyttäjän vapaasti "tehdä" sql-injektion, ja toivoa, että kukaan ei onnistu tekemään sitä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.