» »

[Java] podatkovna baza

[Java] podatkovna baza

matejv ::

Rad bi uporabil eno podatkovno bazo, za program ki ga delam v javi, vendar ne vem kako naj se problema lotim. S podatkovnimi bazami v javi še nisem imel izkušenj. Pač delam nek program za vodenje evidence, ki bi shranjeval podatke v datoteko. Kaj mi predlagate?
  • spremenilo: snow ()

stealth.us ::

Si ze poskusil s JBuilderjem in programom za podatkovne baze, ki je vgrajen v njem?

matejv ::

nope, trenutno delam v eclipsu. in pri eclipsu bi tudi rad ostal.

MasterBlaster ::

Tk je pa pika .

dr. Zgemba ::

Kaj pa Derby?

Zgodovina sprememb…

matjazx ::

Tole si poglj

l0g1t3ch ::

Neki me zanima recimo. da bi imel eno bazo in potam java aplikacijo, ki to bazo uporablja.

A to potem na server poištaliraš to bazo, ki bi jo uporablju narediš tabele za podatke in relacije med njimi pa vse to in potem tisto java aplikacijo preko ustreznega jdbc drajverja povežeš s to bazo, ki si jo naredu na serverju.
Kaj pa če imaš več odjemalcev, ki uporabljajo isto bazo ? A so kaki problemi z sinhronizacijo pa to ? Majo baze že vgrajene kake mehanizme za to ?

Sergio ::

Ja. Transakcije, na primer. Za sinhronizacijo je ponavadi odlično poskrbljeno prav iz strani podatkovne baze.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

l0g1t3ch ::

Sepravi pol ni problem če dva programa dostopada do istega podatka. Recimo prvi dostopa do nekega vnosa, da ga spremeni medtem pa že drugi zahteva ta isti podatek.
Torej bo baza ta podatek za čas pisanja zaklenla dostop in bo pol tisti ki ga je zahtevu dobu že popravljen podatek. In isto pri branju če nekdo že neki bere se bo z pisanjem počakal, da dokonča tisto branje ?

l0g1t3ch ::

Kolkr sm dele gledu moreš sam skrbet za zaklepanje baze no sm mislu da je to avtomatsko ampak ni panike.

Me pa še znaima kaj se razlikujejo različne JDBC API version. recimo 2.x, 3.x, 4.x a to se pokriva z javo 1.2 , 1.3 , 1.4
In pa kaj pomeni Driver Type ? Maš tipe 1,2,3,4

kopernik ::

Baze podpirajo transakcije in dokler prvi ne zaključi svoje transakcije (commit), drugi sprememb ne bo videl. Glede sočasnih dostopov tudi ni problema, saj baze poskrbijo za zaklepanje (mislim, da gre za pessimistic-locking ???, bo kdo drugi kaj več povedal).

Skratka, tebi kot uporabniku (iz stališča baze) ni potrebno skrbeti za te težave. Samo poskrbi, da se ne boš zakvačkal s transakcijami (commit, rollback).

AlexP ::

Naj te skrbi, tvoje težave rešuje vsaka resna podatkovna baza: http://en.wikipedia.org/wiki/ACID

Zgodovina sprememb…

  • spremenil: AlexP ()

l0g1t3ch ::

Ok to za sinhronizacijo je potem vredu kaj pa tole še od prej vprašanje


Me pa še znaima kaj se razlikujejo različne JDBC API version. recimo 2.x, 3.x, 4.x a to se pokriva z javo 1.2 , 1.3 , 1.4
In pa kaj pomeni Driver Type ? Maš tipe 1,2,3,4

kopernik ::

JDBC 4.0 je, kolikor vem, šele Draft Specification in dejansko še ni zunaj. JDBC 3.0 pa je zunaj že par let in je del Java SDK 1.4 (in, zaenkrat tudi del Jave 1.5).
Glede DriverType nimam pojma, o čem govoriš. Nemara o tem, kako se povezuje na bazo (prek ODBC, native klicev v C-ju ali je vse napisano v Javi) ? Aha, nekaj sem našel tukaj. Mah, sploh se ne obremenjevati s tem. Jaz se do sedaj še nisem.

Na kateri bazi pa misliš delati ? Navadno je itak tako, da je ustrezna jdbc knjižnica (jar) za delo z bazo kar priložena distribuciji.

l0g1t3ch ::

Še nevem z kero bazo bi delu :D
Mogoč kar z paradoxom, ki je lih v Delphiju že. Pa s tem sm tud že kar nekaj naredu, mislu sm ga pa predvsem zato, ker mam že neki narjene baze v tem pa d bi jih kar ponucov naprej za tole v Javi če se sploh da ja :8)

Drugač pa nevem kero bi uporabu. Kaj ti priporočaš ? Na fmf-ju sm gledu so delal neki z postgreSQL pa mySQL se mi zdi ql k je tud zastonj, drugače pa še nimam prave ideje katero bi uporabu.

kopernik ::

Mysql je kar vredu, na njihovi dwonload strani imaš poleg ostalih stvari tudi MySQL Connector/J, ki je pravzaprav JDBC knjižnica za povezavo z bazo.

Lahko preveriš tudi Apache Derby, ki je baza napisana v Javi.

Opcij je veliko, imaš še postgresql in nenazadnje tudi Oracle, ki je za osebno uporabo zastonj. S paradoxom (dbase ?) pa iz Jave nimam izkušenj ... najbrž se da kje kaj dobiti, ne vem.

drejc ::

Dokler nimaš 10000+ tabel bo xml čez glavo...parserji so pa tak vgrajeni v jre (SAX,...). Imel boš standalone aplikacijo in preglednost nad vso kodo. Z bazo moraš že računat na popravke drugih al workarounde, zavzame dodaten plac in je nasploh overkill. XML's the way!
"Rise above oneself and grasp the world"
- Archimedes of Syracuse

Fizikalko ::

Ne govori neumnosti, važna je predvsem količina podatkov, ne pa toliko št. tabel.

Sergio ::

XML se nikakor ne more primerjati s podatkovnimi bazami. Ima tvoj XML kaksn b-indeks, cist tko, ce bi hotel hitro iskanje? C'mon... :D
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Fizikalko ::

To pa sploh, da o kakšnem clusternig indexu sploh ne govorim...

Itak je pa namen XML-ja popolnoma drugačen - avtomatizirana izm,enjava podatkov, ki je hkrati berljiva in enostavna, osnovana na tekstovnem standardu. Ne pa za shranjevanje podatkov, sploh, če se po njih išče le fragmente. XML ni relacijski, ampak hierarhični.

Sicer pa - kdor ima 10000 tabel, ima obupen podatkovni model, BTW.

Sergio ::

Se ne bi mogel bolj strinjati.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Sergio ::

Uf, še tole o SAXu. Sicer je res precej hiter in vse, ampak še vedno ti bo SAX parser moral obiskati VSAK tag, kar pomeni da boš imel callback funkcijo za vsako malo stvar ki se ti pojavi v XMLju.

Bolje od DOM modela, ki ti celotno strukturo vrze v RAM, ali vseeno. Za res (res) hitro parsanje si poglej mogoce STaX, ampak to je ze off-topic.

V glavnem... Ostanite pri podatkovnih bazah. Ce vam je pa ze tko vsec XML, pa napisite kaksn generator ki vam bo XML skreiral ven iz baze ;-)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

drejc ::

Mislm kaksne kle klamfate, to ni res. Cemu vse je XML namenjen in cemu ni. Kolk nanosekund je SAX pocasnejsi od B- indeksiranja in kolk je boljs se zanasat na 3rd party programe ter ODBCje. Keep it simple and robust!

10000+ tabel slabo dizajniran PB? Cmon man, ne bit tko omejen.
"Rise above oneself and grasp the world"
- Archimedes of Syracuse

Fizikalko ::

No,ne bit preveč pameten, kot DB2 administrator in preformance monitorer bom pa ja vedel, kaj je dobro postavljena baza in kaj ne. Da pa tega ne veš, da XML niti ne skuša biti konkurenčen na tem področju, saj to niti ni njegov namen (kot sem že napisal), je pa tvoj problem. Najprej je treba normalizacijo in morebitno denormalizacijo baze narest in po tem psotopku nikakor ne moreš dobit toliko tabel. Če pa za vsak drek delaš novo, si pa sam jamo koplješ, IMHO.

Glede parserjev: SAX je precej hitrejši za selektivno branje XML dreves, ki niso preveč globoka (razvejana) in so precej dolga. DOM je de facto za manipulacijo s podatki (ok, za Javo uporabiš lahko JDom).

Zgodovina sprememb…

  • spremenilo: Fizikalko ()

l0g1t3ch ::

A katera baza recmo derby k je baje dost ql za javo podpira, da vanjo shranjuješ objekte nekega javanskega razreda ?
Zdaj te objekte hranim v vektorju, bi jih pa rad trajno hranil.

In pa kaj je bolj smiselno, da bi v bazi hrani te objekte, ki jih ni veliko oz pod 1000 in jih ko program zaženem skopiram v vektor in tam obdelujem.
Ali, da te podatke hranim direkto v bazi v klasični tabeli stringov in boolean vrednosti. Stem, da zdaj vsak objekt hrani cca 50 podatkov teh dveh tipov in vsebuje še nekaj metod, ki dodatno prinesejo še 10 boolean spremenljivk in nekaj stringov.

pa še čist tko za mimogrede. Pri Javi so zmer učil, da spremenljivke deklariramo, kot private njihovo vrednost pa spreminjamo z get in set metodami. Pa me zanima, kolk je to dejansk smiseln v mojem primeru, zdej mam za vsak podatek get in set metodo, kar znese ogromno te solate :D pa me zanima kake so nevarnosti, če bi spremenljivke ble public in bi do njih enostavno direkt dostopu

zdj recmo iz vektorja poberem objket vn razreda Vnos in dostopam do imena vn.getIme(); pol bi pa sam mu vn.ime

PaX_MaN ::

Jst uporabljam HSQLDB, ki je tudi čistokrvna Java spisana v javi. Sodeč po testu na strani naj bi bila nadmočna ene parim drugim popularnim bazam. Poskusi. izgubit nimaš kaj. Je pa res, da je bolj malo primerov kako se jo uporablja, ampak ni pene, trial & error never fails :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

java datapool - derby

Oddelek: Programiranje
62195 (2044) jlpktnst
»

namizna aplikacija v javi

Oddelek: Programiranje
371789 (1302) urosz
»

java, zajem podatkov iz DB

Oddelek: Programiranje
101180 (912) l0g1t3ch
»

Uporaba SQL brez serverja v Javi

Oddelek: Programiranje
51205 (1153) B-D_
»

java in zapis v podatkovno bazo

Oddelek: Programiranje
71962 (1830) jogurtTM

Več podobnih tem