Büyük veri, tüm sayısal, PHP 1 milyar bayt aranıyor

5 Cevap php

I was wondering how I could quickly search a data string of up to 1 billion bytes of data. The data is all numeric. Currently, we have the data split into 250k files and the searches using strpos (fastest built-in function) on each file until it finds something. Is there a way I can index to make it go faster? Any suggestions?

Sonunda, bugün itibariyle, strpos üzerinde offset parametresi ile bitmiş olacaktır birden fazla kopyasını bulmak istiyorum.

Gerektiğinde herhangi bir yardım kesinlikle tanınmasına yol açacak.

Thanks! - James Hartig

5 Cevap

Peki, etiketleri (Ben bahsediyorum tag "endeksleme" dir) ne yapması gerektiğini gösterir.

Temelde, veriler için dizin olurdu ayrı dosyalar olmalıdır. Bu aradığınız veri dizeleri, hem de onu içeri olduğu dosya ve byte pozisyonları olurdu

Daha sonra, endeksi erişen değer aramak ve daha sonra veri dizesi için orijinal dosya (lar) içinde yer (ler) bulmak ve oradan süreç olacaktır.

İyi bir cevap biraz daha spesifik almak gerekebilir.

  1. Arama sorgusu ne kadardır? 1 basamak? 10 basamaklı? Keyfi uzunluğu?

  2. Nasıl "hızlı" yeterince hızlı mı? 1 saniye? 10 saniye? 1 dakika?

  3. Kaç toplam sorgular saniye / dakika / saat başına bekliyorsunuz?

  4. Veriler nasıl sık sık değiştiriyor? Her gün? Saat? Sürekli?

  5. Eğer "birden fazla-" derken örtüşen sonuç demek gibi geliyor.

  6. Cevap "değer" ve nasıl birçok insan için nedir?

Bir milyar eskisi gibi değil yani sadece indeks olabilir her şey dışarı bok ve 10 hatta 100 kat orijinal veri bir dizin var. Veri dakika ile değişiyor Ama eğer, o senin onu aramak için daha dizin oluşturmak için daha fazla devir yanıyordu anlamına gelecektir.

Eğer bir çözeltisi içine koymak zaman ve para miktarı solüsyon değerinin bir fonksiyonudur.

Kesinlikle bir kız arkadaş almalısınız. Daha iyi vakit geçirmek yardım yanında o patlama olmadan yağ büyüyebilir. Oh ve aynı veri tabanları için de geçerlidir.

Peter Rowell'ın tüm sorulara ilgilidir. Kesinlikle bir out-of-box cevap olması gerekiyorsa o zaman grep deneyin. İsterseniz bile PHP onu exec yapabilirsiniz. Daha hızlı strpos daha büyüklükte emir. Biz aslında oldukça sıra indeksleme ile anlaşma olamazdı şey için bir çözüm kullandım.

Fakat yine de, Peter'ın sorular hala geçerlidir. Ben bir çözüm dalmadan önce onlara cevap istiyorum.

Bir hash fonksiyonu / table çalışmak istiyorsunuz? Ya da bir Sonekler Array / Ağaç?