Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Algorytm - Zapisywanie dużej ilości danych, mało pamięci.

09 Sie 2012 16:18 1309 6
  • Poziom 13  
    Witam!
    Zostałem raz zapytany czy znam algorytm pozwalający na przechwycenie bardzo dużych ilości danych, np czytamy je z jakiejś magistrali i mamy przechować w pamięci RAM i niestety nie znałem na nie odpowiedzi. Czy ktoś może mnie nakierować jedynie jak ten algorytm się nazywa? Ogólnie ma to polegać na tym że dysponujemy np 128MB pamięci RAM i cały czas czytamy dane z portu/magistrali, segregujemy je np rosnąco aż do momentu gdy cała pamięć nam się zapełni. Później np pierwsze dane są nadpisywane, ale za pomocą tego algorytmu da się to rozwiązać tak żebyśmy niczego nie stracili.
    Jak nazywa się algorytm rozwiązujący ten problem? Nie wiem pod jakim hasłem szukać a dalej sobie już poradzę.

    Pozdrawiam!
  • Poziom 38  
    Nie bardzo wiadomo o co Ci chodzi. O strumieniowe przetwarzanie danych, o bufor karuzelowy, fifo etc? :)
  • Poziom 27  
    Bufor kołowy, z tym, że jak danych nie będziesz odpowiednio szybko przetwarzał to tak kiedyś zostaną nadpisane, chyba, że masz pojemność dyskową google'a :D
  • Poziom 13  
    FIFO, bufor kołowy itp znam. Może źle zrozumiałem pytanie, ale w dalszym ciągu poczekam i może ktoś będzie znał takie coś. Też wydaje mi się to dziwne, jak brakuje pamięci na dane to automatycznie będą tracone.
  • Poziom 27  
    No ale daj spokój przecież zawsze masz skończoną ilość pamięci więc o czym ty mówisz, przecież żaden algorytm nie pozwala na to żeby pobierać dane w nieskończoność...

    Ja bym to bardziej rozumiał tak, że chodzi o to jak zrobić to właśnie, żeby móc przetwarzać dane w taki sposób, że pomimo tego, że dostajemy ich masę to udaje nam się je odpowiednio przetwarzać nie powodując napisywania starych danych. zresztą na to wskazują Twoje słowa:

    Cytat:
    Zostałem raz zapytany czy znam algorytm pozwalający na przechwycenie bardzo dużych ilości danych
  • Poziom 38  
    Tak i to jest właśnie strumieniowe przetwarzanie danych. Nie ładujesz wszystkiego do pamięci, tylko czytasz to, co przychodzi, etapami.

    Z takim problemem borykałem się nie raz i tak się to właśnie robi. Mimo, że masz np 32Mb RAMu, to musisz jakoś przetworzyć tam plik np 25Mb (oczywiście drugie tyle zajmuje proces w pamięci). Wczytanie go na raz wysadzi wszystko w powietrze, dlatego trzeba czytać go porcjami/chunkami. Można nazwać to algorytmem stronicowania (z angielskiego page'owanie), nie wiem jak jeszcze można to nazwać :P
  • Poziom 13  
    Cytat:
    No ale daj spokój przecież zawsze masz skończoną ilość pamięci więc o czym ty mówisz, przecież żaden algorytm nie pozwala na to żeby pobierać dane w nieskończoność...

    Właśnie też mi się tak wydawało i może za bardzo się zamieszałem z tym wszystkim...
    Może faktycznie chodziło o stonicowanie, a ja widocznie źle zinterpretowałem problem. Dzięki za utwierdzenie mnie w przekonaniu, że coś takiego nie istnieje!