You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/chapters/systemd/chapter.adoc
+178-1Lines changed: 178 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,6 +30,7 @@ El almacenamiento y transferencia de datos comunmente se mide en _Bytes_ y poten
30
30
31
31
La siguiente tabla muestra la unidad de volumen de datos.
32
32
33
+
[options="header"]
33
34
|===
34
35
| Potencia | Valor Aproximado | Nombre | Abreviación
35
36
| 1 | 1 Uno (bit) | Bit | b
@@ -41,6 +42,24 @@ La siguiente tabla muestra la unidad de volumen de datos.
41
42
| 50 | 1 Cuatrillón (bits)| Petabyte | 1 PB
42
43
|===
43
44
45
+
==== Tipos de Datos
46
+
47
+
Los tipos de datos que pueden ser usados en una base de datos tienen una cantidad
48
+
de almacenamiento definido. Va a cambiar dependiendo del motor de base de datos usado. La siguiente tabla muestra un aproximado de los tipos de datos más comunes.
49
+
50
+
[options="header"]
51
+
|===
52
+
| Tipo de Dato | Tamaño de Almacenamiento | Descripción
53
+
| boolean (booleano) | 1 byte | verdadero o falso.
54
+
| smallint (entero pequeño) | 2 bytes | Un entero con valores acotados.
55
+
| integer (entero) | 4 bytes | Un número entero tradicional.
56
+
| bigint (entero grande) | 8 bytes | Un número entero con mayor capacidad. Para números aún más grandes.
57
+
| float (decimal) | 4 bytes | Un número decimal con 6 decimales de precisión.
58
+
| double (decimal con doble precisión) | 8 bytes | Un número decimal con 15 decimales de precisión.
59
+
| varchar (caracteres variable) | (4 + n) byte | Se suma la cantidad de caracteres más 4 para obtener el total de espacio requerido.
60
+
| blob (binario) | variable | Un archivo binario almacenado. El tamaño dependerá de cada archivo.
61
+
|===
62
+
44
63
==== Números de Latencia
45
64
46
65
La latencia nos indica cuánto se demora un proceso desde que se hace la petición hasta recibir una respuesta. A mayor cantidad de latencia, mayor será el tiempo que necesitemos esperar para obtener una respuesta. El tiempo de retraso de las latencias puede crear ineficiencias, especialmente en las operaciones en tiempo real.
@@ -49,11 +68,169 @@ Los siguientes gráficos contienen números aproximados, ya que según el avance
49
68
50
69
Basado en los números de Jeff Dean y Peter Norvig (http://norvig.com/21-days.html#answers).
|Read 1 MB sequentially from disk |20,000,000 ns |20,000 µs |20 ms |80x
102
+
memory, 20X SSD
103
+
104
+
|Send packet CA -> Netherlands -> CA |150,000,000 ns |150,000 µs |150 ms
105
+
|
106
+
|===
107
+
108
+
- 1 ns = 10^-9 segundos
109
+
- 1 us = 10^-6 segundos = 1,000 ns
110
+
- 1 ms = 10^-3 segundos = 1,000 us = 1,000,000 ns
111
+
55
112
image::latencia.jpg[Latencia]
56
113
114
+
===== Cachés L1 y L2: 1 ns, 10 ns
115
+
Normalmente están integrados en el chip del microprocesador. A menos que trabaje directamente con hardware, probablemente no necesite preocuparse por ellos.
116
+
117
+
===== Acceso a RAM: 100 ns
118
+
Se necesitan alrededor de 100 ns para leer datos de la memoria. Redis es un almacén de datos en memoria, por lo que se necesitan unos 100 ns para leer datos de Redis.
119
+
120
+
===== Envía 1K bytes a través de una red de 1 Gbps: 10 us
121
+
Se necesitan alrededor de 10 usuarios para enviar 1 KB de datos desde Memcached a través de la red.
122
+
123
+
===== Leer desde SSD: 100 us
124
+
RocksDB es un almacén K/V basado en disco, por lo que la latencia de lectura es de alrededor de 100 us en SSD.
125
+
126
+
===== Operación de inserción de base de datos: 1 ms.
127
+
La confirmación de Postgresql puede tardar 1 ms. La base de datos necesita almacenar los datos, crear el índice y vaciar los registros. Todas estas acciones toman tiempo.
128
+
129
+
===== Enviar paquete CA->Países Bajos->CA: 100 ms
130
+
Si tenemos una llamada de larga distancia por Zoom, la latencia podría rondar los 100 ms.
131
+
132
+
===== Reintentar/actualizar interno: 1-10s
133
+
En un sistema de monitoreo, el intervalo de actualización generalmente se establece en 5 a 10 segundos (valor predeterminado en Grafana).
134
+
135
+
===== Resumen
136
+
137
+
Al leer los datos se puede concluir las siguientes cosas:
138
+
139
+
- Leer de la memoria es más rápido que leer de un disco duro.
140
+
- Leer del disco duro solo cuando sea obligatorio.
141
+
- Los algoritmos de compresión son rápidos y se recomienda su utilización al enviar los datos por la red.
142
+
- Los centros de datos de diferentes regiones requerirán más tiempo para transferir datos entre ellos.
143
+
144
+
==== Estimación General
145
+
146
+
El primer paso en el proceso de estimación es definir los objetivos.
147
+
148
+
- Nivel mínimo: Objetivo que no tiene grandes exigencias. ¿Cuánto es lo mínimo que el sistema necesitaría para funcionar correctamente?.
149
+
150
+
- Nivel promedio: Objetivo que busca definir el comportamiento normal de un sistema. ¿Cuánto es lo que necesitaría el sistema en un día normal?.
151
+
152
+
- Nivel crítico: Objetivo que busca definir el comportamiento exigente de un sistema. ¿Cuánto es lo que necesitaría el sistema en un día de alta exigencia?.
153
+
154
+
Una vez definido el objetivo y los supuestos a cumplir, se debe transformar a datos como
155
+
tamaño de almacenamiento o tamaño de transferencia. Ya que normalmente son los
156
+
necesarios para comparar con la tabla de precios de un proveedor de servicios. Al tener el tamaño de almacenamiento o transferencia, se puede estimar los costos monetarios necesarios para lograr los objetivos planteados.
157
+
158
+
===== Cantidad de Usuarios Diarios (CUD)
159
+
160
+
La cantidad de usuarios diarios nos ayudará a definir cuán grande es el volumen de consultas por segundo de un sistema, teniendo en consideración las operaciones que los usuarios realicen.
161
+
162
+
===== Consultas por Segundo (QPS: Queries per Second)
163
+
164
+
Una métrica común es ¿Cúantas consultas tendrá por segundo la aplicación?.
165
+
Esto nos permite determinar la cantidad de almacenamiento y datos necesarios
166
+
en los casos hipotéticos acordados.
167
+
168
+
===== Ejemplo: Red Microblogging
169
+
170
+
Una red microblogging similar a sistemas como Mastodon o X (Twitter).
171
+
172
+
====== Objetivos y Supuestos
173
+
- 300 millones de usuarios activos mensuales.
174
+
- 50% utiliza el sistema diariamente.
175
+
- Se realizan 2 posts por día en promedio.
176
+
- 10% de los posts contienen imagenes (media).
177
+
- Los datos se almacenan por 5 años.
178
+
179
+
====== Obtención de las QPS (Querys per Second)
180
+
181
+
El primer paso es obtener la cantidad de usuarios diarios (CUD), para esto
182
+
obtenemos el 50% de 300 millones.
183
+
184
+
- 300 millones (Usuarios Mensuales) * 50% (Uso diario) = 150 millones (Usuarios Diarios)
185
+
186
+
Sabemos que con 150 millones de usuarios diarios, cada usuario realiza 2 posts por día. Esto lo debemos transformar a segundos.
La escalabilidad se refiere a la capacidad de una aplicación para manejar y soportar una mayor carga de trabajo sin sacrificar la latencia. Una aplicación necesita una potencia informática sólida para escalar bien. Los servidores deben ser lo suficientemente potentes para manejar mayores cargas de tráfico. Hay dos formas principales de escalar una aplicación: horizontalmente y verticalmente.
0 commit comments