{"id":18822,"date":"2020-05-21T10:30:47","date_gmt":"2020-05-21T14:30:47","guid":{"rendered":"https:\/\/blog.logrocket.com\/?p=18822"},"modified":"2024-06-04T17:28:27","modified_gmt":"2024-06-04T21:28:27","slug":"speeding-up-development-environment-sqlite","status":"publish","type":"post","link":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/","title":{"rendered":"Speeding up your development environment with SQLite"},"content":{"rendered":"<!DOCTYPE html>\n<html><p>As we seek different tools and techniques to speed up our development workflow, database management remains overlooked. It\u2019s still rigorous and time-consuming to set up and maintain when working with relational databases like PostgreSQL.<\/p><img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"485\" src=\"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg\" class=\"attachment-full size-full wp-post-image\" alt=\"Speeding Up Your Development Environment With SQLite\" srcset=\"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg 730w, https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite-300x199.jpeg 300w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\">\n<p>Fortunately, SQLite, a self-contained SQL database engine, reduces a lot of the labor of working with databases in our development environment.<\/p>\n<h2>How SQLite works<\/h2>\n<p>From the <a href=\"https:\/\/www.sqlite.org\/index.html\">official docs<\/a>:<\/p>\n<blockquote><p>SQLite is a C-language library that implements a <a href=\"https:\/\/www.sqlite.org\/footprint.html\">small<\/a>, <a href=\"https:\/\/www.sqlite.org\/fasterthanfs.html\">fast<\/a>, <a href=\"https:\/\/www.sqlite.org\/selfcontained.html\">self-contained<\/a>, <a href=\"https:\/\/www.sqlite.org\/hirely.html\">high-reliability<\/a>, <a href=\"https:\/\/www.sqlite.org\/fullsql.html\">full-featured<\/a>&nbsp;SQL database engine.<\/p><\/blockquote>\n<p>Apart from being fast, SQLite is self-contained, and this makes it a great choice for a lot of applications, whether for mobile or web. It eliminates the need for applications to rely on external databases in order to function. With this in mind, SQL can become a very good option for working with databases in our development environment.<\/p>\n<p>Since our SQLite database will exist inside our project, its content will be consistent across all our development environments. The database setup is done just once, and with every other initialization of our project across different development environments, we won\u2019t need to do any additional work to set up a database.<\/p>\n<p>This will significantly speed up our workflow because it eliminates the issue of data inconsistency as well as the difficulty of connecting to a new database, migrating, and then seeding data every time we decide to work with a new development environment.<\/p>\n<h3>When not to use SQLite<\/h3>\n<p>SQLite is a good option in many cases, but considering the size and type of your application, it might not be the best choice for your production environment.<\/p>\n<p>SQLite does not support concurrency. This means that only one user can write to the database at a time, so when working with applications that require multiple users to write to the database concurrently, PostgreSQL might be a better option for your production environment.<\/p>\n<p>Also, SQLite works well with applications that don\u2019t receive traffic of more than 100,000 hits per day. If your application is expected to scale past this limit, then SQLite is probably not the best option for production. Since our focus is on our development environment, however, this likely won\u2019t be an issue.<\/p>\n<p>Let\u2019s demonstrate how we can use SQLite to speed up our development environment by building a Node.js application. We\u2019ll show how SQLite can be used alongside other relational databases like PostgreSQL, with SQLite used for development and PostgreSQL used for production.<\/p>\n<h2>Scaffolding our Node.js application<\/h2>\n<p>Let\u2019s start by scaffolding a new Node.js app with Express.js. First, we\u2019ll ensure that we have Node installed in our local environment. Let\u2019s do that by running the following command on our terminal:<\/p>\n<pre>node --version<\/pre>\n<p>This should return the version of Node we have installed. <a href=\"https:\/\/nodejs.org\/en\/download\/\">Click here<\/a> to see Node installation instructions if the command returns an error message.<\/p>\n<p>Next, we\u2019ll install the Express application generator, which we\u2019ll use to scaffold our Node app:<\/p>\n<pre>npm install -g express-generator<\/pre>\n<p>Now let\u2019s run the following command on our terminal:<\/p>\n<pre>express node_sqlite<\/pre>\n<p>Then <code>npm install<\/code> to install the default npm packages.<\/p>\n<p>If you\u2019ve followed all the steps correctly, you should be able to view your Node app when you <code>cd<\/code> into your new app directory and run <code>npm start<\/code>:<\/p>\n<pre>cd node_sqlite\nnpm start<\/pre>\n<p>Our new app directory should look like this:<\/p>\n<pre>\u251c\u2500\u2500 bin\n\u251c\u2500\u2500 public\n\u251c\u2500\u2500 routes\n\u251c\u2500\u2500 views\n\u251c\u2500\u2500 package.json\n\u251c\u2500\u2500 app.js<\/pre>\n<h2>Installing the required dependencies<\/h2>\n<blockquote>\n<ul>\n<li>To handle our database queries, we\u2019ll be using Sequelize, a promise-based Node.js ORM (object-relational mapper)<\/li>\n<li>For making our environment variables accessible to our application, we\u2019ll need the <code>dotenv<\/code> package<\/li>\n<\/ul>\n<\/blockquote>\n<p>Let\u2019s install our packages with the following command:<\/p>\n<pre>npm i -s sequelize sequelize-cli dotenv<\/pre>\n<p>Before we initialize Sequelize, we\u2019ll add the following script to our <code>package.json<\/code> file, which can be found in the root directory:<\/p>\n<pre>\"sequelize\": \"node_modules\/.bin\/sequelize\"<\/pre>\n<p>This makes it easier for us to access the Sequelize commands from our terminal. With our newly added script, our <code>package.json<\/code> file should like this:<\/p>\n<pre>\/\/ .\/package.json\n\n{\n  \"name\": \"sqlite-test\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"start\": \"node .\/bin\/www\",\n    \"sequelize\": \"node_modules\/.bin\/sequelize\"\n  },\n  \"dependencies\": {\n    ...\n  }\n}<\/pre>\n<p>Now let\u2019s go ahead and initialize Sequelize by running the following command on our terminal:<\/p>\n<pre>npm run sequelize init<\/pre>\n<p>This generates a <code>models<\/code> folder for housing model files, which we\u2019ll be using to describe the logical structure of our database, and a <code>config<\/code> folder for our database configuration file.<\/p>\n<p>We want to store our production database URL as an environment variable. This eases the process of updating it in the future. To do this, we\u2019ll create a file named <code>.env<\/code> in our root directory and add a variable <code>DATABASE_URL<\/code> to it:<\/p>\n<pre>\/\/ .env\n\nDATABASE_URL= your database url here\nNODE_ENV=development<\/pre>\n<p>Notice that we also added a variable <code>NODE_ENV<\/code> to our <code>.env<\/code> file. This indicates the environment in which we will be running our application. Here, we\u2019ve used <code>development<\/code>.<\/p>\n<p>Now that we have that set up, let\u2019s navigate to the <code>.\/config\/config.json<\/code> file. This is the file that Sequelize generates for our app. By default, it should look like this:<\/p>\n<pre>{\n  \"development\": {\n    \"username\": \"root\",\n    \"password\": null,\n    \"database\": \"database_development\",\n    \"host\": \"127.0.0.1\",\n    \"dialect\": \"mysql\",\n    \"operatorsAliases\": false\n  },\n  \"test\": {\n    \"username\": \"root\",\n    \"password\": null,\n    \"database\": \"database_test\",\n    \"host\": \"127.0.0.1\",\n    \"dialect\": \"mysql\",\n    \"operatorsAliases\": false\n  },\n  \"production\": {\n    \"username\": \"root\",\n    \"password\": null,\n    \"database\": \"database_production\",\n    \"host\": \"127.0.0.1\",\n    \"dialect\": \"mysql\",\n    \"operatorsAliases\": false\n  }\n}<\/pre>\n<p>Since we\u2019ll be accessing our production database URL (which we stored in our <code>.env<\/code> file) from here, let\u2019s convert this to a JavaScript module instead of a JSON file. To do this, we\u2019ll first rename the file <code>config.json<\/code> to <code>config.js<\/code> and then replace its content with the following code block:<\/p>\n<pre>module.exports = {\n  development: {\n  },\n  test: {\n  },\n  production: {\n  },\n};<\/pre>\n<p>Next, we\u2019ll fill in the details for our development, test, and production environments. Let\u2019s edit our <code>config.js<\/code> file to look like this:<\/p>\n<pre>require('dotenv').config();\n\nmodule.exports = {\n  development: {\n    dialect: \"sqlite\",\n    storage: \".\/sqlite-dev.db\"\n  },\n  test: {\n    dialect: \"sqlite\",\n    storage: \".\/sqlite-test.db\"\n  },\n  production: {\n    url: process.env.DATABASE_URL,\n    dialect: 'postgres',\n  },\n};<\/pre>\n<p>Notice how we used <code>sqlite<\/code> for our development and test environments and then <code>postgres<\/code> for our production environment. Depending on the type\/size of our application, we could go ahead and also use <code>sqlite<\/code> for our production environment. We also initialized our <code>dotenv<\/code> module on <code>line 1<\/code>.<\/p>\n<h2>Generate our database model<\/h2>\n<p>For our next step, we\u2019ll be using Sequelize to create a table in our database. If our Node environment is set to either <code>development<\/code> or <code>test<\/code> in our <code>dotenv<\/code> file (as we\u2019ve done), Sequelize will generate a new SQLite database in our root directory with the name we used in our config file before creating the table.<\/p>\n<p>Let\u2019s create a table called <code>User<\/code> by running the following command on our terminal:<\/p>\n<pre>npm run sequelize -- model:generate --name User --attributes username:string,password:string<\/pre>\n<p>This creates a table <code>User<\/code> with columns <code>username<\/code> and <code>password<\/code> in our database. When we navigate to our root directory, we\u2019ll see a file named <code>sqlite-dev.db<\/code>. This is our newly created SQLite database.<\/p>\n<p>To view our SQLite database in a database management system, we can use the DB Browser for SQLite tool. Here\u2019s the <a href=\"https:\/\/sqlitebrowser.org\/\">download link<\/a>.<\/p>\n<h2>Generating a seed file for our database<\/h2>\n<p>Seed files are used to add initial data to our database. This data is usually used for testing. In our case, we\u2019ll be adding three default users to our SQLite database. To generate a seed file for our user table, let\u2019s run the following command on our terminal:<\/p>\n<pre>npm run sequelize -- seed:generate --name user<\/pre>\n<p>This creates a new file in the directory <code>.\/seeders<\/code>. Depending on the date, its name will look similar to <code>20200428202218-user.js<\/code>.<\/p>\n<p>By default, the generated file should look like this:<\/p>\n<pre>'use strict';\nmodule.exports = {\n  up: (queryInterface, Sequelize) =&gt; {\n    \/*\n      Add altering commands here.\n      Return a promise to correctly handle asynchronicity.\n      Example:\n      return queryInterface.bulkInsert('People', [{\n        name: 'John Doe',\n        isBetaMember: false\n      }], {});\n    *\/\n  },\n  down: (queryInterface, Sequelize) =&gt; {\n    \/*\n      Add reverting commands here.\n      Return a promise to correctly handle asynchronicity.\n      Example:\n      return queryInterface.bulkDelete('People', null, {});\n    *\/\n  }\n};<\/pre>\n<p>Let\u2019s edit it to this:<\/p>\n<pre>'use strict';\nmodule.exports = {\n  up: queryInterface =&gt;\n    queryInterface.bulkInsert('Users', [\n      {\n        username: 'johndoe',\n        password: 'dontstorepasswordsthisway',\n        createdAt: new Date().toDateString(),\n        updatedAt: new Date().toDateString()\n      },\n      {\n        username: 'janedoe',\n        password: 'youreallyshouldhashpasswords',\n        createdAt: new Date().toDateString(),\n        updatedAt: new Date().toDateString()\n      },\n      {\n        username: 'ritadoe',\n        password: 'outofpasswordideas',\n        createdAt: new Date().toDateString(),\n        updatedAt: new Date().toDateString()\n      }\n    ], {}),\n  down: (queryInterface, Sequelize) =&gt; {\n    \/*\n      Add reverting commands here.\n      Return a promise to correctly handle asynchronicity.\n      Example:\n      return queryInterface.bulkDelete('People', null, {});\n    *\/\n  }\n};<\/pre>\n<p>Now that we have generated our seed file, we can seed our database by running the following command on our terminal:<\/p>\n<pre>npm run sequelize db:seed:all<\/pre>\n<p>We should see a success message similar to this:<\/p>\n<pre>Loaded configuration file \"config\\config.js\".\nUsing environment \"development\".\n== 20200428202218-user: migrating =======\n== 20200428202218-user: migrated (0.020s)<\/pre>\n<h2>Conclusion<\/h2>\n<p>With this done, we can go ahead and create controllers for querying and mutating our SQLite database. Using SQLite makes accessing our database a lot faster, as there is no need for an external call from our application.<\/p>\n<p>As we discussed in the introduction, our database setup is done just once, and then with every other initialization of our project across different development environments, there\u2019s no need for any work to be done concerning setting up or configuring a database for our application.<\/p>\n<p>Here\u2019s the link to the GitHub repository for our API setup: <a href=\"https:\/\/github.com\/ebenezerdon\/node_sqlite\">node_sqlite_setup<\/a><\/p>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Learn how SQLite can be used in development alongside other relational databases like Postgres.<\/p>\n","protected":false},"author":156415432,"featured_media":18946,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2147999,1],"tags":[2109699],"class_list":["post-18822","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","category-uncategorized","tag-node"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Speeding up your development environment with SQLite - LogRocket Blog<\/title>\n<meta name=\"description\" content=\"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Speeding up your development environment with SQLite - LogRocket Blog\" \/>\n<meta property=\"og:description\" content=\"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/\" \/>\n<meta property=\"og:site_name\" content=\"LogRocket Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-21T14:30:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-04T21:28:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"730\" \/>\n\t<meta property=\"og:image:height\" content=\"485\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ebenezer Don\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/ebenezerdn\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ebenezer Don\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/\",\"url\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/\",\"name\":\"Speeding up your development environment with SQLite - LogRocket Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.logrocket.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg\",\"datePublished\":\"2020-05-21T14:30:47+00:00\",\"dateModified\":\"2024-06-04T21:28:27+00:00\",\"author\":{\"@id\":\"https:\/\/blog.logrocket.com\/#\/schema\/person\/dd4a3f20786e70809f5812933b14074d\"},\"description\":\"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#primaryimage\",\"url\":\"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg\",\"contentUrl\":\"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg\",\"width\":730,\"height\":485,\"caption\":\"Speeding Up Your Development Environment With SQLite\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.logrocket.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Speeding up your development environment with SQLite\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.logrocket.com\/#website\",\"url\":\"https:\/\/blog.logrocket.com\/\",\"name\":\"LogRocket Blog\",\"description\":\"Resources to Help Product Teams Ship Amazing Digital Experiences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.logrocket.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.logrocket.com\/#\/schema\/person\/dd4a3f20786e70809f5812933b14074d\",\"name\":\"Ebenezer Don\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.logrocket.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ddef35bd129eb79559c55d79ac4e5b65f4cb87e09c9fa554ae58808d18b331d2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ddef35bd129eb79559c55d79ac4e5b65f4cb87e09c9fa554ae58808d18b331d2?s=96&d=mm&r=g\",\"caption\":\"Ebenezer Don\"},\"description\":\"Full-stack software engineer with a passion for building meaningful products that ease the lives of users.\",\"sameAs\":[\"https:\/\/www.ebenezerdon.com\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/ebenezerdn\"],\"url\":\"https:\/\/blog.logrocket.com\/author\/ebenezerdon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Speeding up your development environment with SQLite - LogRocket Blog","description":"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.","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:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/","og_locale":"en_US","og_type":"article","og_title":"Speeding up your development environment with SQLite - LogRocket Blog","og_description":"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.","og_url":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/","og_site_name":"LogRocket Blog","article_published_time":"2020-05-21T14:30:47+00:00","article_modified_time":"2024-06-04T21:28:27+00:00","og_image":[{"width":730,"height":485,"url":"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg","type":"image\/jpeg"}],"author":"Ebenezer Don","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/ebenezerdn","twitter_misc":{"Written by":"Ebenezer Don","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/","url":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/","name":"Speeding up your development environment with SQLite - LogRocket Blog","isPartOf":{"@id":"https:\/\/blog.logrocket.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#primaryimage"},"image":{"@id":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg","datePublished":"2020-05-21T14:30:47+00:00","dateModified":"2024-06-04T21:28:27+00:00","author":{"@id":"https:\/\/blog.logrocket.com\/#\/schema\/person\/dd4a3f20786e70809f5812933b14074d"},"description":"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.","breadcrumb":{"@id":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#primaryimage","url":"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg","contentUrl":"https:\/\/blog.logrocket.com\/wp-content\/uploads\/2020\/05\/speeding-up-development-environment-sqlite.jpeg","width":730,"height":485,"caption":"Speeding Up Your Development Environment With SQLite"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.logrocket.com\/speeding-up-development-environment-sqlite\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.logrocket.com\/"},{"@type":"ListItem","position":2,"name":"Speeding up your development environment with SQLite"}]},{"@type":"WebSite","@id":"https:\/\/blog.logrocket.com\/#website","url":"https:\/\/blog.logrocket.com\/","name":"LogRocket Blog","description":"Resources to Help Product Teams Ship Amazing Digital Experiences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.logrocket.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.logrocket.com\/#\/schema\/person\/dd4a3f20786e70809f5812933b14074d","name":"Ebenezer Don","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.logrocket.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ddef35bd129eb79559c55d79ac4e5b65f4cb87e09c9fa554ae58808d18b331d2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddef35bd129eb79559c55d79ac4e5b65f4cb87e09c9fa554ae58808d18b331d2?s=96&d=mm&r=g","caption":"Ebenezer Don"},"description":"Full-stack software engineer with a passion for building meaningful products that ease the lives of users.","sameAs":["https:\/\/www.ebenezerdon.com\/","https:\/\/x.com\/https:\/\/twitter.com\/ebenezerdn"],"url":"https:\/\/blog.logrocket.com\/author\/ebenezerdon\/"}]}},"yoast_description":"SQLite is a self-contained SQL database engine that significantly reduces the labor of setting up and maintaining databases in our development environment.","_links":{"self":[{"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/posts\/18822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/users\/156415432"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/comments?post=18822"}],"version-history":[{"count":7,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/posts\/18822\/revisions"}],"predecessor-version":[{"id":18950,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/posts\/18822\/revisions\/18950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/media\/18946"}],"wp:attachment":[{"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/media?parent=18822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/categories?post=18822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.logrocket.com\/wp-json\/wp\/v2\/tags?post=18822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}