Articles

Document Modeling

EN

A document database stores records as documents rather than normalized rows spread across many tables. The main modeling question is not "can this be JSON?" but...

Operating Nosql and Polyglot Persistence

EN

NoSQL systems are often introduced through data models, but production success depends just as much on operations. A database choice adds responsibilities for deployment, backups, monitoring, security, capacity, failure recovery, schema evolution, and synchronization with other systems...

Consistency Transactions and Replication

EN

Choosing a NoSQL data model does not automatically choose a consistency model. Document, key-value, wide-column, and graph describe how data is represented. Replication, transaction scope, and read/write guarantees are separate design choices...

Nosql Databases Intro

EN

NoSQL is an umbrella label for databases built around models such as documents, key-value pairs, wide-column records, and graphs. It is not one query language or one set of guarantees. Some products support transactions, joins, validation, or SQL-like queries; others expose different operations...

Isolation

EN

Isolation defines how concurrent transactions interact. The strongest common level, Serializable, makes their committed outcome equivalent to some serial execution. Lower levels permit certain anomalies to reduce coordination costs; simply wrapping statements in BEGIN and COMMIT does not make all ra...

Row Based vs Column Based Databases

EN

A table's logical shape does not determine its physical layout. Both row-oriented and column-oriented systems can expose rows and columns to SQL. The difference is which values they keep together in storage...

Schema Migrations

EN

An ORM maps application code to a database schema, but the schema changes over time. Schema migrations are versioned changes that move the database from one known structure to another...

Azure Services

EN

Azure provides several managed relational, NoSQL, cache, and distributed data services. The correct service depends on the data model, access pattern, transaction requirements, compatibility needs, recovery objectives, and team expertise...

Gcp Services

EN

Match the workload to a data model and consistency requirement before selecting a managed product. Relational transactions, large analytical scans, document queries, and cached state have different needs. Managed operations reduce some administrative work but do not remove schema design, capacity pl...

Normalization

EN

Normalization is a way to organize related facts so a change does not require editing many copies of the same information. Begin with the problems in a combined table, then use the normal forms to explain how to separate it safely...

Data Integrity

EN

Data integrity means the stored data satisfies the rules the system relies on. A constraint is a rule declared in a table's definition so the database can check it whenever relevant data changes...

Requirements Analysis

EN

Before choosing tables, find out what the application must do. A requirement is a statement about a needed behavior or rule. “Use PostgreSQL” is a technology choice; “an order must retain the price originally charged” is a requirement that the design must support...

Sharding

EN

Sharding is a method of horizontally partitioning data in a database, so that each shard contains a unique subset of the data. This approach allows a database to scale by distributing data across multiple servers or clusters, effectively handling large datasets and high traffic loads...

Partitioning

EN

Partitioning involves dividing a large database table into smaller, more manageable pieces called partitions. This method helps improve query performance because the database can access only the relevant partitions when executing queries, rather than scanning the entire table. It also simplifies dat...

Eventual Consistency

EN

Imagine a distributed system with multiple nodes—servers or databases—that share data. When an update occurs on one node, it doesn't instantly reflect on the others due to factors like network latency or processing delays. Eventual consistency requires convergence when writes stop and communication ...

Partitioning vs Sharding

EN

Partitioning divides data into pieces. Sharding is horizontal partitioning across separate database nodes, with routing to the node responsible for each key. Local table partitions can improve pruning and maintenance without distributing work across servers...

Hadoop and Hdfs

EN

Hadoop is an ecosystem for storing and processing data across many machines. Its original core components solve different problems...

Dziedziczenie

PL

Przykłady w tej notatce wymagają C++14. Używają std::make_unique, wprowadzonego w C++14...

Stl

PL

Program często przechowuje wiele podobnych danych: oceny, nazwy produktów albo liczby wczytane z pliku. Można samodzielnie zbudować tablicę i napisać pętle wyszukujące czy sortujące, ale trzeba wtedy osobno pilnować pamięci, zakresów i poprawności operacji. Biblioteka standardowa C++ daje gotowe nar...

Zaawansowane Wskazniki

PL

Wskaźnik to wartość, która może przechowywać adres. Sam surowy wskaźnik nie mówi jednak, kto odpowiada za obiekt ani jak długo ten obiekt będzie istniał. Ta różnica jest kluczowa: wskaźnik może jedynie obserwować obiekt albo uczestniczyć w zarządzaniu jego własnością. W C++ wskaźniki mogą też wskazy...

Tablice

PL

Wbudowana tablica C++ przechowuje ustaloną liczbę elementów tego samego typu. Elementy leżą kolejno w pamięci, a indeksy zaczynają się od zera. Tablica zawiera wiele elementów; wskaźnik jest osobną zmienną, która może przechowywać adres jednego z nich...

Wskazniki

PL

Wskaźnik jest osobną zmienną, której wartością jest adres innego obiektu. Jeśli obiekt number przechowuje liczbę 42, wskaźnik pointer może przechowywać adres tego obiektu. Operator * pozwala wtedy dotrzeć do obiektu pod tym adresem...

Preprocesor

PL

W poprzedniej notatce zobaczyliśmy, że przed analizą kodu kompilator przetwarza dyrektywy takie jak #include. Robi to preprocesor. Jego zadaniem jest przygotowanie tekstu źródłowego: dołącza wskazane pliki, rozwija makra i wybiera fragmenty objęte kompilacją warunkową...

Liczby Losowe

PL

Program może potrzebować losowego wyniku, na przykład podczas rzutu kostką, tasowania kart albo symulacji. Komputer zwykle nie losuje jednak każdej liczby od zera. W C++ najczęściej korzysta z generatora pseudolosowego: algorytmu, który tworzy długą, pozornie losową sekwencję wartości...

Instrukcja Warunkowa

PL

Do tej pory program mógł wypisać tekst lub odczytać dane, ale instrukcje wykonywały się zawsze w tej samej kolejności. Instrukcja warunkowa pozwala wybrać dalsze działanie na podstawie wartości danych: program oblicza warunek, a potem wykonuje odpowiednią gałąź...

L Wartosci R Wartosci

PL

Ta lekcja rozdziela trzy pojęcia: wartość obiektu, kategorię wyrażenia i referencję. Ma to znaczenie przy przypisywaniu do zmiennych, przekazywaniu argumentów funkcjom i przenoszeniu obiektów...

Napisy

PL

Program często pobiera tekst, przechowuje go, porównuje i wyświetla. Zanim wybierzesz funkcję do pracy z tekstem, trzeba rozróżnić trzy rzeczy: znak (np. A), jego zapis w pamięci (jeden lub kilka bajtów) oraz napis (ciąg znaków w określonej reprezentacji). To rozróżnienie wyjaśnia, dlaczego długość ...

Interakcja z Konsola

PL

Program często musi pokazać użytkownikowi wynik albo poprosić go o dane. Konsola jest jednym ze sposobów takiej komunikacji. Warto myśleć o niej jak o dwóch kierunkach przepływu informacji: program wysyła tekst na zewnątrz, a dane wpisane przez użytkownika trafiają do programu...

Proces Kompilacji

PL

Programista zapisuje instrukcje w pliku źródłowym, na przykład main.cpp. Procesor nie wykonuje bezpośrednio takiego tekstu: potrzebuje instrukcji maszynowych przygotowanych dla konkretnej architektury. Kompilacja przekształca więc kod źródłowy w program, który system operacyjny może uruchomić...

Praca z Plikami

PL

Plik przechowuje dane poza pamięcią programu, więc można z nich skorzystać także po jego ponownym uruchomieniu. Niezależnie od języka, praca z plikiem składa się z czterech kroków: wybierz tryb, otwórz plik, czytaj lub zapisuj, zamknij. Każdy krok może się nie powieść, dlatego sprawdzamy jego wynik...

Operacje Bitowe

PL

Poprzednia notatka pokazała, że tekst i inne dane są przechowywane w pamięci jako bajty. Bajt składa się z bitów — najmniejszych jednostek, które mają wartość 0 albo 1. Operacje bitowe pozwalają sprawdzić lub zmienić wybrane bity liczby. Najczęściej używa się ich do flag, masek, pól protokołów i dan...

Wyjatki

PL

Wyjątek to sposób przekazania informacji o problemie z miejsca, w którym go wykryto, do miejsca, które może zdecydować, co dalej zrobić. Najczęściej używa się go wtedy, gdy funkcja nie może wykonać swojego zadania i nie ma sensownego sposobu, by naprawić sytuację lokalnie...

Petle

PL

Instrukcje zapisane kilka razy można zastąpić pętlą. Pętla wykonuje swoje ciało, sprawdza, czy ma wykonać je ponownie, i kończy się, gdy warunek kontynuacji przestaje być spełniony. To ta sama logika warunków z poprzedniej lekcji, użyta do sterowania powtarzaniem...

Konwersje

PL

Program często łączy wartości różnych typów: dzieli liczbę całkowitą przez zmiennoprzecinkową, przekazuje wskaźnik do funkcji albo zamienia obiekt jednego rodzaju na drugi. Konwersja to zmiana wartości lub sposobu, w jaki program może z niej korzystać, na inny typ. Może wykonać się niejawnie albo na...

Lambdy

PL

Lambda to zapis zachowania w miejscu, w którym jest potrzebne. Najczęściej przekazujemy ją do algorytmu jako kryterium sortowania, wyszukiwania lub przekształcania elementów. Zamiast tworzyć osobną nazwaną funkcję, zapisujemy krótką operację obok jej użycia. Jej parametry działają jak parametry zwyk...