Avatar billede mantichora Nybegynder
24. november 2005 - 19:04 Der er 17 kommentarer og
2 løsninger

Database og server til professionelt brug.

Jeg går, sammen med nogle venner, og planlægger at lancere en større online portal. Vi har allerede samarbejde med et par store firmaer, og er i analysestadiet, og igang med at undersøge de konkrete omstændigheder for udførslen, deriblandt programmeringssprog, servere og økonomi.

Hvis alt går vel, kan vi få op imod 100.000 brugere, og en bruttoindkomst på en lille million årligt.

Nu har jeg så to spørgsmål (til 30 point hver):

1) Database. Programmeringen bliver i PHP, og jeg er vant til at arbejde med MySQL, men har hørt at den ikke er så god til at håndtere rigtig mange rows.
MS Access er ikke noget alternativ, da jeg nægter at have en Windows server. PostgreSQL burde være overkommeligt at sætte sig ind i, når man kan MySQL, så vidt jeg forstår?

Kan disse bruges? Eller skal jeg over i noget Oracle, hvilket jeg helst ikke vil, da det er dyrt og jeg overhovedet intet kender til det?


2) Server. Måske kan vi købe os ind hos de firmaer vi har aftale med, men ellers skal vi ud og skaffe en rigtig professionel server. Nogle gode ideer?

Krav er understøttelse af PHP og den server vi vælger, såvel som en helvedes god båndbredde og ÆGTE fri trafik. Og mindst 10 GB plads, men helst meget mere. Og så 24 timers overvågning, backup og høj sikkerhed. Unix/Linux/BSD.

Kan man få den slags for under 100.000 kroner årligt? Kan godt være mit gæt er helt hen i vejret.
Avatar billede arne_v Ekspert
24. november 2005 - 19:27 #1
re 1)

MySQL kan godt håndtere rigtigt mange rows.

Men har I brug for database transaktioner, så skal I bruge InnoDB og så er performance
altså ikke hvad I er vant til med MyISAM tabeller.

Forskellen på at lære PostgreSQL og Oracle er nok ikke så stor.

Men PostgreSQL er noget billigere end Oracle.

Oracle kan uden tvivl møde alle dine krav - måske undtagen prisen.

Nogen foretrækker MySQL. Nogen foretrækker PostgreSQL. Smag og behag.

re 2)

Jeg tror at I skal have en dedikeret server.

Det er der masser af hosting firmaer som gerne vil sælge jer.

Jeg kender ikke markedet godt nok at kunne vurdere pris.
Avatar billede mantichora Nybegynder
24. november 2005 - 20:11 #2
"Men har I brug for database transaktioner, så skal I bruge InnoDB"

Den sætning må du meget gerne uddybe lidt mere. Hvad er databasetransaktioner, og understøttes disse kun af InnoDB? Og er InnoDB meget langsommere end MyISAM?

Ellers mange tak for svaret :) Og læg lige et svar, selvom jeg lige vil vente og se, om nogen kan komme med noget input på det med serveren.
Avatar billede strych9 Praktikant
24. november 2005 - 20:55 #3
InnoDB er en storage engine som kan benyttes til MySQL. Dens største force i forbindelse med database transaktioner er vel at den er "ACID compliant", og den skulle også have bedre performance men afhængigt af applikationen.

God nok til at Oracle gad at købe InnoDB Inc.

Til gengæld kan du forvente at InnoDB er mere stabil. Altså forstået på den måde at den vil reparere sig selv bedre, hurtigere og mere pålideligt ved et uventet nedbrud. Det er en del af at være ACID compliant.

På et normalt RAID array kan InnoDB klare omkring 200 transaktioner i sekundet.
Avatar billede strych9 Praktikant
24. november 2005 - 20:57 #4
og ingen transaktioner vil gå tabt i et nedbrud, siden den bruger replay logs ligesom Oracle...
Avatar billede strych9 Praktikant
24. november 2005 - 21:12 #5
Hvad en databasetransaktion er forklares vel nemmest med et eksempel.
Hvis du i en database for en bank flytter penge fra en konto til en anden vil dette være en transaktion.

Dvs en transaktion godt kan bestå af flere database forespørgsler.
Først debiteres penge fra een konto
Dernæst krediteres de til en anden konto
Transaktionen er ikke fuldført før begge disse ting er gjort.

Derfor skal en god database have Atomicity (A i ACID), som garanterer at enten udføres hele transaktionen, ellers også annulleres den. Hvis databasen går ned lige efter den har debiteret en konto og ikke når at kreditere en anden, så skal den kunne finde ud af efterfølgende enten at annullere transaktionen eller fuldføre den.

Jeg er sikker på at dette er meget mere info end du egentlig ønsker, men nu spurgte du jo selv. =)
Avatar billede mantichora Nybegynder
24. november 2005 - 22:28 #6
Nej, det var skam rart at vide :) Mange tak.

Men stadig - arne_v antydede at InnoDB var en del langsommere end MyISAM. På vores projekt kommer der ikke til at foregå vildt vigtige queries, og det er ingen kæmpe katastrofe hvis en enkelt query kikser, hvis det kun er ved den sjældne begivenhed at serveren crasher, at det forekommer.

Vil du tro det bedst kan betale sig at holde sig til ISAM så, eller gå over til Inno?

Og kan I to ikke bare lægge et svar? Så opretter jeg spørgsmålet om serveren under webhotel eller sådan noget.
Avatar billede mantichora Nybegynder
24. november 2005 - 22:35 #7
- Hov forresten. Kan man overføre en MySQL database til Oracle senere, hvis man vælger at starte i det billige og kendte?

Jeg går stærkt ud fra man må kunne lave et dump, og inserte den ind i den anden, på en eller anden måde, men rart at være sikker.
Avatar billede strych9 Praktikant
24. november 2005 - 22:58 #8
Den primære forskel mellem de to når vi taler performance er så vidt jeg forstår at InnoDB er mere tung i dens hdd aktivitet.
Men hvis du har dine data og sådan noget som uptime kært, så skal du alligevel have databasen på RAID arrays. - Her er det mest skrabede du efter min mening slipper afsted med så at lægge databasen selv på et 2 disk RAID1, og logs på et andet 2 disk RAID1. Det vil sige 4 diske i alt, og måske mere hvis du vil have operativsystem på selvstændigt RAID også. - Den konfiguration vil være rimelig hurtig til at læse i databasen, og en anelse langsommere når der skal skrives til den. Så der kan man jo prøve at tænke lidt over hvor meget der henholdsvis læses og skrives.

Tjah, jeg ville bruge InnoDB.

Jeg har aldrig prøvet sådan en migration. Kan se at Oracle har et tool til det her:
http://www.oracle.com/technology/tech/migration/workbench/index.html
Men det er nu næppe noget der laves med 3 museklik må jeg gætte på.
Avatar billede arne_v Ekspert
25. november 2005 - 00:11 #9
Transaktioner har næsten ingen betydning for queries. Og InnoDB er  mindst
lige så hurtig som MyISAM til queries.

Men til INSERT og UPDATE er InnoDB meget langsommere end MyISAM (p.g.a. transaktions
supporten).

Transaktioner er ikke noget man vælger om man har lyst til at bruge eller ej. Hvis
ens problem stilling & applikation kræver det så har man brug for det.

Hvis man ikke har brug for transaktioner synes jeg at MySQL med MyISAM er et oplagt
valg: gratis DB med super performance.

Hvis man har brug for transaktioner så er PostgreSQL lige så god som MySQL med InnoDB
og de kommercielle Oracle, MS SQLServer etc. er markant hurtigere. Og derfor er
MySQL med InnoDB ikke helt så oplagt et valg efter min mening.

[alt sammen INSERT & UPDATE]
Avatar billede arne_v Ekspert
25. november 2005 - 00:15 #10
200 TPS lyder meget rigtigt - det er 12000 TPM

[top TPC-C rekord er idag 3.2 millioner TPM - på en DB2 server med 6500 SCSI diske]
Avatar billede strych9 Praktikant
25. november 2005 - 00:16 #11
yesh, InnoDB _skal_ afslutte INSERT & UPDATE med disk aktivitet, for sådan er den bygget, og det sætter hastigheden en smule ned. Angående pålidelighed er det et plus efter gængs opfattelse.
Avatar billede arne_v Ekspert
25. november 2005 - 00:18 #12
Det er ikke trivielt at flytte data MySQL->PostgreSQL eller MySQL->Oracle eller
MySQL->DB2, men for folk med erfaring i den slags er det dog ikke noget stort
problem.

Det store problem er hvsi du kode applikationen til at være database specifik. Brug
af database specifikke funktioner i SQL. Brug af database specifikke data typer.
Brug af andre database specifikke features som auto increment versus sequences.

Det kræver en meget bevidst indsats at undgå den slags.
Avatar billede arne_v Ekspert
25. november 2005 - 00:23 #13
Strengt taget sikrer transaktioner/ACID kun at databasen altid er konsistent
ikke at den er pålidelig.

Men da konsistens normalt er den absolutte top prioritet i databaser så passer
det jo fint.

Og i praksis er databaser med transaktions log også mere pålidelige. Eksistensen
af myisamchk utility afslører jo at MyISAM tabeller kan få problemer. Og så vidt
jeg kan forstå på erfarne MySQL administratorer så er det ikke uhørt at den skal
bruges.
Avatar billede mantichora Nybegynder
25. november 2005 - 14:36 #14
Tak for svarene :) .. og I må stadig gerne lægge nogle svar, så jeg i det mindste kan belønne jer en lille smule for jeres indsats.


Jeg har undersøgt det lidt. Oracle koster 30.000 kroner per processor, men det største problem er at man, så vidt jeg kan se, ikke kan downloade en trial, så man kan programmere lidt før man køber. Og jeg har ikke 30.000, og vi kan først få penge af investorerne når vi kommer med en funktionel prototype, så det er nok umuligt.

InnoDB koster 3700 per år (€495), og det er gratis til ikke-kommercielt formål, så jeg kan lave en prototype FØR vi bestiller det i så fald. Det er jo fedt nok.

Postgres derimod er helt gratis, og er også ACID compliant. Hvis den er lige så god som Inno, kan man jo lige så godt spare de 3700,- ... men er den lige så hurtig?
Avatar billede mantichora Nybegynder
25. november 2005 - 14:38 #15
Whoa.. det der Unicode-mess ovenover var et Euro-tegn. Det skulle stå:
InnoDB koster 3700 per år (495 euro)
Avatar billede arne_v Ekspert
25. november 2005 - 14:41 #16
du kan downloade en fuld Oracle til development

svar

MySQL med InnoDB engine er gratis så længe du bruger det internt
Avatar billede arne_v Ekspert
25. november 2005 - 14:41 #17
om igen
Avatar billede strych9 Praktikant
25. november 2005 - 17:23 #18
Hvis du melder dig ind i Oracle Technology Network (OTN) gratis så har du vist adgang til at downloade dev versioner af Oracle.. Måske er det ikke engang nødvendigt at være medlem.
Prøv at kigge lidt rundt på ftp.oracle.com hvis du er interesseret, men jeg synes nu nok ikke at det skulle være nødvendigt når opensource baserne lever op til dine krav. 100.000 brugere er ikke så meget i den verden der.. med mindre det er 100.000 samtidige brugere vi taler =)
Avatar billede mantichora Nybegynder
25. november 2005 - 18:32 #19
Heh. Nej, dog ikke. Jeg vil bare være sikker på at den kan klare presset. Når man tager betaling for en service, har det også bare at virke tilfredsstillende :)

Mange tak, begge to.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester