{"id":46595,"date":"2019-10-23T00:00:00","date_gmt":"2019-10-23T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/data-modeling-with-griddb\/"},"modified":"2026-01-22T12:05:50","modified_gmt":"2026-01-22T20:05:50","slug":"data-modeling-with-griddb","status":"publish","type":"post","link":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/data-modeling-with-griddb\/","title":{"rendered":"Data Modeling with GridDB"},"content":{"rendered":"<p>Here&#8217;s a video version of some of the content found in this blog.<\/p>\n<div style=\"text-align: center\">\n<iframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/HVfNymA3NRg\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div>\n<div style=\"margin-top: 25px\">\nGridDB has a unique Key-Container data model. In this model, a key points to a container which is essentially a columnar table and a container&#8217;s key is often referred to as its name. Different containers can have different schemas and row key types, but unlike SQL-type tables, containers can&#8217;t have constraints where values in one container have a fixed relationship to another container.\n<\/div>\n<p>Generally, data from one device, sensor, or input will be stored in one collection. In this blog post, we&#8217;ll explain what Containers are and what you can and cannot do with them. We will also explain how data is typically organized within a GridDB application.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/03\/Key-container_en.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/03\/Key-container_en.png\" alt=\"\" width=\"1808\" height=\"678\" class=\"aligncenter size-full wp-image-393\" srcset=\"\/wp-content\/uploads\/2017\/03\/Key-container_en.png 1808w, \/wp-content\/uploads\/2017\/03\/Key-container_en-300x113.png 300w, \/wp-content\/uploads\/2017\/03\/Key-container_en-768x288.png 768w, \/wp-content\/uploads\/2017\/03\/Key-container_en-1024x384.png 1024w\" sizes=\"(max-width: 1808px) 100vw, 1808px\" \/><\/a><\/p>\n<p>To compare GridDB to other NoSQL databases, in a Key-Value database (Redis), the key points to any value and attributes of that value usually cannot be indexed or queried, a Key in a Key-Document database (like MongoDB) points to a document where different documents can have different structures. <\/p>\n<h2>Containers<\/h2>\n<p>GridDB has two container types: Collections which can have any type of row key, and TimeSeries which always have a timestamp as the row key. They also feature several other unique features. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/09\/data-modeling-1024x675.png\" alt=\"\" width=\"1024\" height=\"675\" class=\"alignnone size-large wp-image-26229\" srcset=\"\/wp-content\/uploads\/2019\/09\/data-modeling-1024x675.png 1024w, \/wp-content\/uploads\/2019\/09\/data-modeling-300x198.png 300w, \/wp-content\/uploads\/2019\/09\/data-modeling-768x506.png 768w, \/wp-content\/uploads\/2019\/09\/data-modeling-600x395.png 600w, \/wp-content\/uploads\/2019\/09\/data-modeling.png 1282w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>In Java, a container is defined by a static class of variables; timestamps, simple strings, numbers,  <a href=\"https:\/\/griddb.net\/en\/blog\/using-geometry-values-griddb\/\">geometry types<\/a>, blobs or arrays of strings and numbers are all supported (<a href=\"https:\/\/www.toshiba-sol.co.jp\/pro\/bigdatapf\/lineup\/GridDB\/doc\/v4_1\/docs_en\/GridDB_TechnicalReference.html#sec-4.3.1.1\">Full list here<\/a>). In all other languages, the container is defined by a ContainerInfo object, but some languages do not support arrays and geometry types at this time.<\/p>\n<p>In a Collection, Row Keys can be either be unique or not, this is determined by placing a @RowKey attribute in front of the type in Java or the row_key parameter in a ContainerInfo object in other languages. <\/p>\n<h2>Data Modeling<\/h2>\n<p>With the Key-Container model, each device, application, sensor, account or dataset get its own container and typically the same schema would be used for each type of device. A unique ID would be part of the container key and a collection can be used to help organize the many container keys.<\/p>\n<p>Writes to an ad-hoc queries of an individual container are very fast as just that container needs to be locked meanwhile the total time required to query many containers is usually faster than Key-Column or relational data models. <\/p>\n<p>Let&#8217;s look at this example of a water company&#8217;s sensor recording and billing application.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/09\/er_diagram-1-300x160.png\" alt=\"\" width=\"300\" height=\"160\" class=\"alignnone size-medium wp-image-26197\" srcset=\"\/wp-content\/uploads\/2019\/09\/er_diagram-1-300x160.png 300w, \/wp-content\/uploads\/2019\/09\/er_diagram-1.png 347w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The above ER diagram would be represented in Java with the following classes:<\/p>\n<pre>\r\nstatic class AccountRecord {\r\n    @RowKey String accountId;\r\n    String billingName;\r\n    String billingAddress;\r\n    String billingEmail;\r\n    String[] sensorIds;\r\n} <\/pre>\n<pre>\r\nstatic class SensorReading {\r\n     @RowKey Date timestamp;\r\n     double liters;\r\n     double psi;\r\n}<\/pre>\n<p>The following shows how a GridDB puts data into different containers as well as how the same data would be represented in a Relational Database.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/09\/Screenshot-from-2019-10-16-14-30-31.png\" alt=\"\" width=\"1852\" height=\"921\" class=\"aligncenter size-full wp-image-26241\" srcset=\"\/wp-content\/uploads\/2019\/09\/Screenshot-from-2019-10-16-14-30-31.png 1852w, \/wp-content\/uploads\/2019\/09\/Screenshot-from-2019-10-16-14-30-31-300x149.png 300w, \/wp-content\/uploads\/2019\/09\/Screenshot-from-2019-10-16-14-30-31-768x382.png 768w, \/wp-content\/uploads\/2019\/09\/Screenshot-from-2019-10-16-14-30-31-1024x509.png 1024w, \/wp-content\/uploads\/2019\/09\/Screenshot-from-2019-10-16-14-30-31-600x298.png 600w\" sizes=\"(max-width: 1852px) 100vw, 1852px\" \/><\/p>\n<p><!-- The ACCOUNTS container would have the following data:\n\n\n<table width=75% border=1>\n\n\n<tr>\n\n<td><b>accountId<\/id>\n\n<td><b>billingName<\/b><\/td>\n\n\n\n<td><b>billingAddress<\/b><\/td>\n\n\n\n<td><b>billingEmail<\/b><\/td>\n\n\n\n<td><b>sensorIds<\/b><\/td>\n\n<\/tr>\n\n\n\n\n\n<tr>\n\n<td>100001<\/td>\n\n\n\n<td>Bill Smith<\/td>\n\n\n\n<td>1234 Your Street<\/td>\n\n\n\n<td>billsmith@griddb.net\n\n<td>abcdef123456,abcdef123457<\/td>\n\n<\/tr>\n\n<\/table>\n\n\n\n\n\n<p>Meanwhile the READING_abcdef123456 would have the following data:\n\n\n\n<table width=75% border=1>\n\n\n<tr>\n\n<td><b>timestamp<b><\/td>\n\n\n\n<td><b>liters<\/b><\/td>\n\n\n\n<td><b>psi<\/b><\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:00:00<\/td>\n\n\n\n<td>1002.9<\/td>\n\n\n\n<td>12.2<\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:01:00<\/td>\n\n\n\n<td>1038.1<\/td>\n\n\n\n<td>10.8<\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:02:00<\/td>\n\n\n\n<td>1092.3<\/td>\n\n\n\n<td>16.4<\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:03:00<\/td>\n\n\n\n<td>1152.2<\/td>\n\n\n\n<td>14.6<\/td>\n\n<\/tr>\n\n\n<\/table>\n\n\n\n\n\n<p>READING_abcdef123457 would have the following:\n\n\n\n<table width=75% border=1>\n\n\n<tr>\n\n<td><b>timestamp<b><\/td>\n\n\n\n<td><b>liters<\/b><\/td>\n\n\n\n<td><b>psi<\/b><\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:00:00<\/td>\n\n\n\n<td>1002.9<\/td>\n\n\n\n<td>17.2<\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:01:00<\/td>\n\n\n\n<td>1038.1<\/td>\n\n\n\n<td>12.2<\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:02:00<\/td>\n\n\n\n<td>1092.3<\/td>\n\n\n\n<td>15.2<\/td>\n\n<\/tr>\n\n\n\n\n<tr>\n\n<td>Jun 1 2019 12:03:00<\/td>\n\n\n\n<td>1152.2<\/td>\n\n\n\n<td>13.2<\/td>\n\n<\/tr>\n\n\n<\/table>\n\n --><\/p>\n<p>Notice on the relational side that all of the sensors will populate into one table.(Note: we settled on inserting all sensors into one table because it was the more efficient method in RDMBS). Imagine now that the application scales out to several tens of thousands of sensors; the RDBMS table housing the sensors will quickly become too cumbersome to do any meaningful work without significant slow downs.<\/p>\n<p>Over time each sensor would push data into the appropriate SENSOR_$sensorId container and customers would be written to the ACCOUNTS container with the sensorIds that apply to their account. When it comes time to generate bills, the billing application would iterate through the rows of accounts, reading each of the READING_$sensorId containers to calculate the bill. <\/p>\n<p>GridDB&#8217;s novel Key-Container data model allows developers an easy and efficient way to model data (Time Series or not) of many individual inputs into many containers that can be aggregated and iterated.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container which is essentially a columnar table and a container&#8217;s key is often referred to as its name. Different containers can have different schemas and row key [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Data Modeling with GridDB | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"Here&#039;s a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Modeling with GridDB | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"Here&#039;s a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-23T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-22T20:05:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2017\/03\/Key-container.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1808\" \/>\n\t<meta property=\"og:image:height\" content=\"678\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Owen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Owen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\"},\"author\":{\"name\":\"Owen\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\"},\"headline\":\"Data Modeling with GridDB\",\"datePublished\":\"2019-10-23T07:00:00+00:00\",\"dateModified\":\"2026-01-22T20:05:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\"},\"wordCount\":609,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2017\/03\/Key-container.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\",\"name\":\"Data Modeling with GridDB | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2017\/03\/Key-container.png\",\"datePublished\":\"2019-10-23T07:00:00+00:00\",\"dateModified\":\"2026-01-22T20:05:50+00:00\",\"description\":\"Here's a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2017\/03\/Key-container.png\",\"contentUrl\":\"\/wp-content\/uploads\/2017\/03\/Key-container.png\",\"width\":1808,\"height\":678},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb.net\/en\/#website\",\"url\":\"https:\/\/griddb.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\",\"name\":\"Owen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"caption\":\"Owen\"},\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/owen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Modeling with GridDB | GridDB: Open Source Time Series Database for IoT","description":"Here's a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container","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:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/","og_locale":"en_US","og_type":"article","og_title":"Data Modeling with GridDB | GridDB: Open Source Time Series Database for IoT","og_description":"Here's a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container","og_url":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2019-10-23T07:00:00+00:00","article_modified_time":"2026-01-22T20:05:50+00:00","og_image":[{"width":1808,"height":678,"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2017\/03\/Key-container.png","type":"image\/png"}],"author":"Owen","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"Owen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/"},"author":{"name":"Owen","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66"},"headline":"Data Modeling with GridDB","datePublished":"2019-10-23T07:00:00+00:00","dateModified":"2026-01-22T20:05:50+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/"},"wordCount":609,"commentCount":0,"publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2017\/03\/Key-container.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/","url":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/","name":"Data Modeling with GridDB | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2017\/03\/Key-container.png","datePublished":"2019-10-23T07:00:00+00:00","dateModified":"2026-01-22T20:05:50+00:00","description":"Here's a video version of some of the content found in this blog. GridDB has a unique Key-Container data model. In this model, a key points to a container","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/data-modeling-with-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2017\/03\/Key-container.png","contentUrl":"\/wp-content\/uploads\/2017\/03\/Key-container.png","width":1808,"height":678},{"@type":"WebSite","@id":"https:\/\/griddb.net\/en\/#website","url":"https:\/\/griddb.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66","name":"Owen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","caption":"Owen"},"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/owen\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/comments?post=46595"}],"version-history":[{"count":3,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46595\/revisions"}],"predecessor-version":[{"id":54941,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46595\/revisions\/54941"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media\/387"}],"wp:attachment":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media?parent=46595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/categories?post=46595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/tags?post=46595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}