Commit 8f0ffb05 authored by MartinFIT's avatar MartinFIT

Text - added missing diagrams, Design - communication part

parent 9b0cc910
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.2" editor="www.draw.io" type="device"><diagram id="75567901-9b6b-745c-0e68-ff5e8e50466a" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.2" editor="www.draw.io" type="device"><diagram id="32be2c41-96b1-0529-feee-6295c8cfdc74" name="Page-1">7ZpPc6MgGMY/TY67o2ASc2zTZntppzM97PZII1WmChmC+bOfflHBKNBdN03W7FQ705EXROD5PYKYEZxnu28crZJ7FuF0BLxoN4I3IwDAbCb/F4F9FQigXwViTqIq1Ag8kZ9YBT0VzUmE162CgrFUkFU7uGSU4qVoxRDnbNsu9srS9l1XKMZW4GmJUjv6nUQiqaIhmB7id5jEib6zP1EdfkHLt5iznKr7jQB8LY8qO0O6LtXRdYIitm2E4O0IzjljojrLdnOcFkOrh626bvFObt1ujqnocgGoLtigNMe6xWW7xF6PRdkbXJT3RvB6mxCBn1ZoWeRupfgylogslSlfnq4FZ294zlLGy6uhVx4y55WkaSO+KI8izqhYoIykBSpzlnOCuWzAA96qTEWHD1W6UUnoFX+6nGqyGoMN5gLv3h0Wvx5syTBmGRZ8L4togAOlj+I3VMntAQaoJUwaIOjLkOIvrms+aCBPlAxuSaAlyQ2Rw0peciFVAN4NEugFrbE8vaUbwhnNil6ZssnOi99pQxnFhiwqhFISU5lcymqlFvC6GEoizXGlMjISRcVtnDC0cYnQOikTvko8IiErpZVOHvggAAe6Tg3AuA3AzAGA5wAAnACA4L/25Nkk8SdtSYBna1KXObUpx5YmdyxjMaaY5esL9d5lqjg1VPQdKgZnctZkcJZLkyDs0VlT21lYoj946wgdZz16Kxy85dLEkKReNf5JklNYa2ZJcpULRuXENfjqr+YszxAROkR0vQ6cwlf+sBzstEL/p87y7fXgA6NfBnsdpeSkT3sN85Z7LeH3aS975lrgCHNU7oAMzuosIujRWbqOwVltUcbTHp2lm9sQ5T5PBYnqTcXBXZ2FDPt0V4dlIabRVfEx5KBJJzdVOfq7h3+q4Zejyvc/CkG/jnXyWd0A74hoZMnUs1K+6hSOrO81hkqy47JdS1VKDY5APMZ60N1aNrQaO6TSMY5TJMim3QiXfuoOj4wUe/IaFfjerpeuomq8ugo0vtcYFZlP9HpbRldUddmqqMSp7nY3wuw17kBYTdjkwggzwQDwWMIMVP3wfIR12I/9vISFNmFBn4RZ319MMLoSBoxXCzA9H2H27vJAWE2Y75gme0UMGM+ewFzydkUMmi8+s/Mh1mED4RMj5niKTS5pnqy/4n90nqwbeAbE7O2QAbEaMS3o5SAGjaeYSUZnxIwXzMBk9WjEZPLwG7Oq+OF3fPD2Fw==</diagram></mxfile>
\ No newline at end of file
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.0" editor="www.draw.io" type="device"><diagram id="2221a65f-34c7-3003-7df3-19c104074745" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.3" editor="www.draw.io" type="device"><diagram id="2221a65f-34c7-3003-7df3-19c104074745" name="Page-1">7Vzbbts4EP0aA90HC6So62PiNC3Q7TaoW+z2acFItE1ENrUSHSf9+iUl6i4nakI7AqoUja0hRZGcM8Ph4SgztNg+fEhwvPnMQhLNTBA+zNDVzDQtxxG/peBRCRDMBeuEhrmoJljSn0QJgZLuaUjSRkXOWMRp3BQGbLcjAW/IcJKwQ7PaikXNp8Z4TTqCZYCjrvRvGvJNLvVMt5J/JHS9KZ4MHT8vucXB3Tph+5163sxEq+wnL97ioi010HSDQ3aoidD7GVokjPH82/ZhQSI5tcW05fddHykt+52QHR9yg53fcI+jPSl6nPWLPxZzUXYRzNBliNMNCdXFhm8j8RWKrylP2B1ZsIglQrJjOyKFGxzLRrYPa4kSA//cJ8TYkjTNpv9yRaOouEVMlHsl/0k523GFCV9dXuMtjSSYFmyfUJKILv5FDkVd1dme0SvRPUk4eaiJ1Gx8IGxLePIoqqhS01GaUciFvpdfHyocWKrKpgYBpGRYIW9dtlzNvviiFNCvDOf8yohwzFk8Ul1Ar6kLIejowunThf16XbjP64Lswgvpa8RVEOE0pUGfGgr/AbuTKWYmefxH6S+7+CEvDLuuW3kfeaA8q2f4Ygry67yqVVzekISKQZJENadBUam4KyANaHKcrImqZSplkLDhS7varGnL7tFWIUtIhDm9b3rgPhWqJ9wwKjpcGa7VAgtym03kw1F31V1iqyGEoAFd04LI9REEBZiqZg2xDtieYwLH850W1PIJ6jwkQ1s5JYMA6P0SAJWRN1DzMigaPoB1OEIDwFLQRlkdmLABTAD88yCzsNQ6NIswYizQ9FvQBC3UDIam2Vqc7BbG9cGvmMKn8FcDmHTqVMRPf+JbEt2wlHLKdqLslnHOtqJCJAsuy+iottSo+Khq4yKia3lvvjB1odtc3kQLIPvpLmJly8dXzfaqSFnqGlSElWk9TnnDNVAMrqly1FkCe+MR6GpYBCHsAYETcTXOBhqc//asKJin2WxdiAp+LAZyWRWLb2v1mbWTxnj3mnZCzPEydwfCOGQDYObWpEvOEqnFovDj1fVyZoqRA6G36payXRNAbw7Q3ARGHOC4/sBF5gm27J5crIQ7+55WrfJEzI97VQzqNtExNUI7+ex0xPnkF+KWVQpg8QHxYN1WlAgrwwsEXKW77ljkloahfMzlYUM5WcY4c8IHYTlCltl1aVhjshnLHWYzyNJgMmj0JoMPmPL0K0lj4eZaGJ6gpxd6HhwGPVPD9hFaWqCnBXedRhIFt28sFvukrt9le972tUTEtsmx+qKw8ZAJtlqjDHBO3PaRUONymbr6I4Zcg/IrmwRBGepWQnR9nQXDnUcDD1qmjVbz1a2H5tYtAHMM8WqO3FUAfNGYG6yOGsxz4snqtFideU6rG8Bw/VZso22/Hdto9m20dNONvZRik7WRzGONCgJ+gwoChuWXZNGpaR01+Q1aR0F2JLSOZflGThFaVkYJNuGDXKOgEGW512x+KOVjO21a82SM4xDO+/c6DLJaBxDnPAwaQgBXSxk8stgd1UqdNuvxHN1FV2gtpGIq28vzW66f6AivWlMPNHv04+jQj380ah1LtPkJr+7wrwZvU5TWRpnbQpk5zAnoCNIKgI94a3RFBSDo7Z6TMFtSY0n+MznMaXegNR6FPVxSbzxqasDdceJ/LM5tEcnVaPJumnMsoNcly/tQpsW7mc+HOKfZ9YidDjBrOx9olJedI+5qO+SW26MftWdp3PTAnrPskaVZWI7zxKYHiU1PnhZhZykUrQOVoZses0WMIDjsnFsgBT/WqsWyQnp8MHY7wch3n+yXZT5ZX3zJe/DSHRjqOzw6k0GYdt0emsC3xDhbyH8rDsAZlTUgD/Rt8gt4uI5RMwbkvdQczCef4rlGLV3JstFJbAW1iYhnbKXMIDmVrRw/7RpLiFI7Yn3HYpkRg6M/pojltRm6LWAhr5sS07vr1xKyTAnTz3BkCJgddZyKI0NvkDE9bm2009fPqo0B/PGUMnh+wkqEBB0M9ILAdzSAoI+2HhdjNR3mT4f5I7I6LWHJ8cOIsVhdkQC2YGGVc5ht9Kec2THC1zkjfK0+InBc8NXVn8IMlhzzfVoawpdP2u1g8u6nNA/vnOYxYNN5mnfBbIBmjQQg3zol+Vcn+oqd9kiYPrtNSVsvfIfL9F2jJM8dE7iNZqHnGXbP24f6s32s44H6WHzlZ7Wdyt7z55ju6G6dXWy3eCeD73cJPogP+baP+JiL/x2a7bzudPKb7ePFlt/0nI7b7OXqdPARVjcoDhIxWQnF1cI7sy9n9tWkueeTk60zJifbel48PM2rLFp6EhLh0KLKw80KHkHVu8HBHZHnMaJ9lmS5Nek+CET91T56bLT3i35uihnfKGa0etITT2dB499SVet4Dv7lty9f3/97s7i4mWUHZiTBGSVc7pEKiZHVzF8Sk2v/t8e4MqErJTBkQ/rDgMkUtCwmA99if8EbueKy+vNJeVxc/Ykq9P5/</diagram></mxfile>
\ No newline at end of file
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.2" editor="www.draw.io" type="device"><diagram id="e7b91097-ed0f-5ad2-0e2c-a84839505224" name="Page-1">7Ztdb5swFIZ/TaT2YhXYQJLLNE3aXWyK1Em7dsElqIAzx/nar58NJgTbrVgKaac5N4HjLzjPeW18QgZwmu3vKVotv5EIpwPgRPsBvBsA4Dog4F/CcigtvisNMU0iWak2PCa/cdVSWjdJhNeNioyQlCWrpjEkeY5D1rAhSsmuWe2ZpM1RVyjGmuExRKlu/ZlEbFlaR2BY2x9wEi+rkd1gXJY8ofAlpmSTy/EGAD4Xn7I4Q1Vf8kbXSxSR3YkJzgZwSglh5VG2n+JU+LZyW9lu/krp8bopzlmbBmBUttiidIOrSy4ujB0qZxS3g0UDZwBvd8uE4ccVCkXpjuPntiXLUn7m8sM1o+QFT0lKaNEaOsWHlzwnaXpiH84mwaywk5zNUZakIlamZEMTTPkFfMc7WSjDwwXy3Ni5qCcv2eAEadpiyvD+xCSdco9Jhhk98CqydCT5yPgFQ3m+q6MBBNK2PIkEWEUwkhEYH7uuKfADCeIVKGMNyowtMc0x49YFDzFxoFDiN8beQpGTHCsUpAmlSZzz05C7i7se3go3JVwME1mQJVEkhjGyb0bHp4Q5VmH6OkzPABN0wBI6VmAmJq7ThAIdg8KASWFdQHE1KCcCe8AoEh6yAmsN01VhGhTm9KUw8FEKm7h3Yz6XfFYoqsK8lgrrhgp8ew07pARF/Ojq62LrHVe1a6u6dwD22wLugq9nVddqKhwZoJimwk7WNV+DIuVl17S/BglUkPqa5o76UlfwUeqa8s98/mmhKOryQMsHDbcTKkNLxUgFKlQCfc5zjbvlLqDoGYwf04Wd8s7h6KkcDVNebxtlPelxIXHN59PZ+J8Rl2/YW/Umrgq2Jq7jA7xV17nq8l3DLNmXujw94zEAQcrkfTYgBr82pCr4si48NeEVXLDid3Jbl/OjWHwfd3DHPV0VI3JLV47zRN81StUNv9PyiiuzjcCzn57gBdM0nk3TGKH4yj7D+FNDb2kaz6ZpLg7YlBHoK03j2TSNGYryVAUNi3FvaRrPpmm6A+mpIC+YpvFsmqaduvxLpmk8m6YxU/EVKmPDBqS3naRN03TGMVA5XjBN49k0TStxmfZWvYmrGtumabpXl2f42bw3dfk2TWMjUHt6MqThe0vT+HpCQGMXbui2cKHAhvNoIt64FURStF4nYdv5vSyp3q91u8IRkkxcw117NDhqvA2sgzlxvG/we2WjOEUs2eJG5yYYcoQFSQpN7yvO6lPz+MZvdrLmPgmxbFdD1bry1VdDAiU0GKIxZlpHnCQ6nFRbiQprLX6OrmkVUoG+Oomxy3noik88vAeHCNBcrhQxQq+ub3I+PzTKeJMiCVVOVzdFrP1veShtDjGEc+tXmqG+rgWmB5QzZhV+Wr/CXkZM/T8BOPsD</diagram></mxfile>
\ No newline at end of file
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.2" editor="www.draw.io" type="device"><diagram id="879d4a95-43dc-bf39-da69-b11ff64d5335" name="Page-1">7VpRd5sgFP41edyOSmqSxyZruodtp+fkYc9UqXKKkiFpkv36gUJUNItJpc1W7Tk9csELfN8HXm4cgUWyu2dwHX+nISIjzwl3I/Bl5Hm+44r/0rAvDMABhSFiOCxMbmlY4d9IGR1l3eAQZbWGnFLC8bpuDGiaooDXbJAxuq03e6Kk3usaRqhhWAWQNK0/ccjjwjr1JqX9K8JRrHt2/VlR8wiD54jRTar6G3ngKb+K6gRqX2qiWQxDuq2YwN0ILBilvLhLdgtEJLQatuK55ZHaw7gZSnmXB7zigRdINkiPOB8X32ss8tkg2d4Zgfk2xhyt1jCQtVtBvrDFPCGi5IrbJ5ryJUwwkcQv6IZhxIS7H2irKhXXM1nEhCwooSzvBzjOZLkU45xnnNFnVKuRl6hpzk5N+AUxjnYVk5rtPaIJ4mwvmuhajfzeKG8rPCtTXKF4rGxQKSs6eC7RFTcK4HawwUcD23PeD+zxhwN7ehrssSWw/esBe5lftsEGHbYRW2BPPhzY/vttI9MWsH3CJYJiO/cjnk+xsEisajz4vzZUV3zKchRvRQPXX+/KSu3F1W7EkApPde/CXO3SYFxAyeu01ilJaYoM/pQJEhylohgIggTxYC6JwSIWulUVCQ5D2U2rjupKC2EW5wVXFR4gF07T3OI53plqs/G+B03teD3oxHX/KpRLRdGPtLxBWhak1YhubEmrLUi3sweBQSg2hGJGZraE0nbAsCOU8SAUC0JpBDq2hNLhcITS8FZmUkrsG3Tp1Mi5QWQjWPT9uZeHkUcxRGEtYdNEsILQTUsoqG0MEcjxSz3N0wal6uGB4nyZHIsmXIONTMw8QOqpat7lhCPf8MMhixBv+MmJPcy6G9c3A9e9cG1S1JVq86hokeoOx/CB6g4UXbys35DrDlmAgesWiryelrXpx0w29Eh1Ww5ioPo01eNxT8vadDSzx/Vs4LqXLdyk6Pqo1gMeqD6X6sns800vZDc9TezR3ZYgHOg+Pw5vnIAvPXO5Fsn2BrJ7eWVfTHbj3W+R7A6/6w9k21zZJ1XTI9lD6uzCc5eRBG8cmDofvExHFsluy52dmT4H612RFz/yy162humrHH2jkUyASx+ycZmALzw38vL1dL0h3f8uM+8CXVaT1CuusoamjvzrJ4Xvmil8JaHKIjtse9VV1kdav/UznGuT64rA4Fl6yAWgvD6yXgY3iP59RG8evvUr401E35YIvTbRP8T7rGWTHmT/T8teXEb6oFX5+hXwSuWLYvldeBHMlN/eg7s/</diagram></mxfile>
\ No newline at end of file
......@@ -306,38 +306,44 @@ NoSQL databáze
\chapter{Návrh distribuovaného úložiště} \label{distrRepDesignChapter}
Tato kapitola se zabývá návrhem distribuovaného úložiště rozsáhlých digitálních forenzních dat. Bude popsána architektura systému včetně aplikačního rozhraní a~použité technologie pro vytvoření distribuovaného repositáře.
Systém bude založen na Big data technologiích - Kafka (společně se ZooKeeper), NoSQL databáze, případně Hadoop a~Spark. Jak jednotlivé technologie fungují bude vysvětleno v~této kapitole.
Systém bude založen na Big data technologiích - Kafka (společně se ZooKeeper), NoSQL databáze a HDFS ze systému Hadoop. Jak jednotlivé technologie fungují bude vysvětleno v~této kapitole.
\section{Aplikační rozhraní}
Aplikační rozhraní umožňuje klientovi komunikovat s~distribuovaným repositářem. Komunikace je založena na asynchronním zasílání zpráv. Systém repositáře nenabízí klientovi přímo žádné metody či funkce, které by klient mohl volat. Ovládání repositáře probíhá pomocí zaslání zprávy obsahující tzv. příkaz. Podle typu operace a~typu dat je určeno, jak se daný příkaz zpracuje. V~následující sekci bude vysvětleno, jak ovládání repositáře probíhá, jak vypadá zpráva, a~bude také uvedeno schéma celé komunikace jako příklad.
Aplikační rozhraní umožňuje klientovi komunikovat s~distribuovaným repositářem. Komunikace je založena na asynchronním zasílání zpráv. Systém repositáře nenabízí klientovi přímo žádné metody či funkce, které by klient mohl volat. Ovládání repositáře probíhá pomocí zaslání zprávy obsahující tzv. příkaz. Příkaz specifikuje typ operace a typ dat. Podle typu příkazu je určeno, jak se daný příkaz zpracuje. V~následující sekci bude vysvětleno, jak ovládání repositáře probíhá, jak vypadá zpráva, a~bude také uvedeno schéma celé komunikace jako příklad.
\subsection{Komunikace}
Komunikace s~klientem, který chce do distribuovaného repositáře data uložit, nebo naopak z~něj nějaká data získat, probíhá pomocí zaslání zprávy tzv. \texttt{MQ broker}u Kafka. Zpráva obsahuje parametry - atributy příkazu a~řetězec dat. Atributy příkazu udávají následující informace:
Komunikace s~klientem, který chce do distribuovaného repositáře data uložit, nebo naopak z~něj nějaká data získat, probíhá pomocí zaslání zprávy tzv. \texttt{MQ broker}u Kafka. Zpráva obsahuje parametry - atributy příkazu a~případně řetězec dat. Atributy příkazu udávají následující informace:
\begin{itemize}
\item \texttt{operation} - o~jakou operaci se jedná, výchozí operace jsou \texttt{SAVE}, \texttt{LOAD},
%\item \texttt{operation} - o~jakou operaci se jedná, výchozí operace jsou \texttt{SAVE}, \texttt{LOAD},
\item \texttt{dataType} - typ dat, výchozími typy jsou \texttt{Text}, \texttt{PCAP}, \texttt{Packet},
%\item \texttt{dataType} - typ dat, výchozími typy jsou \texttt{Text}, \texttt{PCAP}, \texttt{Packet},
\item \texttt{id} - unikátní ID zprávy, aby klient potom dokázal identifikovat už zpracované příkazy,
\item \texttt{command} - určuje typ příkazu, příklady příkazů mohou být \texttt{STORE\_PCAP} a \texttt{LOAD\_PCAP}. Příkaz v sobě ještě zapouzdřuje typ operace, které mohou být \texttt{SAVE} a \texttt{LOAD}, a také typ dat jako například \texttt{PCAP}, \texttt{Packet}, \texttt{BINARY}, \texttt{LOG} apod.
\item \texttt{awaitsResponse} - jestli klient/odesilatel zprávy očekává od repositáře odpověď,
\item \texttt{id} - unikátní ID zprávy, aby klient potom dokázal identifikovat už zpracované příkazy.
\item \texttt{responseTopic} - ve které frontě (angl. topic) je odpověď na straně klienta očekávána,
\item \texttt{awaitsResponse} - jestli klient/odesilatel zprávy očekává od repositáře odpověď.
\item případně další potřebné atributy.
\item \texttt{responseTopic} - ve které frontě (angl. topic) je odpověď na straně klienta očekávána.
\item \texttt{errorTopic} - na straně distribuovaného úložiště se může vyskytnout chyba, například nedostupnost databáze, chyba při zpracování příkazu a další. Tento parametr slouží pro zadání fronty, kam se budou zasílat chybová hlášení.
\item \texttt{dataSource} - zdrojová data k uložení lze zaslat dvojím způsobem. První z nich je poslat data v binární podobě přímo přes systém Kafka společně s příkazem. Tento způsob lze využít pro data, jejichž velikost není příliš velká, protože se data načítají do paměti RAM. Pro velké objemy dat takový přístup není vhodný. Proto existuje ještě druhý způsob, a to předat data přes distribuovaný souborový systém HDFS. Parametr dataSource obsahuje název úložiště v podobě výčtové konstanty \texttt{Kafka} nebo \texttt{HDFS}, cestu k souboru, pokud se jedná o HDFS, a také atribut \texttt{removeAfterUse} pro odstranění souboru po použití.
\item \texttt{criterias} - seznam kritérií pro dotazování. Tento parametr je vhodné vyplnit pouze pro operace čtení.
\end{itemize}
\noindent Řetězec dat obsahuje vlastní data, která mají být na straně repositáře zpracována. Typy operací a typy dat lze libovolně přidávat.
\noindent Řetězec dat obsahuje vlastní data, která mají být na straně repositáře zpracována. Typy příkazů, a v podstatě typy operací s typy dat lze libovolně přidávat.
\begin{figure}[!h]
\centering
\includegraphics[width=15cm]{template-fig/Kafka_communication.pdf}
\caption{Příklad komunikace - klient zašle příkaz přes Kafku, příkaz je zpracován na straně distr. repositáře, a~případně je odeslána odpověď klientovi. Můžeme si všimnout uvedených ID, jsou stejné - klient zjistí, ke kterému příkazu odpověď patří.}
\includegraphics[width=14.1cm]{template-fig/Kafka_communication.pdf}
\caption{Demonstrace komunikace - zaslání příkazu pro uložení souboru PCAP. Klient zašle příkaz přes Kafku, příkaz je zpracován na straně distr. repositáře, a~případně je odeslána odpověď klientovi. Můžeme si všimnout uvedených ID, jsou stejné - klient zjistí, ke kterému příkazu odpověď patří.}
\label{FIG_KafkaCommunication}
\end{figure}
\subsubsection{Kafka}
\subsection{Kafka}
Apache Kafka je distribuovaný systém zpráv s~robustními frontami založený na mechanismu \texttt{publish-subscribe} umožňující přenášet vysoké objemy dat. Kafka zprávy jsou perzistentně uloženy na disku a~replikovány v~rámci clusteru kvůli prevenci ztráty dat. Framework Kafka je postaven na synchronizační službě ZooKeeper \cite{kafkaTutorialsPoint}.
\vspace{0.5cm}
......@@ -395,7 +401,7 @@ V~rámci zpracování příchozí zprávy do repositáře informující o~operac
Do repositáře bylo v~průběhu několika dnů uloženo mnoho milionů paketů, které obsahovaly síťovou komunikaci mezi několika komunikujícími stranami. Data paketů jsou uložena v~serializované podobě v~NoSQL databázi. Na úrovni databáze nedávají taková data žádný význam, pouze aplikace je dokáže správně interpretovat jako pakety. Po několika dnech by uživatel rád zjistil podrobnější informace o~komunikaci mezi uzly A~a~B. Nezbývalo by mu nic jiného, než všechna data z~NoSQL databáze načíst na aplikační úrovni a~analyzovat paket po paketu, aby zjistil minimálně IP adresy zdroje a~cíle. Takový způsob by byl velmi pomalý a~neefektivní.
Následně uvažme, jak by vypadal postup pro zjištění informací o~komunikaci mezi uzly A~a~B, kdyby byla k~dispozici cache, či paměť metadat. Cache by mohla uchovávat základní informace o~dříve uložených paketech v~jednotně definované struktuře. Mezi tyto informace by patřily - zdrojová a~cílová IP adresa, zdrojová a~cílová MAC adresa, typ protokolu, timestamp a~další. Co je však důležité, u~těchto informací by bylo uvedeno ID záznamu z~NoSQL databáze, kde je uchován celý paket. Pro zjištění podrobnějších informací by uživatel mohl načíst pouze ty pakety, které jsou pro něj relevantní.
Následně uvažme, jak by vypadal postup pro zjištění informací o~komunikaci mezi uzly A~a~B, kdyby byla k~dispozici cache, či paměť metadat. Cache by mohla uchovávat základní informace o~dříve uložených paketech v~jednotně definované struktuře. Mezi tyto informace by patřily - zdrojová a~cílová IP adresa, zdrojová a~cílová MAC adresa, typ protokolu, časové razítko a~další. Co je však důležité, u~těchto informací by bylo uvedeno ID záznamu z~NoSQL databáze, kde je uchován celý paket. Pro zjištění podrobnějších informací by uživatel mohl načíst pouze ty pakety, které jsou pro něj relevantní.
Předzpracování dat je výhodné před jejich uložením, protože v~kontextu provádění aplikace jsou data interpretovatelná. Výtah základních informací z~nich nezpůsobí propad výkonu. Naopak se výkon zvýší pro případné operace čtení a~hledání.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment