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.
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".
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 naudojamas kodo atnaujinimams ir nėra būtinas. Nors labai pageidautinas.
Visai normaliai dirba FileZila Server paskutinės versijos.
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ę.
IS dirba su MySQL4 ir naujesnėm versijom. Geriau naudoti v.5 (žr. žemiau).
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.
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/FAT32 | 2 GB / 4 GB |
Win32 w/ NTFS | 2 TB (possibly larger) |
Linux 2.2-Intel 32-bit | 2 GB (LFS: 4 GB) |
Linux 2.4+ (using ext3 file system) | 4 TB |
Solaris 9/10 | 16 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:
myisam_data_pointer_size=x
ir restartuojame servisą.
myisam_data_pointer_size
galios tik naujai kuriamoms lentelėms, kurioms nebus nurodytas parametras MAX_ROWS
.
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ę.
Šis metodas taikomas tik lentelėms su
BLOB
ar TEXT
stulpeliais.
Taigi:
Būtinai padarome DB kopiją.
Prisijungiame prie DB ir gauname lentelės aprašymą:
SHOW TABLE STATUS FROM 'db-vardas' LIKE 'lenteles-vardas'
Parametro AVG_ROW_LENGTH reikšmę apvalinate į didesnę pusę su ATSARGA ir užsirašome. Vykdome
ALTER TABLE 'lenteles-vardas' MAX_ROWS=planuojamas-įrašų-skaičius AVG_ROW_LENGTH=užsirašyta-reikšmė
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.