Delphi Can
Oracle'da 1 Byte'lık Veri Türü - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Veri Tabanı (http://www.delphican.com/forumdisplay.php?fid=4)
+--- Forum: Diğer Veri Tabanları (http://www.delphican.com/forumdisplay.php?fid=18)
+---- Forum: Oracle (http://www.delphican.com/forumdisplay.php?fid=17)
+---- Konu Başlığı: Oracle'da 1 Byte'lık Veri Türü (/showthread.php?tid=4042)

Sayfalar: 1 2 3


Oracle'da 1 Byte'lık Veri Türü - Tuğrul HELVACI - 07-10-2019

Arkadaşlar; belki biraz garip gelecek ama; Oracle'da 1 byte genişliğinde bir veri türü var mı diye sorma ihtiyacı hissettim. Araştırmalarımdan pek olumlu bir netice alamadım. Daha da garibi, Oracle'ın sayısal verileri de disk üzerinde Varchar verileri tutar gibi tuttuğunu okudum. (Doğru yanlış emin değilim, Oracle'a pek aşina değilim).

Kısaca Microsoft Sql Server'daki TINYINT gibi bir veri türü lazım bana Oracle'da. Aynı zamanda yine Microsoft SQL Server'daki DATALENGTH fonksiyonunun Oracle'daki karşılığı nedir bilen var mı ?


Oracle'da 1 Byte'lık Veri Türü - delphim - 07-10-2019

Oracle kullanıcıları, programcıları verilerin byteları, bitleri ile ilgilenmek zorunda bırakmaz. Oracle'da az sayıda veri türü vardır. Örneğin tek çeşit sayısdal veri türü vardır, o da NUMBER. Tablodaki alanınızı NUMBER(2) olarak tanımlarsanız 99'a kadar sayı saklayabilirsiniz, NUMBER(3) olarak tanımlarsanız 999'a kadar sayı saklayabilirsiniz. Oracle ile çalışanlar veritabanında datayı kaç byte ile sakladığı ile ilgilenmez, ingilenmelerine gerek olmaz. Kayan noktalı değerler için de NUMBER(5,2) gibi tanımlarsınız ve 999.99'a kadar değerleri bu alanda saklayabilirsiniz. Bu yaklaşım programcı için de kolaylıkdır.

Delphi, Java, C, C++ gibi dillerde kullandığınız yerel değişkenleri olabilecek maksimum değeri tutabilecek türde tanımlamak ise programcıya kalmaktadır.


Cvp: Oracle'da 1 Byte'lık Veri Türü - Tuğrul HELVACI - 08-10-2019

(07-10-2019, Saat: 13:57)delphim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Oracle kullanıcıları, programcıları verilerin byteları, bitleri ile ilgilenmek zorunda bırakmaz. Oracle'da az sayıda veri türü vardır. Örneğin tek çeşit sayısdal veri türü vardır, o da NUMBER. Tablodaki alanınızı NUMBER(2) olarak tanımlarsanız 99'a kadar sayı saklayabilirsiniz, NUMBER(3) olarak tanımlarsanız 999'a kadar sayı saklayabilirsiniz. Oracle ile çalışanlar veritabanında datayı kaç byte ile sakladığı ile ilgilenmez, ingilenmelerine gerek olmaz. Kayan noktalı değerler için de NUMBER(5,2) gibi tanımlarsınız ve 999.99'a kadar değerleri bu alanda saklayabilirsiniz. Bu yaklaşım programcı için de kolaylıkdır.

Delphi, Java, C, C++ gibi dillerde kullandığınız yerel değişkenleri olabilecek maksimum değeri tutabilecek türde tanımlamak ise programcıya kalmaktadır.

Yanıtınız için teşekkür ederim; ama Oracle, programcıları bilmemne ile ilgilenmek zorunda bırakmaz; .Net başka bir şeyle ilgilenmek zorunda bırakmaz ! Ee, bu programcılar ne iş yapacaklar ? Gerçek programcıların işi zaten bu tarz şeylerle ilgilenmek.

Bir Database Admin nasıl olur da bit/byte lar ile ilgilenmez. Bu husus veritabanı programlamanın önemli kısımlarından birisidir. Oracle, Number(3) veri türü ile basamak bazlı yer tahsisatı yapacak. Yani 0 ila 999 aralığındaki veriyi tutabilmek için minimum 2 byte yer ayıracak. Oysaki 1 byte'ın alabileceği değer aralığı bana yetecekti. Kafadan 1 byte zarar.

Bu kısıtlamanın bir başka mantıklı nedeni olmalı. Eğer yok ise; bu son derece aptalca bir şey.

Nerede abidik, gubidik saçma şeyler var; son 2 senedir hepsi üstüme üstüme koşuyor Smile


Cvp: Oracle'da 1 Byte'lık Veri Türü - esistem - 08-10-2019

(08-10-2019, Saat: 09:28)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bu kısıtlamanın bir başka mantıklı nedeni olmalı. Eğer yok ise; bu son derece aptalca bir şey. 

Kesinlikle katılıyorum, mantıklı bir nedeni olmalı, yoksa saçma bir olay, o zaman number yerine varchar tutsaydı herşeyi, nasıl olsa her karakter 1 byte yer kaplıyor.


Cvp: Oracle'da 1 Byte'lık Veri Türü - Fesih ARSLAN - 08-10-2019

Merhaba,
temel veri tiplerinde 1 byte yok. Genişletilmiş tiplerde (arka planda alias olarak set edilmiş özel tipler) 1 byte veri tipi mevcut.
Fakat bu veri tipi de @Tuğrul HELVACI hocamın da bahsetmiş olduğu, temelde char tipinde. 
Kaynak: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.


Oracle'da 1 Byte'lık Veri Türü - esistem - 08-10-2019

Number'da boyut : yuvarla((length/2)+1) şeklinde hesaplanıyormuş (- değer için+1 byte daha), number(5) : (5/2)+1=4 byte yani.


Cvp: Oracle'da 1 Byte'lık Veri Türü - delphim - 08-10-2019

(08-10-2019, Saat: 09:28)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(07-10-2019, Saat: 13:57)delphim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Oracle kullanıcıları, programcıları verilerin byteları, bitleri ile ilgilenmek zorunda bırakmaz. Oracle'da az sayıda veri türü vardır. Örneğin tek çeşit sayısdal veri türü vardır, o da NUMBER. Tablodaki alanınızı NUMBER(2) olarak tanımlarsanız 99'a kadar sayı saklayabilirsiniz, NUMBER(3) olarak tanımlarsanız 999'a kadar sayı saklayabilirsiniz. Oracle ile çalışanlar veritabanında datayı kaç byte ile sakladığı ile ilgilenmez, ingilenmelerine gerek olmaz. Kayan noktalı değerler için de NUMBER(5,2) gibi tanımlarsınız ve 999.99'a kadar değerleri bu alanda saklayabilirsiniz. Bu yaklaşım programcı için de kolaylıkdır.

Delphi, Java, C, C++ gibi dillerde kullandığınız yerel değişkenleri olabilecek maksimum değeri tutabilecek türde tanımlamak ise programcıya kalmaktadır.

Yanıtınız için teşekkür ederim; ama Oracle, programcıları bilmemne ile ilgilenmek zorunda bırakmaz; .Net başka bir şeyle ilgilenmek zorunda bırakmaz ! Ee, bu programcılar ne iş yapacaklar ? Gerçek programcıların işi zaten bu tarz şeylerle ilgilenmek.

Bir Database Admin nasıl olur da bit/byte lar ile ilgilenmez. Bu husus veritabanı programlamanın önemli kısımlarından birisidir. Oracle, Number(3) veri türü ile basamak bazlı yer tahsisatı yapacak. Yani 0 ila 999 aralığındaki veriyi tutabilmek için minimum 2 byte yer ayıracak. Oysaki 1 byte'ın alabileceği değer aralığı bana yetecekti. Kafadan 1 byte zarar.

Bu kısıtlamanın bir başka mantıklı nedeni olmalı. Eğer yok ise; bu son derece aptalca bir şey.

Nerede abidik, gubidik saçma şeyler var; son 2 senedir hepsi üstüme üstüme koşuyor Smile

Öncelikle ben sizinle polemik olsun diye cevap yazmadım Tuğrul Bey. Oracle'da temel veri tipleri NUMBER, VARCHAR2 (& CHAR), DATE dir. CLOB, BLOB, RAW, LONG ek bazı veri tipleri de vardır. Performas gibi özel durumlar için ise istisnai BINARY_FLOAT and BINARY_DOUBLE sayısal veritipleri de var. 1 BYTE veri tutacaksanız ya CHAR ya da RAW veri tipini kullanacaksınız, bunlarda sayısal veri tipleri değil.

SQLLite vs kullanıyor olsanız anlarım da eğer Oracle veritabanı kullanıyorsanız ve 1-2 Byte'ın hesabını yaparak programlama yapıyorsanız ortada ciddi bir sorun var demektir.

Turbo Pascal zamanlarının veri tutma ve işleme teknolojileri ile düşünerek 2020 yılında program yazamayız. Diyorsanız ki Oracle'ın yaklaşımı saçmalık, oturursunuz kendi veritabanı yönetim sisteminizi yazar, Oracle ve benzeri ürünlerdeki saçmalıklardan da kaçabilirsiniz.

Aynı programın EXE boyutu her yeni delphi sürümünde bir miktar artıyor. Aynı işi yapan aynı görsellikde aynı koddan derlenmiş program Delphi 5'de 5 MB ise Delphi 10.3 de 11 MB olabiliyor. Delphi 10.3 gibi saçmalıkları kullanmasın kimse mi diyelim. Delphi 2 candır, gerisi byte israfıdır mı diyelim.


Oracle'da 1 Byte'lık Veri Türü - ahmet_sinav - 08-10-2019

@delphim Milyonlarca satır row insert ediliyor bu byte hesabını yapmak durumundayız.
Proje geliştirirken sayısal alanlara int deyip geçmem mesela smallint se smallint tir.
Proje ve database büyüdükçe bu ufak ufak byte'lar performansı etkilemeye başlıyor sonra ne yapsakta
performans arttırırız data boytunu düşürürüz diye uğraşıyoruz.
Proje küçük bir proje ise bile bunlara alışkanlık babında dikkat etmekte fayda var.


Cvp: Oracle'da 1 Byte'lık Veri Türü - delphim - 08-10-2019

(08-10-2019, Saat: 16:33)ahmet_sinav Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@delphim Milyonlarca satır row insert ediliyor bu byte hesabını yapmak durumundayız.
Proje geliştirirken sayısal alanlara int deyip geçmem mesela smallint se smallint tir.
Proje ve database büyüdükçe bu ufak ufak byte'lar performansı etkilemeye başlıyor sonra ne yapsakta
performans arttırırız data boytunu düşürürüz diye uğraşıyoruz.
Proje küçük bir proje ise bile bunlara alışkanlık babında dikkat etmekte fayda var.

1 byte sayısal veri tipi Oracle, DB2, Postgre SQL de yok. MSSQL ve MySQL'de var. Düşündüm ve size hak verdim. İkna oldum ki Oracle, DB2, Postgre SQL çok kötü veritabanı yönetim sistemleri. Herkes MS SQL veya MySQL kullanmalı. Oracle, DB2, Postgre SQL'den uzak durmalı, özellikle de Oracle'dan.


Oracle'da 1 Byte'lık Veri Türü - ahmet_sinav - 08-10-2019

@delphim burdan neden böyle bir anlam çıkardın anlamadım ortada bir mantık var. Bu mantığa karşı bir argümanin varsa buyur dinleyelim. Bence olmalı sence neden gereksiz mesela açıkla bizde aydinlanalim.