[질문] gdbm 플랫폼 간 호환성 문제

partout의 이미지

gdbm을 사용해서 리눅스에서 DB 파일을 구성해서 사용하고 있습니다.
이 DB 파일이 리눅스 외의 다른 플랫폼에서 호환이 되지 않네요.
간단히 말하면, 리눅스에서 구성한 DB 파일이 솔라리스나 다른 플랫폼에서는
읽히지 않습니다.

gdbm과 인터페이스가 유사하지만, 플랫폼 간의 호환성을 제공하는 다른
라이브러리가 있나요?
아니면 DB파일을 다른 시스템에서 사용할 수 있도록 손쉽게 변환하는 방법이 있는지 알고 싶습니다.

답변 부탁 드립니다.

purewell의 이미지

ODBC를 사용해보십시오.

ODBC는 단순히 Interface이며,

UNIX/Linux를 위해 공개 소스로 unixODBC가 존재합니다.

Oracle/MySQL/MSSQL/PostgreSQL 등으로 DBMS를

설치한 뒤, ODBC 설정을 하면 소스를 다시 컴파일하지 않아도,

OS/DBMS에 맞춰 소스를 고치지 않아도 DBMS를 쓸 수 있습니다.

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

cedar의 이미지

버클리(Berkeley) DB는 어떨지요?
GDBM과 더불어 대부분의 UNIX/POSIX 호환 시스템에 설치되어 널리 사용되는 오픈소스 파일 DB입니다. GDBM보다는 좀 더 많은 기능을 제공합니다.
C뿐만 아니라 C++과 자바 API를 제공합니다.

pynoos의 이미지

파일호환이 안되는지는 잘 모르겠지만....

의심스러운것은, byte ordering 문제가 있는 것 아닐까요?

저장되는 것에 int 같은 것이 있으면, byte order가 달라지는 arch 에서는

gdbm, ndbm, bdbm 류의 file base db는 같은 문제가 있습니다.

cjh의 이미지

바이트 순서에 따라(빅 엔디언인지 리틀 엔디언인지) 호환성이 없다고 보시면 됩니다. 예전의 CrazyWWWBoard가 gdbm을 사용했는데, 그 문제 때문에 별도의 변환 프로그램이 존재했지요.

여기 perl의 AnyDBM_File 문서에서 퍼온 비교표를 첨부합니다. 선택에 도움이 되실 겁니다.

       DBM Comparisons

       Here's a partial table of features the different packages offer:

                                odbm    ndbm    sdbm    gdbm    bsd-db
                                ----    ----    ----    ----    ------
        Linkage comes w/ perl   yes     yes     yes     yes     yes
        Src comes w/ perl       no      no      yes     no      no
        Comes w/ many unix os   yes     yes[0]  no      no      no
        Builds ok on !unix      ?       ?       yes     yes     ?
        Code Size               ?       ?       small   big     big
        Database Size           ?       ?       small   big?    ok[1]
        Speed                   ?       ?       slow    ok      fast
        FTPable                 no      no      yes     yes     yes
        Easy to build          N/A     N/A      yes     yes     ok[2]
        Size limits             1k      4k      1k[3]   none    none
        Byte-order independent  no      no      no      no      yes
        Licensing restrictions  ?       ?       no      yes     no

       [0] on mixed universe machines, may be in the bsd compat library, which is often shunned.

       [1] Can be trimmed if you compile for one access method.

       [2] See the DB_File manpage.  Requires symbolic links.

       [3] By default, but can be redefined.

--
익스펙토 페트로눔

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.