Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek 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.

Lukaszek_69 09 Sie 2012 16:18 1201 6
  • #1 09 Sie 2012 16:18
    Lukaszek_69
    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!

    0 6
  • #2 09 Sie 2012 16:20
    gaskoin
    Poziom 38  

    Nie bardzo wiadomo o co Ci chodzi. O strumieniowe przetwarzanie danych, o bufor karuzelowy, fifo etc? :)

    0
  • #3 09 Sie 2012 16:26
    stanleysts
    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

    0
  • #4 09 Sie 2012 17:20
    Lukaszek_69
    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.

    0
  • #5 09 Sie 2012 18:59
    stanleysts
    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

    0
  • #6 09 Sie 2012 19:11
    gaskoin
    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

    0
  • #7 09 Sie 2012 20:57
    Lukaszek_69
    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!

    0