2015-08-13 22 views
7

Bu iki parçacığın linux üzerinde bir MS-SQL sunucusuna bağlanırken birbirleriyle nasıl etkileşime girip birbirine uyduklarını anlamaya çalışıyorum.FreeTDS ve unixodbc arasındaki fark nedir?

Anladığım kadarıyla, FreeTDS, MS-SQL ile konuşmak için bir protokoldür (yani bir kural kümesidir) ve aslında konuşmayı yapan şeydir. Unixodbc, ODBC API'yi uygulayan, yani sanırım bir dizi işlevi uygulayan bir sürücüdür.

Her ikisi de neden gereklidir? Bu iki şeyin gerçekte ne yaptığına dair taslak anlayışımı kim hazırlayabilir?

cevap

9

unixODBC, ODBC için bir 'DriverManager' aracıdır. Herhangi bir ODBC özellikli veritabanına bağlanmak için bir Linux veya * nix sisteminde iken unixODBC'u kullanabilirsiniz. Bunu yapmak, farklı veritabanları arasında kullanabilmeniz gereken bir çok veritabanı sorgusu yazabileceğiniz anlamına gelir. Unix'te değilseniz, örneğin yerleşik MS Office olan farklı bir Sürücü Yöneticisi kullanırsınız.

Tüm bileşenleri temizlemek için: eğer bir dil kullanıyorsanız, SQL Server'a bağlanmak için Python diyelim, bağlantınız Python'un pyodbc'sinden (python nesnelerini unixODBC'ye ve oradan unixODBC'ye) geçirebilir (yönetir) FreeTDS (FreeTDS gibi) sürücüleri FreeTDS'e (Microsoft'un kabul ettiği TDS protokolüne ve unixODBC nesnelerini) SQL Server'a çevirir.

unixODBC web http://www.unixodbc.org/ diyor ki:

Bir ODBC uygulaması ODBC DriverManager çağrıları yapar. DriverManager uygulama gibi görevler bir dizi gerçekleştirmektedir:/yüksüz

  • doğrulama işlemleri
  • 3.5 3.0 2.0 çağrı ve veri haritalama yüklenir uygun sürücü sağlanması

    DriverManager'a yapılan çağrıların çoğu, daha fazla işlenmek üzere yüklenen Sürücüye aktarılır, ancak bu uygulama için çok az endişe kaynağıdır.

    ODBC DriverManager kullanarak bazı avantajları

    şunlardır:

    • taşınabilir veri erişim kodu
    • kolayca veri kaynağı
  • değiştirmek için bir veri kaynağı

  • yeteneği bağlanma
  • zamanı Kısaca, DSN'nizi okuyan, yapılandırılmış veri kaynaklarına bakan ve nerede ve nasıl bağlanacağınıza karar veren Sürücü Yöneticisidir.

    Kullandığınız veritabanına bağlı olarak, farklı bir sürücüye ihtiyacınız olacaktır. Bu kod parçası ODBC kullanılarak yapılan taleplerinizi ilgili veritabanı yönetim sistemi için doğru protokole çevirir. Farklı veri kaynakları için farklı olması gereken bileşen budur. Durumunuzda, TDS, MS SQL Server tarafından kullanılan protokoldür. FreeTDS bu protokolün ücretsiz bir yazılım uygulamasıdır.

    bakınız Ara https://en.wikipedia.org/wiki/Open_Database_Connectivity (vurgu tutulur):

    ODBC uygulaması ile veri tabanı yönetim arasında bir çeviri tabakası olarak bir ODBC sürücüsü kullanarak DBMS bağımsız gerçekleştirir. Uygulama, bağlantılı olduğu ODBC sürücü yöneticisi aracılığıyla ODBC işlevlerini kullanır ve sürücü, sorguyu DBMS'ye geçirir. Bir ODBC sürücüsü, bir yazıcı sürücüsüne veya başka bir sürücüye benzediği düşünülebilir; bu, uygulamanın kullanacağı standart bir işlev kümesi sağlar ve DBMS'ye özgü işlevselliği uygular. ODBC kullanabilen bir uygulama "ODBC uyumlu" olarak adlandırılır. Herhangi bir ODBC uyumlu uygulama, bir sürücünün yüklü olduğu herhangi bir DBMS'ye erişebilir. Sürücüler, tüm büyük DBMS'ler, adres defteri sistemleri ve Microsoft Excel gibi diğer birçok veri kaynağı ve hatta metin veya CSV dosyaları için de mevcuttur.

  • +1

    Harika yanıt. Gerçek dünyadaki bir örneği basitleştirmek için, eğer bir dil kullanıyorsanız, Python'un SQL Server'a bağlanmasını söyleyelim, bağlantınız Python'un pyodbc'sinden (python nesnelerini unixODBC'ye ve oradan unixODBC'den), unixODBC'ye (yönetici sürücüleri, FreeTDS), FreeTDS'e (Microsoft'un kabul ettiği TDS protokolüne ve unixODBC nesnelerini SQL Server'a çevirir). – FlipperPA

    +0

    Yorumunuz için çok teşekkürler @FlipperPA, bir şeyleri açıklığa kavuşturduğunu düşündüğümden beri cevabı düzenler miyim? – jwg

    +0

    Bunun için git! Diğerleri en çok ne olursa olsun, ve kafa karıştırıcı bir yığın. :) – FlipperPA