Jump to content
Melde dich an, um diesem Inhalt zu folgen  

Speicherbedarf für Verbrauchsdaten berechnen

Empfohlene Beiträge

Hallo zusammen,

kann mir jemand bei der Berechnung einer Zwischenprüfungsaufgabe helfen?

"Die IP GmbH betreut 40.000 Kunden. Das Volumen des Datentransfers eines jeden Kunden soll jede Minute ermittelt werden. Diese Minutenwerde sollen eine Woche lang gespeichert werden. Zudem sollen die Muntenwerte zu den Tageswerten summiert und ebenfalls eine Woche lang gespeichert werden. Zu jedem Minuten- und Tageswert werden Kundennummer und Verbrauch gespeichert. Folgende Datentypen werden verwendet: Kundennummer char(20), Verbrauch: integer (32bit)
Berechnen Sie den Speicherbedarf für die Verbauchsdaten (Minuten und Tageswerte) einer Woche von 40000 Kunden in MebiByte"

Idee:

(40.000 * 4 Byte * 7 Tage * 24 h * 60 Min) + (40.000 * 4 * 7) = Ergebnis : 1024² = MebiByte

Thanks schonmal

 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

minutenEinträgeProWoche = (Minuten / Stunde) * (Stunden / Tag) * (Tage / Woche) = 60 * 24 * 7

tagesEinträgeProWoche = (Tage / Woche) = 7

eintragGröße = (Größe Kundennummer) + (Größe Verbrauch) = ... ?

anzahlKunden = 40.000

ergebnis = ((minutenEinträgeProWoche * eintragGröße) + (tagesEinträgeProWoche * eintragGröße)) * anzahlKunden

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Also du hast doch dein Problem gefunden:

 

eintragGröße = (Größe Kundennummer) + (Größe Verbrauch) = ... ?

 

jetzt, was ist der Speicherbedarf für den int Wert und was ist der Speicherbedarf für das char feld?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo marina.schatz,

vor 15 Stunden schrieb arlegermi:

eintragGröße = (Größe Kundennummer) + (Größe Verbrauch) = ... ?

vor 14 Stunden schrieb Enno:

jetzt, was ist der Speicherbedarf für den int Wert und was ist der Speicherbedarf für das char feld?

vor 16 Stunden schrieb marina.schatz:

Kundennummer char(20), Verbrauch: integer (32bit)

-->

Zitat

char als Datentyp legt fest, dass die einzelnen Zeichen eines Speicherbereichs aus je (i. d. R.) 8 Bits bestehen, die je ein darstellbares Zeichen (Buchstabe, Ziffer, Sonderzeichen ...) repräsentieren. Quelle: Wikipedia 

eintragGröße = 20 Zeichen a 8 bit + 32 bit = 192 bit

Wobei natürlich fünf Dezimalstellen reichen (40000 Kunden) und die nach binär umgerechnet, reichen 16 bit, char (2) anstatt 160 bit, char (20). Vielleicht wollen die aber noch expandieren *grins*.

vor 9 Stunden schrieb Enno:

(...) genau lesen war das Thema (...)

Grüße

Micha

 

bearbeitet von mqr
tuning

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 14 Minuten schrieb mqr:
Zitat

char als Datentyp legt fest, dass die einzelnen Zeichen eines Speicherbereichs aus je (i. d. R.) 8 Bits bestehen, die je ein darstellbares Zeichen (Buchstabe, Ziffer, Sonderzeichen ...) repräsentieren. Quelle: Wikipedia 

eintragGröße = 20 Zeichen a 8 bit + 32 bit = 192 bit

Wobei natürlich fünf Dezimalstellen reichen (40000 Kunden) und die nach binär umgerechnet, reichen 16 bit, char (2) anstatt 160 bit, char (20). Vielleicht wollen die aber noch expandieren *grins*.

Ich würde den Datentyp char gar nicht auf bit runterbrechen. 8 bit entsprechen einem Byte, Char(20) sind 20 Zeichen, 1 Zeichen ist 1 Byte, ergo Char(20) = 20 Byte und Integer mit 32 bit sind etsprechend 4 Byte. -> 20+4 = 24 Byte.

vor 17 Minuten schrieb mqr:

Wobei natürlich fünf Dezimalstellen reichen (40000 Kunden) und die nach binär umgerechnet, reichen 16 bit, char (2) anstatt 160 bit, char (20). Vielleicht wollen die aber noch expandieren *grins*.

Wie kommst du darauf? Hier ist von einer Kundennummer die Rede, nicht von der Kundenanzahl/einer Durchnummerierung. Wieso sollte man 1. eine Kundennummer als Integerwert anlegen und 2. einfach laufende Nummern verteilen? Vielleicht ist die Kundennummer ja auch sowas wie "02-BW-0021-S-0452175". :)

 

Grüße

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Rienne,

vor 6 Minuten schrieb Rienne:

Wie kommst du darauf? Hier ist von einer Kundennummer die Rede, nicht von der Kundenanzahl/einer Durchnummerierung. Wieso sollte man 1. eine Kundennummer als Integerwert anlegen und 2. einfach laufende Nummern verteilen? Vielleicht ist die Kundennummer ja auch sowas wie "02-BW-0021-S-0452175". :)

Hast ja recht aber im Sinne von Datenbankmanagement und Speicherplatzverschwendung könnte man dann eine Tabelle mit einer Codierung implantieren. War nur eine Anmerkung zum Thema: Aufgabe lesen und Angabe char(20) umsetzen. Es könnten doch so einige Speicherplatz sparen wollen. Natürlich kann man auch die Zwischenrechnung in Byte vornehmen und erst den Verbrauch auf 4 Byte hochrechnen, wichtig ist ein richtiges Ergebnis und die Nachvollziehbarkeit der Zwischenrechnungen für Teilpunkte. Letztendlich wird aber alles binär gespeichert und bei einer Frage nach dem Speicherplatz ist der Ausgangsvariablentyp so nicht erheblich. Ich wollte die nicht als Intengerwert anlegen, sondern als Binärzeichen.

Zusätzlich:

vor 16 Stunden schrieb marina.schatz:

Zu jedem Minuten- und Tageswert werden Kundennummer und Verbrauch gespeichert.

Wobei die id des Eintrags noch nicht im Speicherbedarf berücksichtigt wurde.

---> Es könnte also die Kundennummer mit der Eintragsid kombiniert werden müssen.

Grüße

Micha

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Super, danke, das hat funktioniert:

ergebnis = ((minutenEinträgeProWoche * eintragGröße) + (tagesEinträgeProWoche * eintragGröße)) * anzahlKunden = 9683,52 Megabyte = 9235 Mebibyte (aufgerundet)

Vielen Dank euch. :facepalm: Es macht natürlich Sinn jeweil den Eintrag pro Person zu rechnen und dann mal 40.000 für alle Kunden zu rechnen. Mir war leider erst nicht klar, wie man den "eintragGröße" berechnet, aber das ist auch jetzt verständlich.

Grüße

Marina

 



 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

wenn ich es so berechnen will dann kommt anderes Ergebnis raus 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {

            int minutenEinträgeProWoche = 10080;

            int tagesEinträgeProWoche = 7;

            int eintragGröße = 24;

            int anzahlKunden = 40000;


            double ergebnis = ((minutenEinträgeProWoche * eintragGröße) + (tagesEinträgeProWoche * eintragGröße)) * anzahlKunden;

            Console.WriteLine(ergebnis);
            Console.ReadKey();
        }
    }
}

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 14 Minuten schrieb mrdos01:

wenn ich es so berechnen will dann kommt anderes Ergebnis raus 

Das ganze ist fast 4 Monate her.

Ausserdem:
Alles klar, wir wissen jetzt, dass du ganz tollen Code schreiben kannst.

Aber warum genau schreibst du nicht auch das Ergebnis dazu um hier eine echte Hilfestellung zu geben?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 5 Minuten schrieb RubberDog:

Das ganze ist fast 4 Monate her.

Anscheinend hast du Rechnprobleme. Es ist mehr als 2 Jahre her. 

vor 7 Minuten schrieb RubberDog:

Alles klar, wir wissen jetzt, dass du ganz tollen Code schreiben kannst.

erstens ist es gar nicht toll weil jeder Anfänger kann sowas schreiben zweitens wollte nun das Ergebnis im Code sehen.

vor 9 Minuten schrieb RubberDog:

Aber warum genau schreibst du nicht auch das Ergebnis dazu um hier eine echte Hilfestellung zu geben?

Bitte schön : 1093585408

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung