Nem tudom jó helyre nyitom-e a topicot, ez tűnt a legjobbnak.
Engem az érdekelne, hogy a 32bites és a 64bites rendszerek kompatibilisek-e egymással adatfájlok szintjén, avagy sem. Magyarul cserélgethetem-e szabadon a különböző verziókat egy gépen, úgy hogy közben a (bináris) adatfájlokat másolgatom? Az adott programtól függ, vagy globálisan kijelenthető hogy nem lehet gond, esetleg egyáltalán nem ajánlatos ilyet csinálni?
- 4483 megtekintés
Hozzászólások
Az adott programtól függ
Ennyi. Ezt kár ennél tovább ragozni.
- A hozzászóláshoz be kell jelentkezni
Azért általánosságban elmondható, hogy ha egy felhasználói program nem kompatibilis így, akkor az nagyon igénytelen.
- A hozzászóláshoz be kell jelentkezni
Persze, de ez a felhasználó szemszögéből alapvetően csak indikatív dolog.
Hány emberről/cégről hallottál, aki aszerint választ az Oracle, a Sybase, meg mondjuk a DB2 közül, hogy melyiknek hordozhatóak a bináris adatbázisfájljai szóhossz-, endianness- és cpu-architektúra-függetlenül? Ez nem életszerű.
- A hozzászóláshoz be kell jelentkezni
Pontosan.
Annál is inkább nem életszerű, mert ahol tényleg kiszolgál a szerver, ott a sebesség sosem kielégítő (ahol az, ott sem az), így aztán bűn volna azzal terhelni a feldolgozást, hogy a 32 bites megoldások overheadjét fojtony nyögje a 64 bites kód (elég bajuk van az adatfeldolgozóknak a multibájtos karakterkészletekkel). Az egyszeri migráció/konverzió tisztább, szárazabb érzés.
- A hozzászóláshoz be kell jelentkezni
Elmeletben konnyu ezzel dobalozni, a valosagban amig nincs serializer api tamogatas pl akarcsak a pid tipushoz, addig eleg nehez ezt a fajta igenyesseget elvarni. Ki tudja milyen tipus az 32 vagy 64 biten vagy akarmilyen architekturan, plane elore latni hogy 2 ev mulva jonnek a 256 bites gepek ahol a pid a mostaninal 4x nagyobb lesz ;)
De lehet zoldseget mondok mert szerencsere ezer eve nem kellett raneznem ilyen temaban :)
--
cythoon
- A hozzászóláshoz be kell jelentkezni
> a valosagban amig nincs serializer api tamogatas pl akarcsak a pid tipushoz
printf ...
> Ki tudja milyen tipus az 32 vagy 64 biten
/proc/sys/kernel/pid_max (since Linux 2.5.34)
This file specifies the value at which PIDs wrap around (i.e., the
value in this file is one greater than the maximum PID). The default
value for this file, 32768, results in the same range of PIDs as on
earlier kernels. On 32-bit platforms, 32768 is the maximum value for
pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22
(PID_MAX_LIMIT, approximately 4 million).
- A hozzászóláshoz be kell jelentkezni
es hogyan printf-elned? :)
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
> es hogyan printf-elned? :)
Addig fork-olnám a processzt, amíg a getpid elég kicsi nem lesz, és csak utána írnám ki, hogy takarékoskodjak a hellyel :-)
- A hozzászóláshoz be kell jelentkezni
cseles:)
- A hozzászóláshoz be kell jelentkezni
Szerintem elvárható, hogy ugyanaz legyen az adatfile. Ha pl kép az adat akkor sincs 32, meg 64 bites verzió. Ha valami cache szerű dologról volna szó akkor elképzelhető, hogy nem foglalkozik az átvihetőséggel a programozó.
+ Ha "váratlanul" leforgatnak egy 32-bites programot 64-re vagy fordítva, akkor előfordulhat, de linuxra írt programnál elég ciki lenne.
- A hozzászóláshoz be kell jelentkezni
keres ra a postgresql 32 bit 64 bit szavakra ;)
___
info
- A hozzászóláshoz be kell jelentkezni
Ez biztos nagyon szörnyű, de lehet, hogy csak egyszerű adatfile-okról kérdezett és nem adatbázisokról, amikről tényleg nem tudok sokat.
- A hozzászóláshoz be kell jelentkezni
.......szerinted az adatbázis miben tárolja az adatokat?
- A hozzászóláshoz be kell jelentkezni
pl valamilyen saját formátumban, ami word length és byte order független
- A hozzászóláshoz be kell jelentkezni
"de lehet, hogy csak egyszerű adatfile-okról kérdezett és nem adatbázisokról"
.... éééés a megfejtés a gyengébbek kedvéért: az adatbázisok is adatfájlokban* tárolják az adatokat.
(*most az egyszerűség kedvéért tekintsünk el a raw-device jellegű adattárolástól.)
- A hozzászóláshoz be kell jelentkezni
Ha a memória ide vonatkozó részét egy az egyben mented file-ba, az értelemszerűen nem hordozható különböző rendszerek (amik különböznek byte order és word length szinten) között, de mondjuk úgy, hogy ez a lehető legbutább megoldás amit el lehet képzelni (a leggyorsabb is, de ez már más tészta:)). Valamit valamiért
- A hozzászóláshoz be kell jelentkezni
:)
Szó sem volt semmilyen byte orderről, meg hordozhatóságról.
A felettem szóló azt kifogásolta amikor a postgres-el példálóztak, hogy adatfájlokról kérdezett, és nem adatbázisokról.
Erre válaszoltam azt, hogy az adatbáziskezelők is általában adatfájlokban tartják az adataikat, tehát a példa amit felhoztak, megállja a helyét.
Egyébként meg pont, hogy az adatbázisoknál az elsődleges szempont a gyorsaság, tehát valószínű, hogy egy db engine fejlesztő nem a verziók közötti byte szintű kompatibilitást fogja szem előtt tartani, amikor az adatfájl kezelését írja.
- A hozzászóláshoz be kell jelentkezni
Van köztes megoldás is, viszont ahhoz memória kell, bőven:)
- A hozzászóláshoz be kell jelentkezni
Nem szükséges a kompatibilitáshoz lassúnak is lenni...
check ZFS ;-)
- A hozzászóláshoz be kell jelentkezni
"check ZFS ;-)"
Elég gyorsan eljutottunk az adatfájloktól a fájlrendszerekig.... :)
- A hozzászóláshoz be kell jelentkezni
végülis ez az alapja mindennek:D
- A hozzászóláshoz be kell jelentkezni
van olyan vallás, amelynek tanításai szerint minden adatot tartalmazó valami tulajdonképpen adatbázis, a fájlok maguk, meg a fájlrendszerek is :D
- A hozzászóláshoz be kell jelentkezni
Lásd még: "A Valóság Relációs Adatszerkezete" c. zsoltár. (Larry Könyve, IX. fejezet, 8. vers.)
:)
- A hozzászóláshoz be kell jelentkezni
Kerdes, hogy az adott DB tervezesenel mi volt a lenyeg. Ha a sebesseg, valoszinuleg - ilyen szinten - nem hordozhato. Valoszinuleg ugyis van valami hordozhato formatuma, pl. verzio update-re, innentol kezdve felesleges is.
Mas kerdes, hogy DB eseten altalaban az IO alrendszer a szuk keresztmetszet, szoval a proci igazabol foglalkozhatna az on-the-fly konverzioval, van ra ideje. Ebben az esetben lehet hordozhato a formatum (meg ugye kodot karbantartani is konnyebb, ha minden architekturan ugyanugy nez ki a file).
--
Das "N" in RTL steht für Niveau... -Tuamo/Reel (?)
- A hozzászóláshoz be kell jelentkezni
Nyosigomboc:
Valoszinuleg ugyis van valami hordozhato formatuma, pl. verzio update-re, innentol kezdve felesleges is.
igen, az SQL dump, az ami "biztos", hogy mukodik
___
info
- A hozzászóláshoz be kell jelentkezni
Ezzel a buta de gyors megoldással lett a DB2 a de facto leggyorsabb és mégsem legbutább adatbáziskezelő.
- A hozzászóláshoz be kell jelentkezni
a funkcionalitást ne keverjük ide azért.
ezzel szemben még a memória dumpolása buta megoldás marad
- A hozzászóláshoz be kell jelentkezni
Lapozásnak hívják, és nem véletlenül emlékeztet a neve az oprendszer által is használt buta módszerre.
- A hozzászóláshoz be kell jelentkezni
"egyszerű adatfile-ok" vagyis nem kell annyit tudjanak, hogy egy egész adatbázis működjön rajtuk. Pl statikus adatok egy szótárprogramban, kép, hang, paletta, mindent kielégítő *.DAT kiterjesztés.
- A hozzászóláshoz be kell jelentkezni
Csak egy egyszeru pelda:
long
Irj ki egy long valtozot 64 bit-en, es olvasd be 32 biten, de ha meg meg is akarod fuszerezni, akkor ird ki SPARC-on a 64 bit-est es olvasd be x86-on 32 bit-en. ;)
Jo szorakozast.
___
info
- A hozzászóláshoz be kell jelentkezni
Architektúra különbséget nem hozott fel a kérdező.
- A hozzászóláshoz be kell jelentkezni
Akkor kerlek ertelmezd a mondat elso felet. ;) A masodik fele az csak akkor, ha nagyon meresz.
___
info
- A hozzászóláshoz be kell jelentkezni
Oooooké
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
+1, illetve az ntohs(), ntohl(), htons(), stb makro'k/fv-ek hasznalata.
- A hozzászóláshoz be kell jelentkezni
sys/endian.h
NAME
bswap16, bswap32, bswap64, be16toh, be32toh, be64toh, htobe16, htobe32,
htobe64, htole16, htole32, htole64, le16toh, le32toh, le64toh, be16enc,
be16dec, be32enc, be32dec, be64enc, be64dec, le16enc, le16dec, le32enc,
le32dec, le64enc, le64dec -- byte order operations
___
info
- A hozzászóláshoz be kell jelentkezni
afaik az nem hordozhato
de lenyegeben: fix endiannessel (celszeruen LE, az a trendy), fix bitmerettel kell tarolni, paddingre vigyazva pl.: __attribute__ ((__packed__))
erdemes tovabba bovithetore tervezni a formatumot, ha hozza kell adni/modositani kell
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Amugy igen, sys/endian.h az BSD-s es nem POSIX.
es akkor meg figyelembe lehet venni a megfeleloen alignolt valtozokat is a structurakban, hogy nem a ketszereset foglaljak le, mint ami kellene, meg meg sok dolgot.
___
info
- A hozzászóláshoz be kell jelentkezni
A leheto legrosszabb otlet adatot (pl structot) direktben mappelni, akkor is ha ovatos vagy alignmenttel es egyebekkel. Az stdlib tamogatas szart sem er, max egyes mezokre lehet kenyelmes.
Ugyanis az alignment platformfuggo (sparc pl azonnal szarraszall egy ilyenen), tehat neked kell _elore kitalalni_ hogy mit is akarsz tamogatni. Az ahoka altal emlitett bovithetoseg es hasonlok (pl verzio informacik egyeb meta adatok) miatt pedig vegkepp nem erdemes osszemosni az adattarolas formajat a memoriaban valo tarolas modjaval, mert csak onmagad szopatod.
--
cythoon
- A hozzászóláshoz be kell jelentkezni
Ez a kérdés ebben a formában nem megválaszolható, lásd kommentek. Ki kell próbálnod az adott alkalmazásokat. A Firefox profil formátuma a tapasztalatom szerint könnyedén átvihető oprendszerek és 32 illetve 64 bites környezet között, de ez sajnos nem válasz a kérdésedre.
- A hozzászóláshoz be kell jelentkezni