Bet kuris dabartinis kompiuteris gali būti vidutinės įmonės Tornado IS serveriu.

Viskas priklauso nuo operacinės sistemos (OS) ir tinklo ir/ar Interneto greičio.

Operacinė sistema

Praktika rodo, kad daugiausia naudojamos Linux ir Microsoft Windows serverių operacinės sistemos. Kiekviena turi savo pliusų ir minusų.

Svarbiausia, kad OS būtų serverinė OS (pav. MS Server 2003, Server 2008), nors iš bėdos dirbs ne serverinės MS Windows 7, Vista, net XP (yra OS parametrai, kurie "priverčia" kompiuterį elgtis daugiau kaip serveris, o ne darbo vieta).
Linux OS paprastai yra serverinės OS.

MS Windows OS yra mokamos ir su pilnu palaikymo paketu kainuoja ne taip jau mažai.
Linux OS paprastai yra nemokamos. Tiesa, su pilnu palaikymo paketu kažkiek kainuoja.

Paprastai MS Windows OS naudoja daugiau resursų.
Linux OS, šiuo požiūriu, yra gerokai taupesnės. Tuo labiau, kad instaliuojant, galima atsisakyti komponentų, kurių nereikia. Windows taip "išlaižyti" serverio paprastai neleidžia.

IS darbui rekia šių programų / servisų / tarnybų:

Jos gali būti idiegtos kiekviena atskirai, nors yra ir "paketų", kurie įdiegia viską kartu: WAMP, XAMPP, LAMPP.
WAMP labiau tinka programuotojui, nes leidžia darbo vietoje-serveryje turėti kelias skirtingas tarnybų versijas ir jomis išbandyti kodą.
Pastebėta, kad kažkurios WAMP ir Kaspersky Antivirus versijos "nedraugauja".

HTTP serveris

MS Windows OS turi savo HTTP serverį (Microsoft Internet Information Server). Iš Linux yra atėjes Apache HTTP serveris. Mes jį ir naudojame.

Jei OS Windows, paprastai 80 portas jau būna panaudotas, todėl tenka naudoti 8080, 81 ir pan.
Populiari nuotolinio valdymo programa TeamViewer irgi naudoja 80 portą, todėl gali būti problemų. Beje, Skype - irgi.

Apache versijos - 2.0 ir aukštesnės.

FTP serveris

FTP serveris naudojamas kodo atnaujinimams ir nėra būtinas. Nors labai pageidautinas.
Visai normaliai dirba FileZila Server paskutinės versijos.

PHP

Programavimo kalba PHP parašytas visas IS kodas. Išbandyta su PHP 4 - 5.2.

Kadangi PHP tiesiogiai (kolkas, žadama PHP 6) nepalaiko UTF-8, yra atskira IS kodo versija, palaikanti šią koduotę.

MySQL

IS dirba su MySQL4 ir naujesnėm versijom. Geriau naudoti v.5 (žr. žemiau).

NB Dabartinis (2012-06-28) mySQL leidžia apjungti iki 60 lentelių, taigi bendrame sąraše gali būti iki 20 rodomų stulpelių; tai priklauso nuo objekto duomenų tipo.

MyISAM lentelių dydis

Paskutiniu metu vis daugiau TORNADO naudotojų susiduria su lentelių tblFiles ir tblPropL dydžio problema (jose talpinami objektams priklausantys failai): kai lentelių dydis pasiekia 4 GB, TORNADO rodo klaidą, kad lentelė pilna ("Table is full").

Tai yra (buvo) mySQL apribojimas. Bendrai, tai ne tik mySQL.

Pirma, kiekvienas procesorius ir kiekviena OS (Windows ar Unix/Linux, 32 ar 64 bitų) turi savo apribojimus failo dydžiui.

Daug neieškojau, citata iš mySQL svetainės:

Win32 w/ FAT/FAT322 GB / 4 GB
Win32 w/ NTFS2 TB (possibly larger)
Linux 2.2-Intel 32-bit2 GB (LFS: 4 GB)
Linux 2.4+ (using ext3 file system)4 TB
Solaris 9/1016 TB
MacOS X w/ HFS+2 TB

Antra, mySQL versija.

MySQL 3.22 MyISAM lentelės dydis galėjo būti iki 4GB. MySQL 3.23 jau leido lenteles iki 8TB. Kaip jau minėta, svarbu ir OS leidžiamas failo dydis. Visos versijos turi parametrą myisam_data_pointer_size, nurodantį kiek baitų naudoti vidiniams eilučių pointeriams. Standartiškai mySQL4 jo reikšmė yra 4, o mySQL5 - 6 (gali būti 2..7). Skaičiuojame:

28x2 65 536 iki 64KB
28x3 16 777 216 iki 16MB
28x4 4 294 967 296 iki 4GB
28x6 281 474 976 710 656 iki 256 TB. Gal užteks?...
28x7 72 057 594 037 927 936 iki 65 536 TB. Tokios DB kopija per 1G greičio liniją užtruktų apie 16.6 metų...

Standartinį pointerio dydį baitais galite pamatyti komanda

SHOW GLOBAL VARIABLES LIKE 'myisam_data_pointer_size';

Jei reikia, šis parametras gali būti pakeistas mySQL cfg-faile.

Taigi:

NB Turėkit omenyje, kad standartinio pointerio dydžio padidinimas lėtina serverio darbą.

Jei labai striuka su serverio resursais ar norite iš jo išspausti kaip įmanoma daugiau, lentelėms, kurios tikrai niekada nebus didelės, nurodykit myisam_data_pointer_size=2 ar 3. Tai kiekvienai duomenų eilutei ir indeksui sutaupys po kelis baitus ir kelias sekundes užklausai.

Trečia, jei OS leidžia ir negalime pakeisti mySQL versijos ar pataisyti mySQL cfg-failo, išplečiame lentelę.

NB Šis metodas taikomas tik lentelėms su BLOB ar TEXT stulpeliais.

Taigi:

NB Komanda gali vykdytis LABAI ILGAI.

Deja, 32-bitų procesoriams vistiek lieka apribojimas: 4.2 milijardų įrašų. Jei reikia daugiau, naudokite serverį su 64-bitų procesoriu.