{"id":9468,"date":"2022-05-26T05:29:52","date_gmt":"2022-05-26T10:29:52","guid":{"rendered":"https:\/\/blogs.pacasmayo.com\/felipe\/?p=9468"},"modified":"2022-07-27T06:57:25","modified_gmt":"2022-07-27T11:57:25","slug":"sqlite-en-produccion","status":"publish","type":"post","link":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/","title":{"rendered":"\u00bfSQLite en producci\u00f3n?"},"content":{"rendered":"\n<p>Read in <a href=\"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/25\/sqlite-for-production\/\">English<\/a>.<\/p>\n\n\n\n<p>He usado las bases de datos por un tiempo: dBase III, QuickSilver y Clipper en los a\u00f1os 80, DB\/2 (la mitad de una base de datos como la llamaba en broma en ese entonces), SQL Server (m\u00e1s tarde MSSQL), Oracle, Paradox, FoxPro, rBase y Lotus Notes como base de datos en los a\u00f1os 90, MS Access (con MDE) y de vuelta a MSSQL, y de nuevo a DB2 en z\/OS y \u200b\u200bluego ingres\u00e9 a la era de NoSQL con MongoDB, SQLite para pruebas locales, Redis (una base de datos no relacional en memoria) y de regreso a SQL con MySQL.&nbsp;Incluso escrib\u00ed mi propio motor de base de datos compatible con dBase III en C++ (con ingenier\u00eda reversa completa del formato de \u00edndice de \u00e1rbol y el sistema de bloqueo de archivos para escritura) y tengo una patente sobre el uso de bases de datos para registrar y depurar aplicaciones.<\/p>\n\n\n\n<p>Entonces, \u00bfhe o\u00eddo hablar de SQLite?&nbsp;Claro, es un peque\u00f1o motor de base de datos de un solo archivo que se puede usar para aplicaciones m\u00f3viles o para ejecutar algunas pruebas unitarias en tu m\u00e1quina local y es tan flexible que se puede activar una base de datos durante las pruebas unitarias del CI y destruirla al final.&nbsp;Tambi\u00e9n se puede configurar como una instancia local de la base de datos, para no tener que estar conectado mientras se desarrolla la aplicaci\u00f3n.&nbsp;Pero espera, \u00bfrealmente crees que tambi\u00e9n se puede usar en producci\u00f3n?&nbsp;\u00bfComo la base de datos de mi preciosa aplicaci\u00f3n?&nbsp;\u00bfCon redundancia?&nbsp;\u00bfY buen rendimiento?&nbsp;\u00bfY DR (Recuperaci\u00f3n de desastres, por sus siglas en Ingl\u00e9s)?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">DevOps<\/h2>\n\n\n\n<p>Bueno, s\u00ed, eso es exactamente lo que estoy diciendo.&nbsp;A lo largo de los a\u00f1os hemos creado una abstracci\u00f3n en torno a las bases de datos que oculta parte de su complejidad.&nbsp;Nosotros &#8220;solicitamos&#8221; bases de datos y esperamos que alguien m\u00e1s se encargue del almacenamiento, los derechos, las copias de seguridad, el ajuste del rendimiento, la escala, el crecimiento, etc., pero \u00bfno va eso en la direcci\u00f3n opuesta a DevOps?&nbsp;En la disciplina DevOps, queremos que todos los componentes de nuestra aplicaci\u00f3n est\u00e9n bajo nuestro control (DevOps).&nbsp;Entonces, para lograr DevOps de bases de datos, deber\u00edamos automatizar el aprovisionamiento de las bases de datos administradas o tal vez podr\u00edamos repensar nuestra postura sobre las bases de datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">DBA<\/h2>\n\n\n\n<p>Hist\u00f3ricamente, las bases de datos necesitaban ajustes del rendimiento, y eso era una ciencia en s\u00ed misma, por lo que contratamos a un grupo de expertos y los llamamos DBA (Administradores de Bases de Datos, por sus siglas en Ingl\u00e9s).&nbsp;A lo largo de los a\u00f1os, esa agradable separaci\u00f3n tambi\u00e9n hizo posible arrojar m\u00e1s y m\u00e1s cosas por encima del muro al DBA, para que los desarrolladores de &#8220;aplicaciones&#8221; pudieran concentrarse en desarrollar la funcionalidad de la aplicaci\u00f3n.&nbsp;Pero, este mundo en el que el desarrollador no necesitaba preocuparse por los problemas de la base de datos, tambi\u00e9n se convirti\u00f3 en un problema en s\u00ed mismo, porque ahora los desarrolladores quer\u00edan usar estos sencillos servicios de bases de datos para todo, incluso para cosas que realmente no pertenecen a las bases de datos administradas, esperando que los administradores de bases de datos resuelvan los problemas y el rendimiento.<\/p>\n\n\n\n<p>Como con la mayor\u00eda de las cosas, el equilibrio adecuado es aprender a elegir la herramienta adecuada para cada trabajo.&nbsp;Y, s\u00ed, hay muy buenas razones para solicitar una base de datos administrada, pero una gran cantidad de aplicaciones no consideran las calificaciones, solo solicitan una base de datos administrada por conveniencia.&nbsp;Cuando el vendedor de televisores pregunta qu\u00e9 estamos buscando, la respuesta casi siempre se expresa en los l\u00edmites superiores de tama\u00f1o y dinero, y lo mismo ocurre con las bases de datos, por supuesto, nos gustar\u00eda lo mejor que podamos obtener en iops y velocidades de transferencia, y la cantidad m\u00e1xima de columnas, cuando, en realidad, la mayor\u00eda de esos n\u00fameros har\u00e1n muy poca o ninguna diferencia en el rendimiento de nuestra aplicaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La optimizaci\u00f3n del rendimiento<\/h2>\n\n\n\n<p>\u00bfPor qu\u00e9 necesitamos ajustar el rendimiento de un query?&nbsp;Obviamente, porque no est\u00e1 funcionando bien, \u00bfno?&nbsp;Bueno, se sorprender\u00e1 cu\u00e1ntas veces he visto a los desarrolladores (e incluso a m\u00ed mismo) sobredimensionar el ajuste del rendimiento de alguna consulta antes de haber considerado cu\u00e1nto afectar\u00e1 a la aplicaci\u00f3n en ejecuci\u00f3n.&nbsp;Hoy en d\u00eda, hay muchas formas de mejorar el rendimiento de una consulta, como comprar hardware m\u00e1s r\u00e1pido, usar cach\u00e9 o usar co-habitaci\u00f3n;&nbsp;cualquiera de esos mecanismos podr\u00eda resolver el problema de rendimiento, pero arreglarlo antes de que sepamos que es un problema no es un buen uso de nuestro tiempo.&nbsp;Tenga en cuenta que no dije que no deber\u00edamos pensar mucho en crear esquemas s\u00f3lidos, un buen \u00edndice podr\u00eda hacer una gran diferencia;&nbsp;solo estoy se\u00f1alando que no es la \u00fanica herramienta en nuestro malet\u00edn.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Almacenamiento en cach\u00e9<\/h2>\n\n\n\n<p>Hablando de herramientas, las bases de datos de pares clave-valor en memoria, como redis y etcd, deben usarse para el almacenamiento en cach\u00e9 en lugar de su base de datos principal.&nbsp;Esas herramientas ya vienen preoptimizadas para ese prop\u00f3sito y no deber\u00edamos reinventar esa rueda tratando de hacerlo en nuestra base de datos solamente porque es posible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Autogestionado<\/h2>\n\n\n\n<p>Aunque hay muchas y muy buenas razones para elegir una base de datos administrada, no es nuestra \u00fanica opci\u00f3n y, en un n\u00famero creciente de casos, en mi opini\u00f3n, no es la mejor opci\u00f3n.&nbsp;\u00bfPor qu\u00e9 optar por bases de datos autogestionadas?<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ciclo vital.&nbsp;La base de datos se crea, se actualiza, se mejora y se da de baja con la aplicaci\u00f3n.&nbsp;La aplicaci\u00f3n de parches del sistema operativo (que hoy en d\u00eda se llama reconstruir el contenedor), las actualizaciones de la versi\u00f3n de la base de datos y todas las dem\u00e1s razones de rutina para coordinar con los DBA ahora est\u00e1n totalmente bajo el control del equipo de la aplicaci\u00f3n y se pueden sincronizar con el ciclo vital de la aplicaci\u00f3n.<\/li><li>Autonom\u00eda.&nbsp;La aplicaci\u00f3n ahora no solo es independiente de otras aplicaciones que no pueden actualizar las bases de datos a la misma velocidad, sino que tambi\u00e9n se puede mover la aplicaci\u00f3n a otras ubicaciones\/mejores\/m\u00e1s flexibles (en las instalaciones o en diferentes nubes) sin tener que preocuparse por las rutas entre la nueva ubicaci\u00f3n de la aplicaci\u00f3n y la antigua ubicaci\u00f3n de la base de datos.<\/li><li>Tr\u00e1fico en red.&nbsp;La ventaja de compartir la ubicaci\u00f3n de la base de datos con el servidor de aplicaciones no es solo la autonom\u00eda, sino que adem\u00e1s podr\u00eda producir una mejora del rendimiento al hacer que los paquetes de datos viajen por una ruta m\u00e1s corta, lo que ahora dar\u00eda la libertad de realizar m\u00faltiples llamadas a la base de datos sin la necesidad urgente de crear una llamada SQL enorme pero potencialmente ineficiente para obtener todos los datos de una sola vez.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pero, \u00bfSQLite?<\/h2>\n\n\n\n<p>Es una base de datos de juguete, \u00bfno?&nbsp;No, no es.&nbsp;Es un sistema de base de datos completa que se ha utilizado para aplicaciones en producci\u00f3n durante muchos a\u00f1os.&nbsp;Varias de las aplicaciones que ejecutas todos los d\u00edas en tu celular probablemente est\u00e9n almacenando todos sus datos en SQLite.&nbsp;Ha estado all\u00ed, ha demostrado su estabilidad y confiabilidad, lo \u00fanico que est\u00e1 cambiando es la percepci\u00f3n anterior de que solo debe usarse como una base de datos integrada para una herramienta o aplicaci\u00f3n m\u00f3vil a una nueva apreciaci\u00f3n de esta herramienta madura como una potencial base de datos para un mayor porcentaje de aplicaciones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibilidad<\/h3>\n\n\n\n<p>SQLite implementa todas las caracter\u00edsticas comunes de SQL con muy pocas excepciones, como &#8220;RIGHT OUTER JOIN&#8221;, pero, para ser honesto, mis aplicaciones han sobrevivido la \u00faltima d\u00e9cada sin ellas.&nbsp;Por supuesto, no hab\u00eda estado considerando SQLite como una alternativa de producci\u00f3n seria para la mayor\u00eda de mis aplicaciones hasta hace poco, pero he estado usando SQLite para la mayor parte de mis pruebas unitarias y locales, lo que demuestra que tiene todas las caracter\u00edsticas que REALMENTE ESTOY USANDO de las alternativas m\u00e1s grandes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sencillez<\/h3>\n\n\n\n<p>Si has estado desarrollando aplicaciones con el apoyo de DBAs, probablemente no hayas estado consciente de la complejidad del sistema de base de datos.&nbsp;Incluso si ya te convenci\u00f3 la cultura DevOps y comenzaste a implementar y actualizar tu base de datos desde tu c\u00f3digo, probablemente te hayas asegurado de que permanezca separada de tu aplicaci\u00f3n, a trav\u00e9s de contenedores, y es posible que no hayas prestado mucha atenci\u00f3n a los objetos persistentes del sistema de base de datos.&nbsp;Pero ser\u00eda dif\u00edcil ignorar la simplicidad del sistema SQLite, ya que la \u00fanica forma de usarlo es pasar el nombre del archivo a SQLite, e inmediatamente notar\u00e1s que toda la base de datos est\u00e1 contenida en este \u00fanico archivo.&nbsp;\u00bfSignifica eso que hay limitaciones f\u00edsicas?&nbsp;Puedes leer sobre las limitaciones&nbsp;<a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=es&amp;hl=en&amp;client=webapp&amp;u=https:\/\/sqlite.org\/limits.html\">aqu\u00ed<\/a>, pero probablemente nos topemos con las limitaciones de nuestra potencia computacional antes de acercarnos a algunos de esos l\u00edmites.&nbsp;Pero no se puede exagerar la simplicidad de la base de datos de un solo archivo.&nbsp;La copia de seguridad, la migraci\u00f3n y la transferencia de datos se simplifican con el enfoque de un solo archivo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Portabilidad<\/h3>\n\n\n\n<p>Esta podr\u00eda ser la raz\u00f3n m\u00e1s importante para darle a SQLite una segunda mirada como base de datos de producci\u00f3n.&nbsp;\u00bfNo ser\u00eda maravilloso tener tus datos exactamente en el mismo formato, independientemente de d\u00f3nde se est\u00e9 ejecutando tu aplicaci\u00f3n?&nbsp;La base de datos relacional tradicional funciona bien en una o dos de las plataformas principales, pero no lo pondr\u00edas en tu tel\u00e9fono celular o electrodom\u00e9sticos&#8230; lo contrario sol\u00eda ser cierto tambi\u00e9n, SQLite funciona extremadamente bien en tu tel\u00e9fono celular, televisores y electrodom\u00e9sticos pero no lo uses como la base central de tu aplicaci\u00f3n web, pero ahora, eso est\u00e1 cambiando.&nbsp;El mismo motor y el mismo formato de archivo no solo est\u00e1n disponibles, sino que son port\u00e1tiles en todos los dispositivos en los que podr\u00eda pensar en necesitar una base de datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nivel de Empresa<\/h3>\n\n\n\n<p>Hay algunas utilidades que se est\u00e1n presentando para complementar la simplicidad de SQLite con caracter\u00edsticas que solo se esperar\u00eda de una soluci\u00f3n de nivel &#8220;Empresarial&#8221;.\u00a0<a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=es&amp;hl=en&amp;client=webapp&amp;u=https:\/\/dqlite.io\/\">DqLite<\/a>\u00a0, por ejemplo, &#8221;\u00a0<em>(SQLite distribuido) extiende SQLite a trav\u00e9s de un grupo de m\u00e1quinas, con conmutaci\u00f3n por error autom\u00e1tica y alta disponibilidad para mantener tu aplicaci\u00f3n funcionando<\/em>&#8220;.\u00a0Adem\u00e1s, el muy prometedor\u00a0<a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=es&amp;hl=en&amp;client=webapp&amp;u=https:\/\/litestream.io\/\">LiteStream<\/a>\u00a0, \u201c<em>ejecuta tu aplicaci\u00f3n de manera segura en un solo servidor.\u00a0Base de datos completamente replicada sin problemas y con un costo m\u00ednimo.&#8221;\u00a0<\/em>Y, acabo de escuchar de\u00a0<a href=\"https:\/\/github.com\/superfly\/litefs\">LiteFS<\/a>, que\u00a0&#8220;<em>es un sistema de archivos basado en FUSE para replicar bases de datos SQLite a lo largo de un cluster de computadoras<\/em>&#8220;. Todas estas iniciativas ayudan a responder a las necesidades de un sistema distribuido, la disponibilidad y copias de seguridad de una soluci\u00f3n empresarial.<\/p>\n\n\n\n<p>Recordando las aplicaciones que he desarrollado (o a las que he contribuido) durante los \u00faltimos 10 a\u00f1os que requer\u00edan una base de datos para almacenar sus propios datos, y excluyendo las que requer\u00edan acceso a bases de datos externas, encontr\u00e9 que SQLite podr\u00eda haber sido extremadamente apropiada para el gran mayor\u00eda de ellos.&nbsp;En realidad, podr\u00eda cambiar varios de ellos muy f\u00e1cilmente ya que 1) ya fueron probadas con SQLite durante su desarrollo y 2) normalmente uso Sequelize (un ORM para NodeJS) y mi propio&nbsp;<a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=es&amp;hl=en&amp;client=webapp&amp;u=https:\/\/gitlab.migrandama.com\/foss\/easy-sequelize\/\">easy-sequelize<\/a>&nbsp;(enchufe desvergonzado) que abstrae la selecci\u00f3n del motor de su consumo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Oportunidad<\/h2>\n\n\n\n<p>\u00bfDeber\u00edamos todos cambiar nuestras bases de datos de producci\u00f3n a SQLite?&nbsp;Por supuesto que no, esa no es la intenci\u00f3n de este art\u00edculo, ni por asomo.&nbsp;Pero esta lista podr\u00eda ayudarte a decidir:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Servidor-cliente.&nbsp;SQLite no tiene un componente de servidor, si la arquitectura de tu aplicaci\u00f3n requiere que la aplicaci\u00f3n cliente env\u00ede consultas SQL a un motor de servidor para su procesamiento, SQLite no es tu respuesta.<\/li><li>Multiusuario.&nbsp;Si tu escenario requiere que varios clientes lean y escriban la base de datos al mismo tiempo, SQLite no es tu mejor opci\u00f3n, aunque durante casi dos d\u00e9cadas me he alejado lentamente de tales implementaciones y he creado una interfaz para los datos (API) donde los m\u00faltiples clientes no usan SQL, sino REST APIs, y luego la implementaci\u00f3n de la API es el \u00fanico usuario de la base de datos.&nbsp;La mayor\u00eda de las veces, el uso de un API brinda una mejor arquitectura, independientemente de usar SQLite o una RDBMS tradicional en la parte trasera, pero reconozco que hay buenos casos de uso para lo contrario.<\/li><li>Concurrencia.&nbsp;Si tu aplicaci\u00f3n necesita una gran cantidad de clientes que accedan a la base de datos al mismo tiempo, SQLite no es tu mejor opci\u00f3n.&nbsp;Lo mismo es cierto para grandes vol\u00famenes o enorme cantidades de datos, en esos casos deber\u00eda preferirse los RDBMS altamente optimizados que fueron dise\u00f1aron para esos escenarios.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>Como de costumbre, no hay una respuesta \u00fanica para este tipo de dilema, y \u200b\u200bsiempre se debe elegir la herramienta m\u00e1s adecuada para el trabajo.&nbsp;Pero es importante saber que, si has estado usando SQLite para tus pruebas unitarias y te encanta su simplicidad, cada vez se abren m\u00e1s oportunidades, incluida la posibilidad de usar SQLite como la \u00fanica base de datos para tu aplicaci\u00f3n en producci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Read in English. He usado las bases de datos por un tiempo: dBase III, QuickSilver y Clipper en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9460,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[38],"tags":[],"class_list":["post-9468","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u00bfSQLite en producci\u00f3n? - El blog de Felipe<\/title>\n<meta name=\"description\" content=\"SQLite, la base de datos para herramientas y aplicaciones m\u00f3viles, podr\u00eda satisfacer todas las necesidades de algunas aplicaciones mayores.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00bfSQLite en producci\u00f3n? - El blog de Felipe\" \/>\n<meta property=\"og:description\" content=\"SQLite, la base de datos para herramientas y aplicaciones m\u00f3viles, podr\u00eda satisfacer todas las necesidades de algunas aplicaciones mayores.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Felipe\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-26T10:29:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-27T11:57:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/05\/image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"220\" \/>\n\t<meta property=\"og:image:height\" content=\"101\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"AI\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"AI\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/\"},\"author\":{\"name\":\"AI\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/person\\\/e32bfb69f0dcbed869e838474a34d240\"},\"headline\":\"\u00bfSQLite en producci\u00f3n?\",\"datePublished\":\"2022-05-26T10:29:52+00:00\",\"dateModified\":\"2022-07-27T11:57:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/\"},\"wordCount\":2402,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/05\\\/image.png\",\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/\",\"name\":\"\u00bfSQLite en producci\u00f3n? - El blog de Felipe\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/05\\\/image.png\",\"datePublished\":\"2022-05-26T10:29:52+00:00\",\"dateModified\":\"2022-07-27T11:57:25+00:00\",\"description\":\"SQLite, la base de datos para herramientas y aplicaciones m\u00f3viles, podr\u00eda satisfacer todas las necesidades de algunas aplicaciones mayores.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/05\\\/image.png\",\"contentUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/05\\\/image.png\",\"width\":220,\"height\":101},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/05\\\/26\\\/sqlite-en-produccion\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00bfSQLite en producci\u00f3n?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#website\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\",\"name\":\"El blog de Felipe\",\"description\":\"De la abundancia del coraz\u00f3n...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\",\"name\":\"El blog de Felipe\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2019\\\/11\\\/cropped-caricatura_felipe.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2019\\\/11\\\/cropped-caricatura_felipe.jpg\",\"width\":1360,\"height\":598,\"caption\":\"El blog de Felipe\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/person\\\/e32bfb69f0dcbed869e838474a34d240\",\"name\":\"AI\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"caption\":\"AI\"},\"description\":\"Este art\u00edculo ha sido seleccionado y parcialmente escrito e ilustrado por Inteligencia Artificial (AI) basado en noticias disponibles.\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/author\\\/ai\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u00bfSQLite en producci\u00f3n? - El blog de Felipe","description":"SQLite, la base de datos para herramientas y aplicaciones m\u00f3viles, podr\u00eda satisfacer todas las necesidades de algunas aplicaciones mayores.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/","og_locale":"en_US","og_type":"article","og_title":"\u00bfSQLite en producci\u00f3n? - El blog de Felipe","og_description":"SQLite, la base de datos para herramientas y aplicaciones m\u00f3viles, podr\u00eda satisfacer todas las necesidades de algunas aplicaciones mayores.","og_url":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/","og_site_name":"El blog de Felipe","article_published_time":"2022-05-26T10:29:52+00:00","article_modified_time":"2022-07-27T11:57:25+00:00","og_image":[{"width":220,"height":101,"url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/05\/image.png","type":"image\/png"}],"author":"AI","twitter_card":"summary_large_image","twitter_misc":{"Written by":"AI","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#article","isPartOf":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/"},"author":{"name":"AI","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/person\/e32bfb69f0dcbed869e838474a34d240"},"headline":"\u00bfSQLite en producci\u00f3n?","datePublished":"2022-05-26T10:29:52+00:00","dateModified":"2022-07-27T11:57:25+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/"},"wordCount":2402,"commentCount":1,"publisher":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/05\/image.png","articleSection":["Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/","url":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/","name":"\u00bfSQLite en producci\u00f3n? - El blog de Felipe","isPartOf":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#primaryimage"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/05\/image.png","datePublished":"2022-05-26T10:29:52+00:00","dateModified":"2022-07-27T11:57:25+00:00","description":"SQLite, la base de datos para herramientas y aplicaciones m\u00f3viles, podr\u00eda satisfacer todas las necesidades de algunas aplicaciones mayores.","breadcrumb":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#primaryimage","url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/05\/image.png","contentUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/05\/image.png","width":220,"height":101},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/05\/26\/sqlite-en-produccion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.pacasmayo.com\/felipe\/"},{"@type":"ListItem","position":2,"name":"\u00bfSQLite en producci\u00f3n?"}]},{"@type":"WebSite","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#website","url":"https:\/\/blogs.pacasmayo.com\/felipe\/","name":"El blog de Felipe","description":"De la abundancia del coraz\u00f3n...","publisher":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.pacasmayo.com\/felipe\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization","name":"El blog de Felipe","url":"https:\/\/blogs.pacasmayo.com\/felipe\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2019\/11\/cropped-caricatura_felipe.jpg","contentUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2019\/11\/cropped-caricatura_felipe.jpg","width":1360,"height":598,"caption":"El blog de Felipe"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/person\/e32bfb69f0dcbed869e838474a34d240","name":"AI","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","caption":"AI"},"description":"Este art\u00edculo ha sido seleccionado y parcialmente escrito e ilustrado por Inteligencia Artificial (AI) basado en noticias disponibles.","url":"https:\/\/blogs.pacasmayo.com\/felipe\/author\/ai\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/comments?post=9468"}],"version-history":[{"count":2,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9468\/revisions"}],"predecessor-version":[{"id":9479,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9468\/revisions\/9479"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/media\/9460"}],"wp:attachment":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/media?parent=9468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/categories?post=9468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/tags?post=9468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}