“Veritabanı” nedir?


14

Bu soruda çok fazla tartışma vardı: Büyük arama motorları hangi veritabanı teknolojilerini kullanıyor?

O kadar çok tartışma beni şaşırttı. Peki ... yine de bir veritabanı nedir? Sadece ilişkisel veritabanları "veritabanları" mıydı? Nesneye yönelik veritabanları "veritabanları" mıdır? Bir bilgiyi (harita, liste vb. Gibi) bir veritabanında depolamam ve almamı sağlayan herhangi bir sistem var mı?

Veya bir veritabanı bilgileri depolamak / almak ve ayrıca Kullanıcılar ve Ayrıcalıklar gibi bazı yönetim özelliklerine sahip mi? Gerçekten ilişkisel olmadığı için dBase III artı bir veritabanı mıydı?


@ypercube: "İlgili verileri içeren birden fazla dosyayı aynı anda açma ve işleme yeteneği Ashton-Tate'i Dr. Edgar F. Codd'un ilişkisel modeli tarafından tanımlanan kriterleri karşılamamasına rağmen dBase'yi bir" ilişkisel veritabanı "olarak etiketlemeye yönlendirdi; ilişkisel kavramlardan etkilenen bir uygulama geliştirme dili ve entegre gezinme veritabanı yönetim sistemi olarak adlandırılabilir. " den Ara
woliveirajr

3
Ben bir veritabanı bir veritabanı "yönetilmesi" gerektiğine inanmıyorum.
Aaron Bertrand

Yanıtlar:


9

Bu harika bir soru ve bir dizi harika cevap. Tartışma eksik olan bir şey, bir veritabanı ve bir veritabanı yönetim sistemi (DBMS) arasındaki ayrım içine inceleyen bir cevap olduğunu düşünüyorum. Shark'un dictionary.com'dan sağladığı veritabanı tanımını seviyorum. Ben gerçekten veritabanı ve DBMS arasındaki ayrım ihtiyacını gösterir düşünüyorum. Veritabanı "rahat erişim için organize ilgili veri kapsamlı bir koleksiyon." "Genel olarak bilgisayarda" yazan bu tanımın ikinci kısmı, ayrımın yattığı yerdir. Bir bilgisayarda depolanırsa, bir DBMS'de depolanabilir veya depolanmayabilir. Bir işletim sistemi dosya sisteminde saklanabilir. Özel bir dosya sisteminde saklanabilir. Böylece FrustratedWithFormsDesigner ile bir kart kataloğunun "veritabanı" olduğunu kabul ediyorum (belki de - kapsamlı ve ilgili mi? Daha sonra daha fazlası). Sadece bir dosya dolabında saklanır. Günümüz dünyasında, kolay erişim için organize edilen ilgili verilerin en kapsamlı koleksiyonlarıolan ben Dictionary.com o bölümü yazık eklendiğini Shark katılmıyorum bu yüzden, bir bilgisayarda saklanan. Ben kesinlikle doğru olduğunu düşünüyorum - "veritabanı" bir tanımı olarak.

Peki DBMS'yi nasıl tanımlarız? Ben dictionary.com geri döndü ve bulunan bu :

"Genellikle kalıcı yapılandırılmış büyük veri setlerini yöneten ve birçok kullanıcıya geçici sorgulama olanakları sunan bir dizi program. İşletme uygulamalarında yaygın olarak kullanılmaktadır."

Tanım devam ediyor ve oldukça uzun. Güvenlik, veri bütünlüğü, işlem yönetimi, eşzamanlılık kontrolü ve en önemlisi veri bağımsızlığı gibi bir DBMS tarafından sağlanan ortak özellikleri açıklar. Bir DBMS, fiziksel olarak nasıl saklandığından soyutlanan verilerin harici bir görünümünü sağlar.

Bu tanımı kullanarak, bir DBMS bir veri modeli sağlaması gerektiğini düşünüyorum , bu veri kullanıcıya sunum için nasıl organize edilir. Üç yaygın model hiyerarşik (IMS), ağ (IDMS) ve ilişkiseldir (DB2, Oracle, SQL-Server, vb.). Ayrıca OO modeli de vardır (OODBMS). Bugün sadece ilişkisel modelin geniş uygulanabilirliği vardır. Diğer modeller hala kullanılıyor, ancak sadece niş durumlarda. DBMS ayrıca belirtilen diğer özellikleri de sağlamalıdır. Bunları toplu olarak veri yönetimi özellikleri veya yetenekleri olarak adlandırırım.

Bu nedenle, veri yönetimi özellikleri sağlayan yazılım ürünleri DBMS 'iken, bunları sağlamayan ürünler DBMS değildir '. NoSQL ürünleri DBMS değildir . Olduğunu değil onlar kullanışlı değildir ve söylemek değil"veritabanlarını" saklamadıklarını söylemek. DBMS'nin tanımın dediği gibi muhasebe, bordro, faturalandırma, müşteri ilişkileri yönetimi, satışlar, vb. Gibi iş uygulamalarıyla ilgili bir sınıf problemi çözdüğünü düşünüyorum. NoMSQL ürünleri DBMS olmasa da, geleneksel iş uygulamaları ile ilgisi olmayan ancak günümüzde büyük miktarda depolama ve bant genişliği hesaplama teknolojisi nedeniyle var olan sorunlar sınıfı. Bunlar internet arama, online açık artırma gibi, twitter ve facebook gibi uygulamalar. DBMS bu sorunları çözmek için uygun değildir, çünkü DBMS bir iş uygulaması için mutlak bir zorunluluk olsa da, Craig'in depolanması ve alınması için hiçbir faydası olmayan veri yönetimi özellikleri içerir. s liste reklamları veya twitter yayınları (genellikle her neyse - bu başka bir zaman için başka bir tartışma :-)). Bu problemler büyük ölçeklendirme ve son derece hızlı tepki gerektirir ve özellik şişmesi ile DBMS iyi bir uyum değildir.

Bir veri uzmanı, veri depolamak için tüm bu araçları ve iş için doğru aracı seçmek için ne tür problemleri çözmek için uygun olduklarını anlamalıdır, tıpkı genel bir yüklenicinin inşaat araçlarından hangisinin olduğunu bilmesi gerekir iş için doğru araç. Hiçbir araç kendi içinde iyi ya da kötü değildir. Önemli bir sorunu çözmek için iyi bir uyum olup olmadığı iyidir.

Şimdiye kadar tartışmada göz ardı edilebilecek veritabanı ve DBMS tanımlarında diğer iki önemli ayrımı not ederek sonuca varacağım. Veritabanı tanımı " ilgili verilerin kapsamlı bir şekilde toplanmasını " içerir . DBMS'nin tanımı "büyük yapılandırılmışd MS Access veya başka bir ilişkisel DBMS kullanarak daha iyi durumda. Bu yüzden belki de bir kart kataloğu, her ne kadar kapsamlı olsa da (kütüphanedeki tüm kitapların bir kaydına sahiptir) bir veritabanı değildir, çünkü sadece kitaplar hakkında bilgi içerdiğinden, yazarlar, yayıncılar, vb.

İkincisi, bir DBMS "yapılandırılmış" verilerin depolanmasında mükemmeldir. Tamamen yapılandırılmış tiplere sahip ayrı veri elemanlarının tanımlanmış bir şemasına dayanmaktadır. Bir Şema içermeyen bir anahtar değer deposu olan bir NoSQL ürünü, yapılandırılmamış verilerin depolanmasında mükemmeldir. Bu NoSQL ürünü, DBMS'nin tanımını karşılamamaktadır. Ancak çözmeye çalıştığınız sorun, yapılandırılmamış verilerin depolanması (DBMS 'ilk geliştirildiğinde yapmaya bile çalışmadığımız bir şey) ve yazacağınız uygulamadan bağımsız olarak veri yönetimi özelliklerine ihtiyacınız yoksa işlem yapmadan, NoSQL ürünü mükemmel bir araç uyumu.

Umarım bu cevap burada yayınlanan diğer harika cevaplara değer katar. Veri ile ilgili sorunları çözen veri tabanları ve teknoloji sınıfları anlayışımızı genişletmemize yardımcı olacak başka herkesin sahip olabileceği yorum ve tartışma noktalarını dört gözle bekliyorum.


1
İyi yazı. Craig'in liste listesinde, düşünmeniz gereken daha fazla katman olduğunu düşünüyorum. Depolama ve erişimin doğrudan DBMS'nin üzerinde olması gerekmez. SQL Server'da depolanan verileri, SQL Server'ı kullanıcı isteklerine yanıt vermekten doğrudan sorumlu tutmadan kesinlikle ölçeklendirebilirsiniz. DBMS'nin değiştirilmesine gerek kalmadan DBMS'ye yardımcı olabilecek her türlü orta katman ve veri önbellekleme çözümü vardır . Hemen önceki işimde, birincil SQL Server üzerindeki yükü azaltmak için web sunucularında düzinelerce Express örneği kullandım - çalışılan çekimler yerine sık sık itiyor.
Aaron Bertrand

Teşekkürler Aaron. Geleneksel iş uygulamaları dışındaki uygulamalarla ilgili deneyimim eksikliği gösteriyor. Örneğin Brent Ozar'ın veri önbellekleme çözümleri hakkında birkaç gönderi gördüm ancak kullanımda hiç görmedim. Önceki deneyimlerinizdeki örneğiniz için teşekkürler. Kesinlikle DBMS yararlarını araç kutusuna kaybetmeden ölçeklendirme sağlamak için DBMS yukarıda katmanlama kavramı ekleyeceğim!
Todd Everett

Yani IMS DB olan bir DBMS ama Cassandra değil. Üzgünüm, ama saygılı değilim.
Michael Green

9

Ben teklif edecek Dictionary.com ben veritabanının anlam olarak alın gibi:

genellikle bir bilgisayarda rahat erişim için düzenlenmiş ilgili verilerin kapsamlı bir koleksiyonu.

Bu tanım altında, tam teşekküllü bir RDBMS'den (SQL Server, Oracle, vb.) Temel bir düz dosyaya kadar bir veritabanını düşünebilirsiniz. Verileri depolarsa, teknik olarak bir veritabanı olarak düşünülebilir.

Şimdi, modern dünyamızdaki çoğu şey gibi, bir ismin kabul edilen anlamı var. Ve veritabanı durumunda , bu kişiden kişiye değişecektir. Birçok kişi bir veritabanını yalnızca bir veri sistemi tarafından yönetilen bir varlık olarak düşünür.

@ FrustratedWithFormsDesigner'ın yorumu:

"... genellikle bir bilgisayarda" kaldırırsanız kart katalogları da sayılır.

Bu ifadeye katılıyorum ve bir veritabanının bir "bilgisayarda" veya herhangi bir elektronik cihazda yaşaması gerektiğini düşünmüyorum. Kart kataloğu, bilgisayarsız veritabanının mükemmel bir örneğidir.


8

Bana göre, veri depolamak ve almak için bir veritabanı var. Access'e bir veritabanı deriz, ancak bir dosya koleksiyonunun gerçekten güzel bir ön ucu olmasına rağmen. Outlook (en azından Mac'te) mesaj deposunu bir veritabanı olarak adlandırır. Bazı insanlar Excel'i bir veritabanı olarak adlandırır (ancak bu tür beni horluyor - bu yüzden bir yerde bir çizgi var).

Bence tanım zaman içinde gelişti ve sözlük.com'u wiki ile son 30 yıl içinde çeşitli veritabanı profesyonellerinin makaleleriyle karşılaştırmak çeşitli tanımlar getirecek. Ve tanım da gelişmeye devam edecek.

İlişkisel olsun ya da olmasın, sizin ya da uygulamalarınızın veri depolamak ya da almak için kullandığı bir tür veri kaynağı hakkında konuşuyorsanız, onu veritabanı olarak adlandırırken bir sorunum yok. Eğer bir metin dosyasıysa, kaşları kalkmış olabilir, ancak tanımı bu kadar sinirli bir şekilde insanların sinirlenecek kadar sonlu bir şekilde tespit etme ihtiyacını anladığımdan emin değilim.

Bazı insanlar, görünüşe göre, eğer BigTable'ın (veya NoSQL veya hadoop'un) bir “veritabanı” olduğunu öne sürmek için bile çevre dostu olursanız ve bunu böyle çağırmanın - özellikle yeni başlayanlara - sonsuz performans, ölümsüzlük vaadi vereceğini iddia ediyorlar. ve Tekboynuzlar. Genellikle, gerçek uygulamanın ne yaptığı, ilişkisel olup olmadığı veya bir Pazar öğleden sonra sıkıldığınızda böyle bir şey üretip üretemeyeceğiniz konusunda herhangi bir garanti vermeden, verilerin depolandığı ve alındığı bir yer olduğunu kastediyorsunuz.

İnsanlar ilişkisel bir veritabanı hakkında konuştuğumda ve satırları "kayıtlar" veya sütunlar "alanları" dediğimde kandırdığımı itiraf edeceğim. Ama bu beni biraz sıkıyor olsa da, sinirlenmiyorum ya da onları düzeltmek için elimden çıkmıyorum - amaç nedir? % 100 doğru olmasalar bile ne anlama geldiklerini anladım.


5

Çok genel olabilir, sadece veri ve yapıların bir toplamı olabilir. Bir veritabanını yönetmek için kullanılan sistem bir dosya sistemi kadar basit veya DNS gibi birleşik bir sistem kadar karmaşık olabilir.

Genel olarak modern kullanımda, kişi veritabanı derken, hem veri depolama ve yapıları hem de eşlik eden bir veritabanı yönetim sistemi anlamına gelir ve ilişkisel veritabanlarının temelleri üzerinde çok fazla teorik çalışma yapıldığı için, bunlar hala en popüler olanıdır. çoğu zaman veritabanı söylendiğinde, genellikle ilişkisel bir veritabanını ima eder.

NoSQL / ilişkisel olmayan veritabanlarının yükselmesiyle, veri tabanı terimi daha genel ve potansiyel olarak daha belirsiz hale geldi, çünkü verilerin anlaşılması için paylaşılan bir model kabul edilemez.

İlişkisel teorinin temelinden önce, diğer sistemlerde verilerin modellenmesi sistemden sisteme değişiyordu ve ilişkisel modelde olduğu gibi ortak kılavuz ilkeleri yoktu - hiyerarşik veri tabanları ve ağ veri tabanları gibi diğer veri tabanları kullanılıyordu.


2

Ashton-Tate için, dBASE Direct / 36 ve dBASE IV'ün geliştirilmesi sırasında, dBASE Direct / 36'nın (IBM System / 36 Mini Bilgisayar arabirimi) test edilmesine yardımcı olacak küçük bir programı kodlamak için dBASE III Plus bilgimi kullanarak çalıştım. Her kayıttan veri almak için gönderildikten sonra tablo adlarını ve alan adlarını değiştirirken aynı 'load' ve 'call' ifadelerini tekrar tekrar yazmayı gerektiren System / 36 SQL tablolarına ikili yük ve çağrı ifadeleri yapmak zorunda kaldık. sorgu kapsamına bağlı olarak birkaç kayıt grubu. Bir veritabanı programlama dili olan dBASE III Plus, sistemin SQL geri alma modunda ve metin olarak bir gösterge olarak tasarladığım için tek nokta istemini çift noktaya değiştiren 'dbldot.prg' oluşturmamı sağladı. komut satırının altında "

O zamanlar dBASE, veri kayıtlarının değiştirilmesini sağlayan bir program dili ya da daha doğrusu bir veritabanı programlama diliydi. Bir kayıt, LAST_NAME, FIRST_NAME, ADDRESS, CITY, ST, ZIP, PLUS_FOUR, SSN vb. Kişiler gibi tek bir öğe için veri içeren bir grup alandı. Bu yapılar daha sonra tablolarda temsil edildi ve satırlar ve sütunlar halinde düzenlendi, satır ayrı bir kayıttır ve sütun, her alan adı için bir dizi kayıttaki verilerdir. Bu şekilde, bir kullanıcı kayıtları CITY, ST, ZIP gibi belirli ortak alanlara göre sıralamak ve gruplandırmak için alan adına göre kolayca sıralayabilir.

DBASE dili, kullanıcının veya programcının verileri manipüle etmesine, sıralama yapmasına, tabloları, kayıtları görüntülemesine ve hesaplamalar yapmasına izin verdi (Y2K çok uzaktı, ancak girilen MM-DD-YYYY verilerini sıralamak için tarihlerin YYYYAAGG'ye dönüştürülmesi gerekiyordu, DtoC ve CtoD (Tarihten Karaktere, Karakterden Tarihe) ile yapılabilir. DBASE dili olmadan, veri dosyaları ortak alanlara (sütunlara) sahip bir dizi kayıt (satır) olacaktır.

İlişkisel veritabanı - bu, farklı bilgiler içeren ancak bir veya daha fazla ortak alan içeren, birden fazla veritabanına (tablo) çapraz referans vermek için kullanılan terimdir. Örneğin, "Adresler" başlıklı bir veritabanı "LNAME", "FNAME," "ADRES," "CITY", "ST," "ZIP," "SSN" içerir. "CHECKING" başlıklı başka bir veritabanı "ACCOUNT_NO," "ROUTING_NO," "CUSTLAST," "CUSTFIRST," "DOB," "SSNO," "CUST_NO" içeriyor. Alan adları farklı olmasına rağmen, birçoğu, bir veritabanından verileri diğerinin veri bankalarına bağlamak, örneğin banka müşterilerine ifade göndermek için birbirine bağlanabilecek aynı bilgileri içerir, verileri ilişkilendirmek için ad ve soyad alanlarını ve SS numaralarını kullanarak, müşterinin adresini bir veritabanından ve hesap bilgisini diğerinden ekleyecek şekilde çekerek. Daha sonra, daha büyük ölçekte, ADDRESS veritabanındaki her bir müşteri üzerinde bu eylemleri gerçekleştirmek, her müşterinin ilgili hesap bilgilerini almak, bir ifadeyi kişiselleştirmek, yazdırmak ve bir sonrakine geçmeden önce her birini adreslemek için bir adres-mektup birleştirme işlevi gerçekleştirilebilir. kayıt veya müşteri veritabanına.

Yani, MS ACCESS gibi bir şey daha çok bir DBMS olabilir, ancak temel düzeyde dBASE, ön uç kullanıcı arabirimleri oluşturmak ve aralarında bir ilişki oluşturmak ve sonuçta elde edilen verileri döndürmek için veritabanları arasındaki tüm veri manipülasyonunu gerçekleştirmek için kullanılan bir dildi. biz sadece insanları kullanacağız.

O zamandan beri çok şey değişti, ancak temel aynı kaldı. Veriler hala çeşitli veri türlerinden oluşan bir dizi alan içeren kayıtlarda yer almaktadır ve kredi kartlarını kullanmamıza, web'de hesap kurmamıza izin veren bir veya daha fazla ortak veri noktası aracılığıyla çapraz referanslandırılmalı ve diğer veritabanlarıyla birleştirilmelidir. Google, Facebook, Twitter kimliklerimizi kullanarak satın alma geçmişlerimizi takip edin vb. Hayatlarımız, bugün bize hayatımızdaki kolaylığın ve sürekli evrimin keyfini çıkarmak için etkileşime giren tüm bitleri ve baytları düşünmeden her gün geçiş yaptığımız, birbiriyle örtüşen birçok ilişkisel veritabanından oluşan bir dizi.

Kirada 1984 yılında dBASE II ile başlayan bu uzun yıllardır süren yazılım ve donanım testlerini hep böyle anladım.


2

Codd'un seminal makalesi, büyük paylaşılan veri bankaları için ilişkisel bir veri modeli olarak adlandırıldı . Ona "veri bankası" dediği bir veritabanı terimidir.

Ancak görüntülerini beğendim. Verilerin yerleştirilebileceği, güvenli tutulacağını, uygun şekilde hesaplanacağını ve yalnızca veriye erişim yetkisi olduğunu gösterebilenlere geri verileceğini bilen bir yer anlamına gelir. Şubemiz soyulursa, bankacılık şirketimizin değerli kaynaklarımızın geri dönülmez şekilde kaybolmamasını sağlamak için yeterli yedeğe sahip olduğunun güvencesine sahibiz .


1

Gönderen Veritabanı Tasarımı 7 Ed Temelleri. (sayfa 5),

Bir veritabanı ile ilgili verilerin bir topluluğudur.

Ortak kullanımın daha kısıtlı olduğunu söylemeye devam ediyorlar,

Bir veritabanı şu örtük özelliklere sahiptir:

  • Bir veritabanı gerçek dünyanın, bazen mini dünya veya söylem evreni (UoD) olarak adlandırılan bazı yönlerini temsil eder. Mini dünyadaki değişiklikler veritabanına yansıtılır.
  • Bir veritabanı mantıklı olarak tutarlı bir veri topluluğudur. Rastgele veri çeşitliliği, doğru bir şekilde veritabanı olarak adlandırılamaz.
  • Bir veritabanı, belirli bir amaç için verilerle tasarlanır, oluşturulur ve doldurulur. Amaçlanan bir kullanıcı grubu ve bu kullanıcıların ilgilendiği bazı önceden tasarlanmış uygulamalar vardır.

Hiçbir tanımda herhangi bir anlamda açıkça "ilişkisel" bir veritabanı yoktur, ancak endüstrinin belirli bir türden DBA'lar ile doyurulduğu ve tartışmasız en gelişmiş DBMS yazılımının hepsi ilişkisel olduğu için sıklıkla varsayılmaktadır. Gönderen İlişkisel Veritabanı Sözlük

Kesinlikle, bir veritabanı değeri, qv; daha yaygın olarak, özellikle bu sözlükte, daha doğru bir veritabanı değişkeni olarak adlandırılacak olanı ifade etmek için kullanılır. Not: Veritabanı terimi, diğer çeşitli şeyleri ifade etmek için ilişkisel olmayan bağlamlarda da kullanılır: örneğin, fiziksel olarak depolanan verilerin toplanması. Aynı zamanda, bir DBMS anlamına gelmek için çok sık kullanılır, ancak bu özel kullanım şiddetle reddedilir. (DBMS'ye veritabanı diyelim, veritabanına ne denir?

Bu son nokta biraz önemli ve ben de DBMS / RDBMS ve veritabanı kendisi arasındaki ayrım gibi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.