{"id":4369,"date":"2017-06-30T13:40:51","date_gmt":"2017-06-30T13:40:51","guid":{"rendered":"http:\/\/www.odbms.org\/blog\/?p=4369"},"modified":"2017-06-30T13:40:51","modified_gmt":"2017-06-30T13:40:51","slug":"on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov","status":"publish","type":"post","link":"https:\/\/www.odbms.org\/blog\/2017\/06\/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov\/","title":{"rendered":"On Apache Ignite, Apache Spark and MySQL. Interview with Nikita Ivanov"},"content":{"rendered":"<blockquote><p><strong>&#8220;Spark and Ignite can complement each other very well. Ignite can provide shared storage for Spark so state can be passed from one Spark application or job to another. Ignite can also be used to provide distributed SQL with indexing that accelerates Spark SQL by up to 1,000x.&#8221;&#8211;Nikita Ivanov.<\/strong><\/p><\/blockquote>\n<p>I have interviewed <strong>Nikita Ivanov<\/strong>,CTO of <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.gridgain.com');\"  href=\"https:\/\/www.gridgain.com\" target=\"_blank\">GridGain<\/a>.<br \/>\nMain topics of the interview are Apache Ignite, Apache Spark and MySQL, and how well they perform on big data analytics.<\/p>\n<p>RVZ<\/p>\n<p><strong>Q1. What are the main technical challenges of SaaS development projects?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Software_as_a_service');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Software_as_a_service\" target=\"_blank\">SaaS <\/a>requires that the applications be highly responsive, reliable and web-scale. SaaS development projects face many of the same challenges as software development projects including a need for stability, reliability, security, scalability, and speed. Speed is especially critical for modern businesses undergoing the digital transformation to deliver real-time services to their end users. These challenges are amplified for SaaS solutions which may have hundreds, thousands, or tens of thousands of concurrent users, far more than an on-premise deployment of enterprise software.<br \/>\nFortunately, <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/In-memory_processing');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/In-memory_processing\" target=\"_blank\">in-memory computing<\/a> offers SaaS developers solutions to the challenges of speed, scale and reliability.<\/p>\n<p><strong>Q2. In your opinion, what are the limitations of MySQL\u00ae when it comes to big data analytics?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.mysql.com');\"  href=\"https:\/\/www.mysql.com\" target=\"_blank\">MySQL<\/a> was originally designed as a single-node system and not with the modern data center concept in mind. MySQL installations cannot scale to accommodate big data using MySQL on a single node. Instead, MySQL must rely on <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Shard_(database_architecture)');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Shard_(database_architecture)\" target=\"_blank\">sharding<\/a>, or splitting a data set over multiple nodes or instances, to manage large data sets. However, most companies manually shard their database, making the creation and maintenance of their application much more complex. Manually creating an application that can then perform cross-node SQL queries on the sharded data multiplies the level of complexity and cost.<\/p>\n<p>MySQL was also not designed to run complicated queries against massive data sets. <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/dev.mysql.com\/doc\/internals\/en\/optimizer.html');\"  href=\"https:\/\/dev.mysql.com\/doc\/internals\/en\/optimizer.html\" target=\"_blank\">MySQL optimizer<\/a> is quite limited, executing a single query at a time using a <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Thread_(computing)');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Thread_(computing)\" target=\"_blank\">single thread<\/a>. A MySQL query can neither scale among <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Multi-core_processor');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Multi-core_processor\" target=\"_blank\">multiple CPU cores<\/a> in a single system nor execute distributed queries across multiple nodes.<\/p>\n<p><strong>Q3. What solutions exist to enhance MySQL\u2019s capabilities for big data analytics?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: For companies which require real-time analytics, they may attempt to manually shard their database. Tools such as <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/vitess.io');\"  href=\"http:\/\/vitess.io\" target=\"_blank\">Vitess<\/a>, a framework YouTube released for MySQL sharding, or <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/proxysql.com');\"  href=\"http:\/\/proxysql.com\" target=\"_blank\">ProxySQL<\/a> are often used to help implement sharding.<br \/>\nTo speed up queries, caching solutions such as <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/memcached.org');\"  href=\"https:\/\/memcached.org\" target=\"_blank\">Memcached <\/a>and <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redis.io');\"  href=\"https:\/\/redis.io\" target=\"_blank\">Redis<\/a> are often deployed.<\/p>\n<p>Many companies turn to <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Data_warehouse');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Data_warehouse\" target=\"_blank\">data warehousing<\/a> technologies. These solutions require <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Extract,_transform,_load');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Extract,_transform,_load\" target=\"_blank\">ETL processes<\/a> and a separate technology stack which must be deployed and managed. There are many external solutions, such as <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/hadoop.apache.org');\"  href=\"http:\/\/hadoop.apache.org\" target=\"_blank\">Hadoop<\/a> and <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/spark.apache.org');\"  href=\"https:\/\/spark.apache.org\" target=\"_blank\">Apache Spark<\/a>, which are quite popular. <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.vertica.com');\"  href=\"https:\/\/www.vertica.com\" target=\"_blank\">Vertica<\/a> and <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/clickhouse.yandex');\"  href=\"https:\/\/clickhouse.yandex\" target=\"_blank\">ClickHouse<\/a> have also emerged as analytics solutions for MySQL.<\/p>\n<p><a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/ignite.apache.org');\"  href=\"https:\/\/ignite.apache.org\" target=\"_blank\">Apache Ignite<\/a> offers speed, scale and reliability because it was built from the ground up as a high performant and highly scalable distributed in-memory computing platform.<br \/>\nIn contrast to the MySQL single-node design, Apache Ignite automatically distributes data across nodes in a cluster eliminating the need for manual sharding. The cluster can be deployed on-premise, in the cloud, or in a hybrid environment. Apache Ignite easily integrates with Hadoop and Spark, using in-memory technology to complement these technologies and achieve significantly better performance and scale. The <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/ignite.apache.org\/features\/sql.html');\"  href=\"https:\/\/ignite.apache.org\/features\/sql.html\" target=\"_blank\">Apache Ignite In-Memory SQL Grid<\/a> is highly optimized and easily tuned to execute high performance ANSI-99 SQL queries. The In-Memory SQL Grid offer access via JDBC\/ODBC and the Ignite SQL API for external SQL commands or integration with analytics visualization software such as <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.tableau.com');\"  href=\"https:\/\/www.tableau.com\" target=\"_blank\">Tableau<\/a>.  <\/p>\n<p><strong>Q4. What is exactly Apache\u00ae Ignite\u2122?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: Apache Ignite is a high-performance, distributed in-memory platform for computing and transacting on large-scale data sets in real-time. It is 1,000x faster than systems built using traditional database technologies that are based on disk or flash technologies. It can also scale out to manage petabytes of data in memory.<\/p>\n<p>Apache Ignite includes the following functionality:<\/p>\n<p>\u00b7 <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/ignite.apache.org\/features\/datagrid.html');\"  href=\"https:\/\/ignite.apache.org\/features\/datagrid.html\" target=\"_blank\">Data grid<\/a> \u2013 An in-memory key value data cache that can be queried<\/p>\n<p>\u00b7 <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/apacheignite.readme.io\/docs\/sql-grid');\"  href=\"https:\/\/apacheignite.readme.io\/docs\/sql-grid\" target=\"_blank\">SQL grid<\/a> &#8211; Provides the ability to interact with data in-memory using ANSI SQL-99 via JDBC or ODBC APIs<\/p>\n<p>\u00b7 <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/ignite.apache.org\/features\/computegrid.html');\"  href=\"https:\/\/ignite.apache.org\/features\/computegrid.html\" target=\"_blank\">Compute grid<\/a> &#8211; A stateless grid that provides high-performance computation in memory using clusters of computers and massive parallel processing<\/p>\n<p>\u00b7 <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/apacheignite.readme.io\/docs\/service-grid');\"  href=\"https:\/\/apacheignite.readme.io\/docs\/service-grid\" target=\"_blank\">Service grid<\/a> &#8211; A service grid in which grid service instances are deployed across the distributed data and compute grids<\/p>\n<p>\u00b7 <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/ignite.apache.org\/features\/streaming.html');\"  href=\"https:\/\/ignite.apache.org\/features\/streaming.html\" target=\"_blank\">Streaming analytics<\/a> \u2013 The ability to consume an endless stream of information and process it in real-time<\/p>\n<p>\u00b7 <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/apacheignite.readme.io\/v1.1\/docs\/cluster');\"  href=\"https:\/\/apacheignite.readme.io\/v1.1\/docs\/cluster\" target=\"_blank\">Advanced clustering<\/a> \u2013 The ability to automatically discover nodes, eliminating the need to restart the entire cluster when adding new nodes<\/p>\n<p><strong>Q5. How Apache Ignite differs from other in-memory data platforms?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: Most in-memory computing solutions fall into one of three types: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.gridgain.com\/resources\/blog\/memory-database-vs-memory-data-grid-revisited');\"  href=\"https:\/\/www.gridgain.com\/resources\/blog\/memory-database-vs-memory-data-grid-revisited\" target=\"_blank\">in-memory data grids<\/a>, <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/In-memory_database');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/In-memory_database\" target=\"_blank\">in-memory databases<\/a>, or a <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Event_stream_processing');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Event_stream_processing\" target=\"_blank\">streaming<\/a> analytics engine.<br \/>\nApache Ignite is a full-featured in-memory computing platform which includes an in-memory data grid, in-memory database capabilities, and a streaming analytics engine. Furthermore, Apache Ignite supports distributed ACID compliant transactions and ANSI SQL-99 including support for DML and DDL via JDBC\/ODBC.<\/p>\n<p><strong>Q6. Can you use Apache\u00ae Ignite\u2122 for Real-Time Processing of IoT-Generated Streaming Data?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: Yes, Apache Ignite can ingest and analyze streaming data using its streaming analytics engine which is built on a high-performance and scalable distributed architecture. Because Apache Ignite natively integrates with<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/spark.apache.org');\"  href=\"https:\/\/spark.apache.org\" target=\"_blank\"> Apache Spark<\/a>, it is also possible to deploy Spark for <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Machine_learning');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Machine_learning\" target=\"_blank\">machine learning <\/a>at in-memory computing speeds.<br \/>\nApache Ignite supports both high volume OLTP and OLAP use cases, supporting H<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Hybrid_Transactional\/Analytical_Processing_(HTAP)');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Hybrid_Transactional\/Analytical_Processing_(HTAP)\" target=\"_blank\">ybrid Transactional Analytical Processing <\/a>(HTAP) use cases, while achieving performance gains of 1000x or greater over systems which are built on disk-based databases. <\/p>\n<p><strong>Q7. How do you stream data to an Apache Ignite cluster from embedded devices?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: It is very easy to stream data to an Apache Ignite cluster from embedded devices.<br \/>\nThe Apache Ignite streaming functionality allows for processing never-ending streams of data from embedded devices in a scalable and fault-tolerant manner. Apache Ignite can handle millions of events per second on a moderately sized cluster for embedded devices generating massive amounts of data.<\/p>\n<p><strong>Q8. Is this different then using Apache Kafka?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/kafka.apache.org');\"  href=\"https:\/\/kafka.apache.org\" target=\"_blank\">Apache Kafka <\/a>is a distributed streaming platform that lets you publish and subscribe to data streams. Kafka is most commonly used to build a real-time streaming data pipeline that reliably transfers data between applications. This is very different from Apache Ignite, which is designed to ingest, process, analyze and store streaming data.<\/p>\n<p><strong>Q9. How do you conduct real-time data processing on this stream using Apache Ignite?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: Apache Ignite includes a <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/apacheignite.readme.io\/v1.6\/docs\/kafka-streamer');\"  href=\"https:\/\/apacheignite.readme.io\/v1.6\/docs\/kafka-streamer\" target=\"_blank\">connector for Apache Kafka<\/a> so it is easy to connect Apache Kafka and Apache Ignite. Developers can either push data from Kafka directly into Ignite\u2019s in-memory data cache or present the streaming data to Ignite\u2019s streaming module where it can be analyzed and processed before being stored in memory.<br \/>\nThis versatility makes the combination of Apache Kafka and Apache Ignite very powerful for real-time processing of streaming data.<\/p>\n<p><strong>Q10. Is this different then using Spark Streaming?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/spark.apache.org\/streaming\/');\"  href=\"https:\/\/spark.apache.org\/streaming\/\" target=\"_blank\">Spark Streaming<\/a> enables processing of live data streams. This is merely one of the capabilities that Apache Ignite supports. Although Apache Spark and Apache Ignite utilize the power of in-memory computing, they address different use cases. Spark processes but doesn\u2019t store data. It loads the data, processes it, then discards it. Ignite, on the other hand, can be used to process data and it also provides a distributed in-memory key-value store with ACID compliant transactions and SQL support.<br \/>\nSpark is also for non-transactional, read-only data while Ignite supports non-transactional and transactional workloads. Finally, Apache Ignite also supports purely computational payloads for <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Supercomputer');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Supercomputer\" target=\"_blank\">HPC<\/a> and <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Massively_parallel');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Massively_parallel\" target=\"_blank\">MPP<\/a> use cases while Spark works only on data-driven payloads.<\/p>\n<p>Spark and Ignite can complement each other very well. Ignite can provide shared storage for Spark so state can be passed from one Spark application or job to another. Ignite can also be used to provide distributed SQL with indexing that accelerates Spark SQL by up to 1,000x.<\/p>\n<p><strong>Qx. Is there anything else you wish to add?<\/strong><\/p>\n<p><strong>Nikita Ivanov<\/strong>: The world is undergoing a digital transformation which is driving companies to get closer to their customers. This transformation requires that companies move from big data to fast data, the ability to gain real-time insights from massive amounts of incoming data. Whether that data is generated by the <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/en.wikipedia.org\/wiki\/Internet_of_things');\"  href=\"https:\/\/en.wikipedia.org\/wiki\/Internet_of_things\" target=\"_blank\">Internet of Things<\/a> (IoT), web-scale applications, or other streaming data sources, companies must put architectures in place to make sense of this river of data. As companies make this transition, they will be moving to memory-first architectures which ingest and process data in-memory before offloading to disk-based datastores and increasingly will be applying machine learning and deep learning to make understand the data. Apache Ignite continues to evolve in directions that will support and extend the abilities of memory-first architectures and machine learning\/deep learning systems.<\/p>\n<p>&#8212;&#8212;&#8211;<br \/>\n<strong>Nikita Ivanov<\/strong><em>Founder &#038; CTO, GridGain,<br \/>\nNikita Ivanov is founder of Apache Ignite project and CTO of GridGain Systems, started in 2007. Nikita has led GridGain to develop advanced and distributed in-memory data processing technologies \u2013 the top Java in-memory data fabric starting every 10 seconds around the world today. Nikita has over 20 years of experience in software application development, building HPC and middleware platforms, contributing to the efforts of other startups and notable companies including Adaptec, Visa and BEA Systems. He is an active member of Java middleware community, contributor to the Java specification. He\u2019s also a frequent international speaker with over two dozen of talks on various developer conferences globally.<\/em><\/p>\n<p><strong>Resources<\/strong><\/p>\n<p>&#8211; <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/ignite.apache.org\/community\/resources.html');\"  href=\"https:\/\/ignite.apache.org\/community\/resources.html\" target=\"_blank\">Apache Ignite Community Resources<\/a><\/p>\n<p>&#8211; <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/github.com\/gridgain\/apache-ignite');\"  href=\"https:\/\/github.com\/gridgain\/apache-ignite\" target=\"_blank\">apache\/ignite on GitHub<\/a><\/p>\n<p>&#8211; <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/github.com\/apacheignite\/yardstick-ignite');\"  href=\"https:\/\/github.com\/apacheignite\/yardstick-ignite\" target=\"_blank\">Yardstick Apache Ignite Benchmarks<\/a><\/p>\n<p>&#8211;<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/2017\/05\/accelerate-mysql-for-demanding-olap-and-oltp-use-cases-with-apache-ignite-3\/');\"  href=\"http:\/\/www.odbms.org\/2017\/05\/accelerate-mysql-for-demanding-olap-and-oltp-use-cases-with-apache-ignite-3\/\" target=\"_blank\">Accelerate MySQL for Demanding OLAP and OLTP Use Cases with Apache Ignite<\/a><\/p>\n<p>&#8211;<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/2017\/02\/misys-uses-gridgain-to-enable-high-performance-real-time-data-processing\/');\"  href=\"http:\/\/www.odbms.org\/2017\/02\/misys-uses-gridgain-to-enable-high-performance-real-time-data-processing\/\" target=\"_blank\">Misys Uses GridGain to Enable High Performance, Real-Time Data Processing<\/a><\/p>\n<p>&#8211;<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/2017\/06\/the-spark-python-api-pyspark\/');\"  href=\"http:\/\/www.odbms.org\/2017\/06\/the-spark-python-api-pyspark\/\" target=\"_blank\">The Spark Python API (PySpark)<\/a><\/p>\n<p><strong>Related Posts<\/strong><\/p>\n<p>&#8211;<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/2016\/04\/supporting-the-fast-data-paradigm-with-apache-spark\/');\"  href=\"http:\/\/www.odbms.org\/2016\/04\/supporting-the-fast-data-paradigm-with-apache-spark\/\" target=\"_blank\">Supporting the Fast Data Paradigm with Apache Spark. BY Stephen Dillon, Data Architect, Schneider Electric<\/a><\/p>\n<p>&#8211; <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/blog\/2017\/03\/on-the-new-developments-in-apache-spark-and-hadoop-interview-with-amr-awadallah\/');\"  href=\"http:\/\/www.odbms.org\/blog\/2017\/03\/on-the-new-developments-in-apache-spark-and-hadoop-interview-with-amr-awadallah\/\" target=\"_blank\">On the new developments in Apache Spark and Hadoop. Interview with Amr Awadallah. ODBMS Industry Watch,March 13, 2017<\/a><\/p>\n<p><strong>Follow ODBMS.org on Twitter: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/twitter.com\/odbmsorg');\"  href=\"https:\/\/twitter.com\/odbmsorg\" target=\"_blank\">@odbmsorg<\/a><\/strong><\/p>\n<p>##<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>&#8220;Spark and Ignite can complement each other very well. Ignite can provide shared storage for Spark so state can be passed from one Spark application or job to another. Ignite can also be used to provide distributed SQL with indexing that accelerates Spark SQL by up to 1,000x.&#8221;&#8211;Nikita Ivanov. I have interviewed Nikita Ivanov,CTO of [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[35,761,1129,789,790,66,1128,1126,1127,1121,239,1122,1072,286,350,372,1123,762,1125,495,513,919,549,564,603,1124],"_links":{"self":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts\/4369"}],"collection":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/comments?post=4369"}],"version-history":[{"count":16,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts\/4369\/revisions"}],"predecessor-version":[{"id":4404,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts\/4369\/revisions\/4404"}],"wp:attachment":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/media?parent=4369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/categories?post=4369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/tags?post=4369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}