|
Miks ei kasutata andmebaasi serverit andmevahetuseks kahe ettevõtte vahel? Olen suhteliselt palju kokku puutunud kahe ettevõtte infosüsteemide ühildamisega. Näen, et töötatakse välja andmevahetuse protokolle ja tehakse rakendusi, mis töötavad üle veebi. Kas siis xml-i, wsdl/soap-iga või jsoniga. Igatahes -- selleks tehakse mingi eraldi lahendus. Miks ei kasutata lahendusena andmebaasi serverit ennast? Teisele ettevõttele tehakse andmebaasi kasutaja, millel on piiratud õigused (andmebaasi serverites on välja töötatud väga põhjalikud õiguste süsteemid, ka ühenduste arvu piirangud jms). Kõik läheb ju lihtsamaks: kasuta saab just nii pärida või andmeid lisada just nii nagu soovib, tal on täielik dokumentatsiooni, teegid, näited ja mida kõike veel. Olen seda siin-seal küsinud, aga olen saanud ainult hämmingut, et sellist asja küll lubada ei või, aga mitte keegi ei vasta MIKS. Palun siis turvalisuse ja muud eksperdid -- materdage seda mõtet. :) |
|
Eks seda tehakse ka, kui väga vaja, aga on päris mitu head põhjust, miks seda mitta teha:
EDIT: Üks oluline nüanss jäi puudu: mida laiem on rajapind kahe organisatsiooni vahel (ning baasiliides on paratamatult päris lai), seda suurem on kliendi pool kiusatus sinna otsa mingeid totakaid häkke ehitada, millest vabanemine võib hiljem ootamatult raskeks osutuda. Kõige totram näide on see, kui klient rappis veebirakendusest selle loogika välja ning ehitas sinna otsa oma UI. Küll siis oli nuttu ja hala, kui pahaaimamatu teenusepakkuja rakendust uuendas ja poole selle siseelust ära muutis. |
|
Üldiselt oleks mõistlik andmete salvestamine ja nende esitamine eraldi hoida. Kui kaks ettevõtet vahetavad andmeid API abil, siis pole vahet kuidas kumbki neist andmeid reaalselt hoiustab, niikaua kuni järgitakse kokkulepitud protokolli. Andmebaasimootori uuendamine või vahetamine ei lõhu sellisel juhul ka teise osapoole kliendi rakendusi, mis seda baasi kasutavad, juhul kui uuendamisega mingite käskude süntaks muutus vms. Mingitel juhtudel aga on andmebaasi jagamine eri osapoolte vahel täiesti õigustatud. Näiteks kui kaks osapoolt kasutavad ühist Redise serverit, siis saavad kasutada selle mootori poolt pakutavaid lisahüvesid nagu Redise Publish/Subscribe lahendust. |
|
Struktuurseid andmeid (nt arve ja tema read) on lihtsam tagastada ühe XML-na, kui paluda kliendil andmebaasis kaks päringut teha. Samuti arvan ma, et otse tabelite kallal käimine seob välise liidese liialt realisatsiooniga. Ja kui on vaja lamedat tabelit teisest süsteemist pärida, siis on lihtsam see tagastada CSV failina. Võrreldes XML-ga on see kompaktsem ja võrreldes otse andmebaasi külge ühendumisega universaalsem. Teistpidi olen Kaikoga nõus, kuid selleks peaks andmebaas olema üles ehitatud nagu API - kindlad eraldi nimeruumis funktsioonid/vaated, mida saab välja kutsuda väljastpoolt. Tänapäeval on liiga vähe andmebaase selliselt disainitud. |
