{"id":41081,"date":"2020-02-05T21:30:11","date_gmt":"2020-02-05T18:30:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle"},"modified":"2020-02-05T21:30:11","modified_gmt":"2020-02-05T18:30:11","slug":"cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","title":{"rendered":"Cassandra. C\u00f3mo no morir si solo conoces Oracle.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hola, Habr.<\/p>\n<p>Me llamo Misha Butrimov y me gustar\u00eda hablar un poco sobre Cassandra. Mi relato ser\u00e1 \u00fatil para aquellos que nunca han utilizado bases de datos NoSQL, ya que tiene muchas caracter\u00edsticas de implementaci\u00f3n y trampas bajo las cuales deben estar informados. Y si solo han visto Oracle u otra base de datos relacional, estas cosas les salvar\u00e1n la vida.<\/p>\n<p>\u00bfQu\u00e9 hace a Cassandra tan buena? Es una base de datos NoSQL dise\u00f1ada sin un \u00fanico punto de fallo que se escala bien. Si necesitas agregar unos terabytes a una base de datos, simplemente a\u00f1ades nodos al anillo. \u00bfQuieres ampliar a otro centro de datos? A\u00f1ades nodos al cl\u00faster. \u00bfQuieres aumentar el RPS procesado? A\u00f1ades nodos al cl\u00faster. Tambi\u00e9n funciona en la direcci\u00f3n opuesta. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/486800\/\"><img decoding=\"async\" alt=\"Cassandra. C\u00f3mo no morir si solo conoces Oracle.\" src=\"\/wp-content\/uploads\/2020\/02\/a7d31475acbcf70581c296c712280c3d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>\u00bfQu\u00e9 m\u00e1s la hace buena? Su capacidad para procesar muchas solicitudes. Pero, \u00bfcu\u00e1nto es 'mucho'? 10, 20, 30, 40 mil solicitudes por segundo no es mucho. 100 mil solicitudes por segundo para escritura tampoco es mucho. Hay empresas que afirman manejar 2 millones de solicitudes por segundo. A ellas, probablemente, deber\u00edamos creer. <\/p>\n<p>Y en principio, Cassandra tiene una gran diferencia respecto a los datos relacionales: no se parece en nada a ellos. Y es muy importante recordar esto.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>No todo lo que parece igual funciona igual.<\/h2>\n<p>\nUna vez, un colega se acerc\u00f3 y pregunt\u00f3: \"Aqu\u00ed est\u00e1 el lenguaje de consulta SQL de Cassandra, tiene instrucciones select, hay un where, hay un and. Estoy escribiendo letras y no funciona. \u00bfPor qu\u00e9?\". Si se considera a Cassandra como una base de datos relacional, esa es la manera perfecta de terminar tu vida de manera cruel y violenta. Y no estoy promoviendo eso, est\u00e1 prohibido en Rusia. Simplemente dise\u00f1ar\u00e1s algo incorrectamente.<\/p>\n<p>Por ejemplo, llega un cliente y dice: \"Construyamos una base de datos para series, o una base de datos para un recetario. Tendremos platos con ingredientes o una lista de series y actores en ella\". Respondemos alegremente: \"\u00a1Vamos!\". Son solo dos bytes para transmitir, un par de tablas y todo listo, funcionar\u00e1 muy r\u00e1pido y de manera fiable. Todo es perfecto, hasta que los clientes llegan y dicen que las amas de casa tambi\u00e9n est\u00e1n resolviendo la tarea inversa: tienen una lista de ingredientes y quieren saber qu\u00e9 plato desean cocinar. Est\u00e1s muerto.<\/p>\n<p>Todo porque Cassandra es una base de datos h\u00edbrida: es tanto key value como almacena datos en columnas anchas. Si hablamos en t\u00e9rminos de Java o Kotlin, se podr\u00eda describir as\u00ed:<\/p>\n<p><code>Map&lt;RowKey, SortedMap&gt;<\/code><\/p>\n<p>Es decir, un mapa dentro del cual hay otro mapa ordenado. La primera clave de este mapa es la Row key o Partition key \u2014 clave de partici\u00f3n. La segunda clave, que es la clave del mapa ya ordenado, es la Clustering key.<\/p>\n<p>Para ilustrar la distribuci\u00f3n de la base de datos, dibujemos tres nodos. Ahora hay que entender c\u00f3mo repartir los datos entre los nodos. Porque si los metemos todos en uno (y puede haber miles, dos mil, cinco \u2014 los que sean), eso no es realmente distribuci\u00f3n. Por lo tanto, necesitamos una funci\u00f3n matem\u00e1tica que devuelva un n\u00famero. Simplemente un n\u00famero, un int largo, que caer\u00e1 en alg\u00fan rango. Y un nodo ser\u00e1 responsable de un rango, el segundo de otro, el n-\u00e9simo de otro. <\/p>\n<p><img decoding=\"async\" alt=\"Cassandra. C\u00f3mo no morir si solo conoces Oracle.\" src=\"\/wp-content\/uploads\/2020\/02\/aab4d3cf1f7a552fb3c4c1eb528508c6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEste n\u00famero se obtiene mediante una funci\u00f3n hash que se aplica precisamente a lo que llamamos Partition key. Esta es la columna que se indica en la directiva Primary key, y es la columna que ser\u00e1 la primera y principal clave del mapa. Define a qu\u00e9 nodo se asignar\u00e1n qu\u00e9 datos. La tabla se crea en Cassandra casi con una sintaxis similar a SQL: <\/p>\n<pre><code class=\"sql\">CREATE TABLE users (\n\tuser_id UUID,\n\tname text,\n\tyear int,\n\tsalary float,\n\tPRIMARY KEY(user_id)\n\n)\n<\/code><\/pre>\n<p>La clave primaria en este caso consiste en una sola columna, que tambi\u00e9n es la clave de partici\u00f3n.<\/p>\n<p>\u00bfC\u00f3mo se distribuir\u00e1n los usuarios? Parte ir\u00e1 a un nodo, parte a otro y parte a un tercero. Se convierte en una simple tabla hash, tambi\u00e9n un mapa, tambi\u00e9n un diccionario en Python, tambi\u00e9n una simple estructura Key value, de la que podemos leer todos los valores, leer y escribir por clave.<\/p>\n<p><img decoding=\"async\" alt=\"Cassandra. C\u00f3mo no morir si solo conoces Oracle.\" src=\"\/wp-content\/uploads\/2020\/02\/61f365562dd5a39358a1ffcb7ff537eb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Select: cuando allow filtering se convierte en un full scan, o c\u00f3mo no se debe hacer<\/h2>\n<p>\nEscribamos alguna declaraci\u00f3n select: <code>select * from users where userid = <\/code>. Es como en Oracle: escribimos select, especificamos las condiciones y todo funciona, se extraen los usuarios. Pero si seleccionamos, por ejemplo, un usuario con un a\u00f1o de nacimiento espec\u00edfico, Cassandra se queja de que no puede ejecutar la consulta. Porque en realidad no sabe nada sobre c\u00f3mo se distribuyen nuestros datos de a\u00f1o de nacimiento; solo tiene una columna como clave. Entonces dice: \u201cEst\u00e1 bien, a\u00fan puedo ejecutar esta consulta. A\u00f1ade allow filtering\u201d. A\u00f1adimos la directiva, todo funciona. Y en ese momento, ocurre algo terrible. <\/p>\n<p>Cuando probamos con datos de prueba, todo est\u00e1 perfecto. Pero cuando ejecutas la consulta en producci\u00f3n, donde tenemos, por ejemplo, 4 millones de registros, las cosas no van tan bien. Porque allow filtering es una directiva que permite a Cassandra recopilar todos los datos de esta tabla de todos los nodos, todos <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/kompaniya\/data-centers\/\"   title=\"de centros de datos\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4645\">de centros de datos<\/a> (si hay muchos en este cl\u00faster), y solo luego filtrar. Esto es an\u00e1logo a un Full Scan, y es poco probable que a alguien le entusiasme. <\/p>\n<p>Si solo necesit\u00e1ramos usuarios por identificadores, eso nos bastar\u00eda. Pero a veces necesitamos escribir otras consultas y aplicar otras restricciones a la selecci\u00f3n. Por lo tanto, recordamos: esto es un mapa, que tiene una clave de partici\u00f3n, pero dentro de \u00e9l hay un mapa ordenado. <\/p>\n<p>Y tambi\u00e9n tiene una clave, que llamamos Clustering Key. Esta clave, que a su vez, consiste en columnas que elegimos, permite que Cassandra comprenda c\u00f3mo se ordenar\u00e1n y almacenar\u00e1n f\u00edsicamente los datos en cada nodo. Es decir, para una clave de partici\u00f3n, la Clustering Key indicar\u00e1 c\u00f3mo insertar realmente los datos en este \u00e1rbol, en qu\u00e9 lugar estar\u00e1n.<\/p>\n<p>Es realmente un \u00e1rbol, simplemente se llama a un comparador, al que le pasamos un conjunto de columnas en forma de objeto, y tambi\u00e9n se define como enumeraci\u00f3n de columnas. <\/p>\n<pre><code class=\"sql\">CREATE TABLE users_by_year_salary_id (\n\tuser_id uuid,\n\tname text,\n\tyear int,\n\tsalary float,\n\tPRIMARY KEY((year), salary, user_id)\n<\/code><\/pre>\n<p>Presta atenci\u00f3n a la directiva Primary key, cuyo primer argumento (en nuestro caso el a\u00f1o) siempre es la Partition key. Puede constar de una o varias columnas, eso no importa. Si hay varias columnas, debe encerrarse nuevamente entre par\u00e9ntesis para que el preprocesador del lenguaje entienda que es espec\u00edficamente la Primary key, y que detr\u00e1s de ella vienen todas las dem\u00e1s columnas: Clustering key. De este modo, se transmitir\u00e1n en el comparador en el orden en que se presentan. Es decir, la primera columna es m\u00e1s significativa, la segunda es menos significativa, y as\u00ed sucesivamente. Como escribimos para las clases de datos, por ejemplo, en los campos equals: enumeramos los campos y especificamos cu\u00e1les son m\u00e1s importantes y cu\u00e1les menos. En Cassandra, esto son, en cierta forma, los campos de la data class a la que se aplicar\u00e1 el equals escrito para ella.<\/p>\n<h2>Establecemos el orden, imponemos restricciones<\/h2>\n<p>\nHay que recordar que el orden de clasificaci\u00f3n (descendente, ascendente, no importa) se establece en el mismo momento en que se crea la clave, y luego no se podr\u00e1 cambiar. Define f\u00edsicamente c\u00f3mo se ordenar\u00e1n los datos y c\u00f3mo se almacenar\u00e1n. Si se necesita cambiar el Clustering key o el orden de clasificaci\u00f3n, ser\u00e1 necesario crear una nueva tabla y transferir los datos a ella. No se podr\u00e1 hacer eso con una que ya existe.<\/p>\n<p><img decoding=\"async\" alt=\"Cassandra. C\u00f3mo no morir si solo conoces Oracle.\" src=\"\/wp-content\/uploads\/2020\/02\/25fc1ef7abb35c728fdc7381a201b79c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHemos llenado nuestra tabla con usuarios y hemos visto que se organizaron en un anillo primero por el a\u00f1o de nacimiento, y luego dentro de cada nodo por el salario y el ID de usuario. Ahora podemos seleccionar, imponiendo restricciones. <\/p>\n<p>Vuelve a aparecer nuestro trabajando <code>donde, y<\/code>, y los usuarios nos son entregados, y todo est\u00e1 bien nuevamente. Pero si intentamos usar solo una parte del Clustering key, espec\u00edficamente la menos significativa, Cassandra inmediatamente dar\u00e1 error, diciendo que no puede encontrar en nuestro mapa el lugar donde est\u00e1 este objeto, cuyos campos para el comparador son null, y d\u00f3nde est\u00e1 este que acabamos de establecer. Tendr\u00e9 que volver a cargar todos los datos de este nodo y filtrarlos. Y eso es an\u00e1logo a un Full Scan dentro del nodo, lo cual es malo.<\/p>\n<h2>Ante cualquier situaci\u00f3n confusa, crea una nueva tabla<\/h2>\n<p>\nSi queremos poder recuperar usuarios por ID, edad o salario, \u00bfqu\u00e9 debemos hacer? Nada. Simplemente usamos dos tablas. Si necesitamos extraer usuarios de tres maneras diferentes, habr\u00e1 tres tablas. Han pasado los d\u00edas en que ahorr\u00e1bamos espacio en el disco. Este es el recurso m\u00e1s barato. Cuesta mucho menos que el tiempo de respuesta, que puede ser devastador para el usuario. Al usuario le resulta mucho m\u00e1s agradable recibir algo en un segundo que en diez minutos.<\/p>\n<p>Intercambiamos el espacio adicional ocupado, datos desnormalizados, por la capacidad de escalar bien y funcionar de manera confiable. De hecho, un cl\u00faster que consiste en tres centros de datos, cada uno con cinco nodos, con un nivel aceptable de conservaci\u00f3n de datos (cuando no se pierde nada), puede sobrevivir a la p\u00e9rdida total de un centro de datos. Y a\u00fan quedan dos nodos en cada uno de los dos restantes. Solo despu\u00e9s de eso comenzar\u00e1n los problemas. Es un buen tipo de reserva, que cuesta un par o tres de SSD y procesadores adicionales. Por lo tanto, para usar Cassandra, que no es SQL, en la que no hay relaciones ni claves externas, es necesario conocer reglas simples.<\/p>\n<p>Dise\u00f1amos todo a partir de la consulta. Lo m\u00e1s importante no son los datos, sino c\u00f3mo la aplicaci\u00f3n va a trabajar con ellos. Si necesita obtener diferentes datos de diferentes maneras o los mismos datos de diferentes maneras, debemos organizarlos de tal manera que sea conveniente para la aplicaci\u00f3n. De lo contrario, caeremos en un escaneo completo y Cassandra no nos dar\u00e1 ninguna ventaja.<\/p>\n<p>Desnormalizar los datos es lo est\u00e1ndar. Olvidamos las formas normales, ya no tenemos bases de datos relacionales. Colocamos algo 100 veces, estar\u00e1 almacenado 100 veces. Esto sigue siendo m\u00e1s barato que ralentizar el sistema. <\/p>\n<p>Seleccionamos claves para el particionamiento de manera que se distribuyan adecuadamente. No necesitamos que el hash de nuestras claves caiga en un rango estrecho. Es decir, el a\u00f1o de nacimiento en el ejemplo anterior es un mal ejemplo. M\u00e1s bien, es bueno si nuestros usuarios est\u00e1n distribuidos de manera uniforme por a\u00f1o de nacimiento, y es malo si se trata de estudiantes de quinto grado, donde la partici\u00f3n no funcionar\u00e1 bien. <\/p>\n<p>La ordenaci\u00f3n se elige una vez en la etapa de creaci\u00f3n de la Clave de Clustering. Si es necesario cambiarla, tendremos que volcar nuestra tabla con otra clave.<\/p>\n<p>Y lo m\u00e1s importante: si necesitamos obtener los mismos datos de 100 maneras diferentes, eso significa que tendremos 100 tablas diferentes.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/486800\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra. \u041c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 NoSQL-\u0431\u0430\u0437\u0430\u043c\u0438, \u2014 \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c. \u0418 \u0435\u0441\u043b\u0438 \u043a\u0440\u043e\u043c\u0435 Oracle \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0432\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438, \u044d\u0442\u0438 \u0432\u0435\u0449\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41082,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-41081","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Cassandra. \u041a\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0440\u0435\u0442\u044c, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e Oracle | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-05T18:30:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-05T18:30:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Cassandra. C\u00f3mo no morir si solo sabes Oracle | ProHoster","description":"Hola, Habr. Me llamo Misha Butrimov y me gustar\u00eda contarles un poco sobre Cassandra.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Cassandra. \u041a\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0440\u0435\u0442\u044c, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e Oracle | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0448\u0430 \u0411\u0443\u0442\u0440\u0438\u043c\u043e\u0432, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e Cassandra.","og:url":"https:\/\/prohoster.info\/es\/blog\/cassandra-kak-ne-umeret-esli-znaesh-tolko-oracle","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-05T18:30:11+00:00","article:modified_time":"2020-02-05T18:30:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41081","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:24:40","updated":"2022-09-30 11:42:25","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/41081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=41081"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/41081\/revisions"}],"predecessor-version":[{"id":164523,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/41081\/revisions\/164523"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/41082"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=41081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=41081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=41081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}