milyen adatbázis production-ba?

Kellene nekem egy megbízható adatbázis motor egy alkalmazáshoz. Néhány elvárás:
- win32 platform,
- ne MySQL (GPL és az éves licenc nem bejövős),
- ne Postgres (nagyon rossz tapasztalataim vannak),
- ne oracle (nagyon drága),
- ~ 1 millió rekord évente,
- stabil.

Nézegetem a hsqldb-t meg a derby-t, de nagyon megoszlanak a vélemények. Esetleg ha valakinek van tapasztalata ezekkel, vagy mással, azt szívesen venném.

Hozzászólások

Mi a bajod a MySQL-el? Atomstabil és iszonyatosan skálázódik (wikipedia, pl.)

A GPL licenc a forráskódjára vonatkozik, nem a felhasználásra! Azt csinálsz benne, amit akarsz. A tárolt eljárásaid, rekordjaid a te szellemi tulajdonodat képezik.

--
The Net is indeed vast and infinite...
http://gablog.eu

Szoval jah a mysql skalazodas nem skalazodas mind1 ezen a teren, ketlem hogy 8 magot 8g ramot es a benchmarkban hasznalt x4150 mind a (nempontos de talan) 8 sas diskjet akarna hajtani es a szuk keresztmetszet az innodb mutexekben lenne :))

Anno telepitesre kerult egy 4.1 mysql most jar valahol 400napos uptime-nal evente 1millional tobb sor kerul bele. Es kb no more comment.

drk

hatmost erted. a skalazodas itt kezdodik :)

most neztem meg az egyik keszulo termekunk dbje (mysql!) milyen terhelest kell, hogy elviseljen: napi 130M uj(!) rekord (1000 insert tranzakcio/s, es egy ilyen tranzakcioban van tobb insert is).

mi azert 3k/s -el teszteljuk, az ugyfel meg remeljuk nem hajtja tobbel..

- a GPL expliciten komondja, hogy a GPL-es szoftvert arra használad amire csak akarod, és még a forrás is ott van
- GPL-es szoftvert továbbadni csak forrással együtt, GPL kompatibilis licencel lehet
- egy szoftver akkor lesz GPL, ha GPL alatt adod ki, vagy GPL-es kódot tartalmaz, vagy GPL-es kódhoz _linkeled_

Szóval ha egy program GPL-es környezetben fut, vagy GPL-es szervizhez csatlakozik, attól a GPL még nem vonatkozik rá. Ergo a te licenced lehet akármilyen proprietary, attól még használhat GPL-es adatbázist. A windowsnak és IE-nek sem kell GPL-nek lennie, mert GPL-es oprendszeren futó GPL-es webszerverhez csatlakozol vele.

Sajnos közben utánanéztem, és rá kellett jönnöm, hogy a MySQL kliens libek GPL alatt vannak. Azokat viszont linkelni kell, így a te programodnak is GPL alatt kell lennie, ha a MySQL GPL kiadását használod. Egészen pontosan GPL, vagy az alábbi licencek valamelyikének: http://www.mysql.com/about/legal/licensing/foss-exception/

Mondjuk egy MSSQL-hez képest a MySQL fizetős változata még mindig elég olcsó, és akkor a libeket is használhatod kényedre-kedvedre.

--
The Net is indeed vast and infinite...
http://gablog.eu

nagyon sokminden szoba johet attol fuggoen h milyen feladatra kell

pl. nalunk sqlite3 ban van egy eles adatbazis mert tudtam az elejen h 1 query/perc nel nem lesz tobb soha es 3 tablabol all az egesz, de ha esetleg a jovoben ez valtozna akkor lehet egyszeruen migralni *sql-re

oracle bizonyos megkotesekkel hasznalhato ingyen -express-

http://www.oracle.com/technology/products/database/xe/index.html

db2 ugyszinten

http://www-01.ibm.com/software/data/db2/express/download.html?S_TACT=no…

--
_

1mio rekord évente az olyan borzasztóan kevés, hogy sqlite

Mi volt a postgres-sel a probléma?

A Derby meg a hsqldb alapján: Java és egyfelhasználós lenne a dolog? Fejlesztésre biztos jó mindkettő. Hsql-re rengeteg a példa.
Ha Java, akkor legyen hibernate, jpa vagy izé és lehet cserélni az alkalmazásod alatt a konkrét rdbms-t, ha többre lesz szükség a jövőben.

Postgresql-t megnézném a helyedben újra, mert szerintem megéri.

Mint minden adatbazist, igy a postgrest is hangolni kell, bizonyos rekordszam adatbazismeret felett egyszeruen nem optimalis az alap beallitas, ez igaz meg a oracle-ra is. Valoszinuleg nem csak klick-klick istall es megy, hanem szepen be kell allitani a cache-t,a rendezesi memoriat, a vaccum parametereket, meg stb... Egyebkent a postgres nagyon jol tuningolhato, lattamm rajta elesben 20M+ recordszamu, 30-40 GB -os adatbazisokon kilometeres sql-ek villam gyorsan futni. Egy baja van csak a postgresnek, ha clusterzni akarod az nem megy de egyebkent megbizhato es gyors, csak mint mindenhez erteni kell hozza. Ja es nagyon jol dokumentalt, van egy tunning guide is ha azon vegigmesz, tolod a exlain-eket akkor nagyon sokat lehet tanulni. Ja es viszonylag konnyu rola atallni oracle-ra

Nekem pl az, hogy:
1) rettentő macerás üzemeltetni (akkor most pg vagy p kezdetű parancs kell? stb. ez csak 1 példa)
2) terhelés mellett exponenciálisan lassul
3) megbízhatatlan (lásd lent)

Hol volt hol nem volt, volt egy megrendelő, aki mindenáron psql-t akart. Elkészült az alkalmazás, majd minden teszten átment (a sebességet hagyjuk. Ugyanaz a teszt mysql-el sokkal jobb eredményt hozott már 10000 rekord felett is, ráadásul lineáris(!) maradt a csík). Aztán éles üzemben jött a baki: elhasalt valami, ezért rollbackelte a tranzakciót. CSAKHOGY! A sequence-t nem állította vissza, és higgyétek el, az APEH-et nem igazán érdekelte, hogy azért hiányzik egy bizonyos sorszámú számla, mert bugos az adatbáziskezelő...

1. loser vagy
2. what?
3.mysql nem tamogatja a felet se annak amit a pg, fogalom nelkuliseg++, latszik h soha eletdben nem csinaltal semmi komolyat adatbazissal.

"A sequence-t nem állította vissza, és higgyétek el, az APEH-et nem igazán érdekelte, hogy azért hiányzik egy bizonyos sorszámú számla, mert bugos az adatbáziskezelő..."

:DDDD ezen konkretan nyerittem

nagyapa te vagy az?

--
.

Na haragudj, ilyet nem szoktam írni, de ez a 3. ez baromság.

Elmondom, hogy ha egy oracle-ben nem megy a tranzakció, akkor ott se állítja vissza a rollback a sequence-et. Még jó hogy...

Most gondolj már bele!

Mondjuk indul egymás után négy tranzakció, mindegyikben kérünk a sequence-ből egy értéket, és mondjuk a második hibás, tolunk egy rollback-et...

Akkor szerinted hová kéne állnia a sequence-nek?

A sequence nem arra való, hogy folyamatosan egyesével növekvő sorszámozást kapj, hanem arra, hogy pl. egyedi azonosítót generálj.

G

Hu ez tenyleg komoly volt. Micsoda ervek, nem azert de az egy dolog, hogy valami valamit nem tud, az egy masik, hogy nem ertesz hozza. Az a baj hogy az MS es a google leszoktatta az embereket arrol, hogy megertsek, hogy a dolgok hogy mukodnek. Klick, klick install ha nem megy szidom, hogy szar. Ha kicsit tobb idot fektet a dologba akkor beir egy ket dolgot a google-ba es ha nem talalt az elso 3 talalatban megoldast akkor feladta. A dolgokat meg kell ismerni, el kell melyedni hogy mukodnek, felterkepezni tesztelni, es utana lehet velemenyt mondani. Eleg sok IT-s dologggal foglalkoztam, es mindig probaltam megerteni, hogy a dolgok hogy mukodnek, sokszor nem szarabb A, mint B csak mas, A egyikben jobb B masikban, van ami mindenben jo, csak sok ev elsajatitani, es pilotavizsga kell a legegyszerubb dolgokhoz olyan bonyolult pl. DB2(sajat velemeny).

Oracle XE?

Ingyenes. Igaz, 4G adatkorlát. Nade évi 1 millió rekorddal? Évtizedekig jó lesz :-)

Utána meg esetleg archiválsz belőle? Vagy ha azt nem lehet, akkor nem ezt választod.

G

Jogos.

Hát ha valaki mondjuk képeket, vagy más nagyméretű adatokat akar benne tárolni konkrétan a rekordban, annak ez nem jó.

De az nem is fog XE-t választani.

A feladatkiírásból volt egy olyan érzésem, hogy ez nem olyan feladat, ahol ilyen iszonyú adatmennyiségek száguldoznak majd.

Persze ez csak feltételezés. Csak azért írtam, hogy ha mondjuk nem tudott erről a lehetőségről, akkor most már tudja, hogy oracle nem feltétlenül egyenlő a drágával.

G

MSSql

Nem GPL :)
Win32
Elterjedt ismert környezet -> Van support, hibajavítás, fejlesztő eszköz, ember hozzá.

+1 postgres (robusztus, csak (legalább egy picit) hangolni kell
a RAM, felhasználás jellege, stb ismeretében)
+1 mssql (újabbak jóval többet bírnak, mint pl. a 2000 (el is telt 1 kis idő azóta...), bár skálázhatóságnál rezeg a léc,de a platform miatt
nem hanyagolandó)

Pont ezt akartam javasolni. Még jó hogy rákerestem előtte.
http://www.firebirdsql.org/
A FireBird SQL a Borland Interbase 6.x forkjával indult, de azóta is eltelt néhány év, és biztosan fejlődött is jócskán.
Mondjuk én beérem a GPL-es MySQL-el, így nem is nagyon próbáltam mást. :-{)E
--
не закурить! (Ne gyújts rá!) не куриться! (Ne dohányozz! Ne füstölögj!)

Régen a Sybase ase-jának valamelyik linuxos változata (talán 10.3-as) is ki lett adva ingyenes használatra bizonyos feltételek mellett, esetleg azt is érdemes megnézni, én jól elboldogultam vele, ha az mssql-t esetleg ismered akkor ez is ismerős lesz :)

Postgres +1 :-) bár látom, nem nagyon vagy meggyőzhető. :-( Lehet, hogy van olyan eset, amikor nem két kattintás feltenni, de én inkább áldoznék egy fél órát a telepítésre, mint sokszázat valami egzotikus (é: ratyi) dbszerver supportjára.

Más: ha már a hsqldb-t nézegeted, akkor szerintem gyorsan felejtsd is el, és nézd meg a H2-t, azt hiszem, ugyanaz a srác írta, csak ezúttal rendesen :-) Tud titkosított db-t használni, és sokkal gyorsabb is. http://h2database.com

MaxDB. A mysql.com-rol toltheto le, de *SEMMI* koze a mysql db-hez. Anno SAPDB neven futott, az SAP fejlesztette, de a mysql atvette par eve.
Ha nem birod a tobbit, nezd meg - egesz szep enterprise feature-i vannak.

Amugy meg SQLite. Ha nem kell tobb helyrol elerni (aka. 1 szerver van es kesz), akkor tokeletes, nem is kell jobb.

A hsqldb/derby és a postgres/mysql/oracle, stb. nagyon nem egy kategória. Ha te hsqldb-n gondolkozol, akkor valami nagyon egyszerű feladatra kellhet neked az rdbms. Amúgy remélem tudod, hogy a hsqldb például alapból memóriában hozza létre a táblákat (hacsak azt nem mondod neki, hogy create cached table xxxxx) és amikor bezárod az adott adatbázist, akkor menti ki sima sql szövegfájlba (create table.... insert into... stb.), amit az adatbázis megnyitásakor betölt. Szóval valamit benézhettél!

Mekkora vasról, milyen felhasználásról van szó, milyen felhasználói szám? mennyi adatról van szó? (Az 1M rekord/év nem sok, azt bármi elviszi, a kérdés csak az, hogy mekkora egy rekord...)

Már volt az Oracle XE-ről szó, ami fejlesztéshez, kis adatbázisokhoz tökéletesen klappol, a TOAD meg egyszerűen mindent tud, ami kell a fejlesztéshez. Ha az 1CPU, 1G RAM 4G DB, csak egy DB egy gépen nem vállalható production rendszerben, akkor NE Oracle, NE az MSsql free verziója, mert mindkettőben megvan ez a limit, akkor valami izmosabb jószág, pl. SyBASE, DB2 -- bár ezek sem lesznek olcsók.

Kellene tobb info az adatbazis mereterol es forgalmarol. Mekkora egy rekord, milyen csucsok lehetnek (hany connection/query egyszerre), bovulhet-e az 1M row/year szam, webalkalmazas lenne vagy valamilyen asztali cucc szerveroldala, stb... ez igy rem keves igazi rdbms tervezesehez.

Tovabba mindenkepp kelleni fog egy emberke, aki ert is a kivalasztott RDBMS teljesitmenyhangolasahoz, hogy vissza lehessen vezetni az alkalmazasba teljesitmenynovelo dolgokat. Ugyanis az is lehet, hogy nem az RDBMS szar, csak ti nem ismeritek ki magatokat az adatbazisszerverek mukodeseben es csinaltok felesleges dolgokat is, amiket elhagyva esetleg ugrasszeruen none a teljesitmeny.

Amiket itt elmondtal dolgok mind arra mutatnak, hogy nektek nem csak az RDBMS kivalasztasa teren van gondotok. Ezen felul alultajekozottnak tunsz az emlitett adatbazisszerverek ismereteiben. Marpedig hianyos ismeretek birtokaban egyontetuen kimondani valamirol hogy pocsek nem a legjobb dolog. Probald feltetelezni, hogy lehet hogy ti csinaltok valamit rosszul.

Kompromisszumot marpedig kotni kell. Arrol nem beszelve, hogy mas egy stresszteszt, de lehet hogy ahova tervezitek az alkalmazast, a teszt fele terhelese nem lesz elerve. Szerintem fel kellene merni, hogy a celfeladatnak mik a pontos igenyei, es utana lehet gondolkodni azon, milyen db szerverre essen a valasztas.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.