Bu daha iyi bir forum olacağını önerdiğinde Stack Overflow'da sorulan bir sorunun yeniden gönderilmesi.
Ben coğrafi-mekansal olmayan ama oldukça iyi uyuyor ve biraz rahatsız edici sonuçlar buluyorum bir veri kümesi itme konusunda küçük bir deney çalışıyorum. Veri seti genomik verilerdir, örneğin, genler gibi elementlerin belirli başlangıç ve bitiş koordinatlarını (X eksenimiz) işgal ettiği bir DNA bölgesine sahip olduğumuz İnsan Genomudur. Y eksenini işgal eden çok sayıda DNA (kromozom) bölgesine sahibiz. Amaç, iki X koordinatını kesen tüm öğeleri tek bir Y koordinatı boyunca geri getirmek, örneğin LineString (START 1, END 2).
Teori sağlam görünüyordu, bu yüzden mevcut bir MySQL tabanlı genom projesine ittim ve şöyle bir tablo yapısı buldum:
CREATE TABLE `spatial_feature` (
`spatial_feature_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`external_id` int(10) unsigned NOT NULL,
`external_type` int(3) unsigned NOT NULL,
`location` geometry NOT NULL,
PRIMARY KEY (`spatial_feature_id`),
SPATIAL KEY `sf_location_idx` (`location`)
) ENGINE=MyISAM;
external_id
bu tabloya kodladığımız varlığın tanımlayıcısını temsil eder ve external_type
bunun kaynağını kodlar. Her şey iyi görünüyordu ve iyi çalışmış gibi görünen bazı ön verileri (30.000 satır) zorladım. Bu, 3 milyon satır işaretini aştığında MySQL, uzamsal dizini kullanmayı reddetti ve kullanmak zorunda kaldığında daha yavaştı (tam tablo taraması kullanılarak 40 saniye ile 5 saniye). Daha fazla veri eklendiğinde, endeks kullanılmaya başlandı ancak performans cezası devam etti. Dizini zorlamak sorguyu 8 saniyeye indirdi. Kullandığım sorgu şöyle:
select count(*)
from spatial_feature
where MBRIntersects(GeomFromText('LineString(7420023 1, 7420023 1)'), location);
Buna giren veriler Y boyutları boyunca çok yoğundur (her binanın, telefon kutusunun, posta kutusunun ve güvercinlerin konumunu çok uzun bir yolda kaydettiğiniz gibi düşünün). R-Index'lerin Java'daki bu verilerle nasıl davrandığını ve alandaki diğerlerinin bunları düz dosya formatlarına başarıyla uyguladıklarını test ettim. Ancak hiç kimse bu testin amacı olan AFAIK veri tabanlarına uygulamadı.
Dışarıdaki herhangi biri, belirli bir eksen boyunca çok farklı olmayan bir uzamsal modele büyük miktarlarda veri eklerken benzer bir davranış gördü mü? Koordinat kullanımını tersine çevirirsem sorun devam eder. Bu bir nedense aşağıdaki kurulumu çalıştırıyorum
- MacOS 10.6.6
- MySQL 5.1.46