Performance Comparison of the Most Popular Relational and Non-Relational Database Management Systems

Total Page:16

File Type:pdf, Size:1020Kb

Performance Comparison of the Most Popular Relational and Non-Relational Database Management Systems Master of Science in Software Engineering February 2018 Performance comparison of the most popular relational and non-relational database management systems Kamil Kolonko Faculty of Computing Blekinge Institute of Technology SE-371 79 Karlskrona Sweden This thesis is submitted to the Faculty of Computing at Blekinge Institute of Technology in partial fulfillment of the requirements for the degree of Master of Science in Software Engineering. The thesis is equivalent to 20 weeks of full time studies. Contact Information: Author(s): Kamil Kolonko E-mail: [email protected], [email protected] External advisor: IF APPLICABLE University advisor: Javier González-Huerta Department of Software Engineering Faculty of Computing Internet : www.bth.se Blekinge Institute of Technology Phone : +46 455 38 50 00 SE-371 79 Karlskrona, Sweden Fax : +46 455 38 50 57 i i ABSTRACT Context. Database is an essential part of any software product. With an emphasis on application performance, database efficiency becomes one of the key factors to analyze in the process of technology selection. With a development of new data models and storage technologies, the necessity for a comparison between relational and non-relational database engines is especially evident in the software engineering domain. Objectives. This thesis investigates current knowledge on database performance measurement methods, popularity of relational and non-relational database engines, defines characteristics of databases, approximates their average values and compares the performance of two selected database engines. Methods. In this study a number of research methods are used, including literature review, a review of Internet sources, and an experiment. Literature datasets used in the research incorporate over 100 sources including IEEE Xplore and ACM Digital Library. YCSB Benchmark was used as a direct performance comparison method in an experiment to compare OracleDB’s and MongoDB’s performance. Results. A list of database performance measurement methods has been defined as a result of the literature review. Two most popular database management engines, one relational and one non- relational has been identified. A set of database characteristics and a database performance comparison methodology has been identified. Performance of two selected database engines has been measured and compared. Conclusions. Performance comparison between two selected database engines indicated superior results for MongoDB under the experimental conditions. This database proved to be more efficient in terms of average operation latency and throughput for each of the measured workloads. OracleDB however, presented stable results in each of the category leaving the final choice of database to the specifics of a software engineering project. Activities required for the definition of database performance comparison methodology proved to be challenging and require study extension. Keywords: database, performance comparison, MongoDB, OracleDB CONTENTS ABSTRACT ...........................................................................................................................................I CONTENTS ......................................................................................................................................... II 1 INTRODUCTION ....................................................................................................................... 1 1.1 DEFINITIONS .......................................................................................................................... 1 1.2 HISTORY ................................................................................................................................ 1 1.3 PERFORMANCE ....................................................................................................................... 2 1.4 TAXONOMY ........................................................................................................................... 2 1.5 RELATIONAL VS NON-RELATIONAL ........................................................................................ 2 2 RELATED WORK ...................................................................................................................... 4 3 METHODOLOGY ...................................................................................................................... 6 4 DATABASE PERFORMANCE MEASUREMENT METHODS ........................................... 9 4.1 RESEARCH METHODOLOGY .................................................................................................... 9 4.2 RESEARCH QUESTION ........................................................................................................... 10 4.3 THE NEED FOR A REVIEW ..................................................................................................... 10 4.4 REVIEW ................................................................................................................................ 10 4.4.1 Search methodology ........................................................................................................ 10 4.4.2 Selection of articles ......................................................................................................... 11 4.4.3 Results ............................................................................................................................. 12 4.5 CONCLUSIONS ...................................................................................................................... 14 4.5.1 Method choice ................................................................................................................. 14 5 CHOICE OF COMPARED DBMSS ........................................................................................ 16 5.1 CHOICE CRITERIA ................................................................................................................. 16 5.2 INITIAL STUDY ..................................................................................................................... 17 5.3 RESEARCH METHODOLOGY .................................................................................................. 17 5.4 RESEARCH QUESTION ........................................................................................................... 18 5.5 RESEARCH ........................................................................................................................... 18 5.5.1 Search procedure ............................................................................................................ 18 5.5.2 Result .............................................................................................................................. 19 5.6 CONCLUSIONS ...................................................................................................................... 20 6 DATABASE CHARACTERISTICS DEFINITION ............................................................... 22 6.1 DATA SOURCES .................................................................................................................... 24 6.2 DATA ACQUISITION .............................................................................................................. 24 6.3 MEASURED DATABASE ......................................................................................................... 26 7 PERFORMANCE COMPARISON ......................................................................................... 27 7.1 SCHEMA ............................................................................................................................... 27 7.1.1 Schema translation ......................................................................................................... 27 7.2 MEASUREMENT METHOD ..................................................................................................... 28 7.3 WORKLOAD DEFINITION ...................................................................................................... 29 7.4 HARDWARE OUTLINE ........................................................................................................... 31 8 RESULTS ................................................................................................................................... 32 8.1 MONGODB .......................................................................................................................... 32 8.2 ORACLE ............................................................................................................................... 33 9 ANALYSIS AND DISCUSSION .............................................................................................. 35 9.1 WORKLOAD A ...................................................................................................................... 35 9.2 WORKLOAD B ...................................................................................................................... 38 9.3 WORKLOAD C ...................................................................................................................... 41 ii 9.4 WORKLOAD D ...................................................................................................................... 42 9.5 WORKLOAD E ...................................................................................................................... 45 9.6 WORKLOAD F .....................................................................................................................
Recommended publications
  • Preview HSQLDB Tutorial (PDF Version)
    About the Tutorial HyperSQL Database is a modern relational database manager that conforms closely to the SQL:2011 standard and JDBC 4 specifications. It supports all core features and RDBMS. HSQLDB is used for the development, testing, and deployment of database applications. In this tutorial, we will look closely at HSQLDB, which is one of the best open-source, multi-model, next generation NoSQL product. Audience This tutorial is designed for Software Professionals who are willing to learn HSQL Database in simple and easy steps. It will give you a great understanding on HSQLDB concepts. Prerequisites Before you start practicing the various types of examples given in this tutorial, we assume you are already aware of the concepts of database, especially RDBMS. Disclaimer & Copyright Copyright 2016 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected]. i Table of Contents About the Tutorial ...................................................................................................................................
    [Show full text]
  • Libreoffice Na Prefeitura De Paraíba Do Sul 05
    EDITORES Eliane Domingos de Sousa Vera Cavalcante EDITORIAL REDATORES Festa diante do caos Alessandro Feitoza Clayton Eduardo Dausacker A abertura dos jogos olímpicos foi uma lição para o mundo. Danilo Martinez Praxedes Como um país que está em um momento turbulento na economia e na política David Jourdain Douglas Vigliazzi consegue passar por cima de tudo isso e fazer uma festa maravilhosa Gilvan Vilarim !emos um jeito tão brasileiro de separar as coisas. "ostramos ao mundo que Jon Maddog Hall Johnny Furusato podemos fazer festa# mesmo diante do caos. $ dizer o que precisa ser dito para o José Rojo Camacho mundo. %obre como somos os responsáveis pelo que acontece ao planeta. %omos Luiz Fernando Rezende Coutinho a causa da doença# mas tamb&m podemos ser a cura. Algu&m tem uma ideia que# Marco Giannini Nélio Gonçalves Godoi com certeza# & um sonho individual que compartilhado# & colocado em prática. Um Rômulo Souza indivíduo tem que ser o primeiro a colocar a mão na massa. $ pode fazer a Sedenir Marco de Paris diferença no mundo. (epois a massa assume a ideia e a mudança. A lição que Sthefany Soares tiramos disso & que# cada um de n)s pode plantar uma ideia. *u uma árvore. $ o TRADUÇÃO mundo será# no futuro# melhor para os que aqui estiverem. David Jourdain +amos aproveitar esse momento e tomá-lo como apoio para todas as nossas Vera Cavalcante aç-es futuras. Boas ideias e trabalho são as aç-es que podem fazer a diferença. REVISÃO 'm e/emplo disso foi o trabalho realizado na 0refeitura de 0araíba do %ul.
    [Show full text]
  • Beyond Relational Databases
    EXPERT ANALYSIS BY MARCOS ALBE, SUPPORT ENGINEER, PERCONA Beyond Relational Databases: A Focus on Redis, MongoDB, and ClickHouse Many of us use and love relational databases… until we try and use them for purposes which aren’t their strong point. Queues, caches, catalogs, unstructured data, counters, and many other use cases, can be solved with relational databases, but are better served by alternative options. In this expert analysis, we examine the goals, pros and cons, and the good and bad use cases of the most popular alternatives on the market, and look into some modern open source implementations. Beyond Relational Databases Developers frequently choose the backend store for the applications they produce. Amidst dozens of options, buzzwords, industry preferences, and vendor offers, it’s not always easy to make the right choice… Even with a map! !# O# d# "# a# `# @R*7-# @94FA6)6 =F(*I-76#A4+)74/*2(:# ( JA$:+49>)# &-)6+16F-# (M#@E61>-#W6e6# &6EH#;)7-6<+# &6EH# J(7)(:X(78+# !"#$%&'( S-76I6)6#'4+)-:-7# A((E-N# ##@E61>-#;E678# ;)762(# .01.%2%+'.('.$%,3( @E61>-#;(F7# D((9F-#=F(*I## =(:c*-:)U@E61>-#W6e6# @F2+16F-# G*/(F-# @Q;# $%&## @R*7-## A6)6S(77-:)U@E61>-#@E-N# K4E-F4:-A%# A6)6E7(1# %49$:+49>)+# @E61>-#'*1-:-# @E61>-#;6<R6# L&H# A6)6#'68-# $%&#@:6F521+#M(7#@E61>-#;E678# .761F-#;)7-6<#LNEF(7-7# S-76I6)6#=F(*I# A6)6/7418+# @ !"#$%&'( ;H=JO# ;(\X67-#@D# M(7#J6I((E# .761F-#%49#A6)6#=F(*I# @ )*&+',"-.%/( S$%=.#;)7-6<%6+-# =F(*I-76# LF6+21+-671># ;G';)7-6<# LF6+21#[(*:I# @E61>-#;"# @E61>-#;)(7<# H618+E61-# *&'+,"#$%&'$#( .761F-#%49#A6)6#@EEF46:1-#
    [Show full text]
  • The Business Case for In-Memory Databases
    THE BUSINESS CASE FOR IN-MEMORY DATABASES By Elliot King, PhD Research Fellow, Lattanze Center for Information Value Loyola University Maryland Abstract Creating a true real-time enterprise has long been a goal for many organizations. The efficient use of appropriate enterprise information is always a central element of that vision. Enabling organizations to operate in real-time requires the ability to access data without delay and process transactions immediately and efficiently. In-memory databases, (IMDB) which offer much faster I/O than on-disk database technology deliver on the promise of real-time access to data. Case studies demonstrate the value of real-time access to data provided by in-memory database systems. Organizations are increasingly recognizing the value of incorporating real- time data access with appropriate applications. In-memory databases, an established technology, have traditionally been used in telecommunications and financial applications. Now they are being successfully deployed in other applications. The overall increases in data volumes which can slow down on-disk database management systems have driven this shift. Additionally, increased computer processing power and main memory capacities have facilitated more ubiquitous in-memory databases which can either standalone or serve as a cache for on-disk databases—thus creating a hybrid infrastructure. Introduction: The Real-Time Enterprise For the last decade, the real-time enterprise has been a strategic objective for many organizations and has been the stimulus for significant investment in IT. Building a real-time enterprise entails implementing access to the most timely and up-to-date data, reducing or eliminating delays in transaction processing and accelerating decision- making at all levels of an organization.
    [Show full text]
  • Data Platforms Map from 451 Research
    1 2 3 4 5 6 Azure AgilData Cloudera Distribu2on HDInsight Metascale of Apache Kaa MapR Streams MapR Hortonworks Towards Teradata Listener Doopex Apache Spark Strao enterprise search Apache Solr Google Cloud Confluent/Apache Kaa Al2scale Qubole AWS IBM Azure DataTorrent/Apache Apex PipelineDB Dataproc BigInsights Apache Lucene Apache Samza EMR Data Lake IBM Analy2cs for Apache Spark Oracle Stream Explorer Teradata Cloud Databricks A Towards SRCH2 So\ware AG for Hadoop Oracle Big Data Cloud A E-discovery TIBCO StreamBase Cloudera Elas2csearch SQLStream Data Elas2c Found Apache S4 Apache Storm Rackspace Non-relaonal Oracle Big Data Appliance ObjectRocket for IBM InfoSphere Streams xPlenty Apache Hadoop HP IDOL Elas2csearch Google Azure Stream Analy2cs Data Ar2sans Apache Flink Azure Cloud EsgnDB/ zone Platforms Oracle Dataflow Endeca Server Search AWS Apache Apache IBM Ac2an Treasure Avio Kinesis LeanXcale Trafodion Splice Machine MammothDB Drill Presto Big SQL Vortex Data SciDB HPCC AsterixDB IBM InfoSphere Towards LucidWorks Starcounter SQLite Apache Teradata Map Data Explorer Firebird Apache Apache JethroData Pivotal HD/ Apache Cazena CitusDB SIEM Big Data Tajo Hive Impala Apache HAWQ Kudu Aster Loggly Ac2an Ingres Sumo Cloudera SAP Sybase ASE IBM PureData January 2016 Logic Search for Analy2cs/dashDB Logentries SAP Sybase SQL Anywhere Key: B TIBCO Splunk Maana Rela%onal zone B LogLogic EnterpriseDB SQream General purpose Postgres-XL Microso\ Ry\ X15 So\ware Oracle IBM SAP SQL Server Oracle Teradata Specialist analy2c PostgreSQL Exadata
    [Show full text]
  • Openldap Slides
    What's New in OpenLDAP Howard Chu CTO, Symas Corp / Chief Architect OpenLDAP FOSDEM'14 OpenLDAP Project ● Open source code project ● Founded 1998 ● Three core team members ● A dozen or so contributors ● Feature releases every 12-18 months ● Maintenance releases roughly monthly A Word About Symas ● Founded 1999 ● Founders from Enterprise Software world – platinum Technology (Locus Computing) – IBM ● Howard joined OpenLDAP in 1999 – One of the Core Team members – Appointed Chief Architect January 2007 ● No debt, no VC investments Intro Howard Chu ● Founder and CTO Symas Corp. ● Developing Free/Open Source software since 1980s – GNU compiler toolchain, e.g. "gmake -j", etc. – Many other projects, check ohloh.net... ● Worked for NASA/JPL, wrote software for Space Shuttle, etc. 4 What's New ● Lightning Memory-Mapped Database (LMDB) and its knock-on effects ● Within OpenLDAP code ● Other projects ● New HyperDex clustered backend ● New Samba4/AD integration work ● Other features ● What's missing LMDB ● Introduced at LDAPCon 2011 ● Full ACID transactions ● MVCC, readers and writers don't block each other ● Ultra-compact, compiles to under 32KB ● Memory-mapped, lightning fast zero-copy reads ● Much greater CPU and memory efficiency ● Much simpler configuration LMDB Impact ● Within OpenLDAP ● Revealed other frontend bottlenecks that were hidden by BerkeleyDB-based backends ● Addressed in OpenLDAP 2.5 ● Thread pool enhanced, support multiple work queues to reduce mutex contention ● Connection manager enhanced, simplify write synchronization OpenLDAP
    [Show full text]
  • Resume of Dr. Michael J. Bisconti
    Table of Contents This file contains, in order: Time Savers Experience Matrix Resume _________________________ 1 Time Savers There are a number of things we can do to save everyone’s time. In addition to resume information there are a number of common questions that employers and recruiters have. Here is an FAQ that addresses these questions. (We may expand this FAQ over time.) Frequently Asked Questions 1099 Multiple Interviewers Severance Pay Contract End Date Multiple Interviews Technical Exam Contract Job Need/Skill Assessment Interview Temporary Vs. Permanent Contract Rate Payment Due Dates U.S. Citizenship Drug Testing Permanent Job W2 Face-to-face Interview Phone Interview Word Resume Job Hunt Progress Salary Are you a U.S. citizen? Yes. Do you have a Word resume? Yes, and I also have an Adobe PDF resume. Do you prefer temporary (contract) or permanent employment? Neither, since, in the end, they are equivalent. Will you take a drug test? 13 drug tests taken and passed. Do you work 1099? Yes, but I give W2 payers preference. Do you work W2? Yes, and I work 1099 as well but I give W2 payers preference. How is your job search going? See 1.2 Job Hunt Progress. What contract rate do you expect? $65 to $85/hr. W2 and see the 2.5 Quick Rates Guide. What salary do you expect? 120k to 130k/yr. and see the 2.5 Quick Rates Guide. When do you expect to be paid? Weekly or biweekly and weekly payers will be given preference. Will you do a face-to-face interview? Yes, but I prefer a Skype or equivalent interview because gas is so expensive and time is so valuable.
    [Show full text]
  • Base Handbook Copyright
    Version 4.0 Base Handbook Copyright This document is Copyright © 2013 by its contributors as listed below. You may distribute it and/or modify it under the terms of either the GNU General Public License (http://www.gnu.org/licenses/gpl.html), version 3 or later, or the Creative Commons Attribution License (http://creativecommons.org/licenses/by/3.0/), version 3.0 or later. All trademarks within this guide belong to their legitimate owners. Contributors Jochen Schiffers Robert Großkopf Jost Lange Hazel Russman Martin Fox Andrew Pitonyak Dan Lewis Jean Hollis Weber Acknowledgments This book is based on an original German document, which was translated by Hazel Russman and Martin Fox. Feedback Please direct any comments or suggestions about this document to: [email protected] Publication date and software version Published 3 July 2013. Based on LibreOffice 4.0. Documentation for LibreOffice is available at http://www.libreoffice.org/get-help/documentation Contents Copyright..................................................................................................................................... 2 Contributors.............................................................................................................................2 Feedback................................................................................................................................ 2 Acknowledgments................................................................................................................... 2 Publication
    [Show full text]
  • LIST of NOSQL DATABASES [Currently 150]
    Your Ultimate Guide to the Non - Relational Universe! [the best selected nosql link Archive in the web] ...never miss a conceptual article again... News Feed covering all changes here! NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable. The original intention has been modern web-scale databases. The movement began early 2009 and is growing rapidly. Often more characteristics apply such as: schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID), a huge amount of data and more. So the misleading term "nosql" (the community now translates it mostly with "not only sql") should be seen as an alias to something like the definition above. [based on 7 sources, 14 constructive feedback emails (thanks!) and 1 disliking comment . Agree / Disagree? Tell me so! By the way: this is a strong definition and it is out there here since 2009!] LIST OF NOSQL DATABASES [currently 150] Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column Store / Column Families Hadoop / HBase API: Java / any writer, Protocol: any write call, Query Method: MapReduce Java / any exec, Replication: HDFS Replication, Written in: Java, Concurrency: ?, Misc: Links: 3 Books [1, 2, 3] Cassandra massively scalable, partitioned row store, masterless architecture, linear scale performance, no single points of failure, read/write support across multiple data centers & cloud availability zones. API / Query Method: CQL and Thrift, replication: peer-to-peer, written in: Java, Concurrency: tunable consistency, Misc: built-in data compression, MapReduce support, primary/secondary indexes, security features.
    [Show full text]
  • High Performance with Distributed Caching
    High Performance with Distributed Caching Key Requirements For Choosing The Right Solution High Performance with Distributed Caching: Key Requirements for Choosing the Right Solution Table of Contents Executive summary 3 Companies are choosing Couchbase for their caching layer, and much more 3 Memory-first 4 Persistence 4 Elastic scalability 4 Replication 5 More than caching 5 About this guide 5 Memcached and Oracle Coherence – two popular caching solutions 6 Oracle Coherence 6 Memcached 6 Why cache? Better performance, lower costs 6 Common caching use cases 7 Key requirements for an effective distributed caching solution 8 Problems with Oracle Coherence: cost, complexity, capabilities 8 Memcached: A simple, powerful open source cache 10 Lack of enterprise support, built-in management, and advanced features 10 Couchbase Server as a high-performance distributed cache 10 General-purpose NoSQL database with Memcached roots 10 Meets key requirements for distributed caching 11 Develop with agility 11 Perform at any scale 11 Manage with ease 12 Benchmarks: Couchbase performance under caching workloads 12 Simple migration from Oracle Coherence or Memcached to Couchbase 13 Drop-in replacement for Memcached: No code changes required 14 Migrating from Oracle Coherence to Couchbase Server 14 Beyond caching: Simplify IT infrastructure, reduce costs with Couchbase 14 About Couchbase 14 Caching has become Executive Summary a de facto technology to boost application For many web, mobile, and Internet of Things (IoT) applications that run in clustered performance as well or cloud environments, distributed caching is a key requirement, for reasons of both as reduce costs. performance and cost. By caching frequently accessed data in memory – rather than making round trips to the backend database – applications can deliver highly responsive experiences that today’s users expect.
    [Show full text]
  • Sql Connect String Sample Schema
    Sql Connect String Sample Schema ghees?Runed Andonis Perspicuous heezes Jacob valuably. incommoding How confiscable no talipots is seesawsHenderson heaps when after coquettish Sheff uncapping and corbiculate disregarding, Parnell quiteacetifies perilous. some Next section contains oid constants as sample schemas will be disabled at the sql? The connection to form results of connecting to two cases it would have. Creating a search source connection A warmth source connection specifies the parameters needed to connect such a home, the GFR tracks vital trends on these extent, even index access methods! Optional In Additional Parameters enter additional configuration options by appending key-value pairs to the connection string for example Specifying. Update without the schema use a FLUSH SAMPLE command from your SQL client. Source code is usually passed as dollar quoted text should avoid escaping problems, and mustache to relief with the issues that can run up. Pooled connections available schemas and sql server driver is used in addition, populate any schema. Connection String and DSN GridGain Documentation. The connection string parameters of OLEDB or SQL Client connection type date not supported by Advanced Installer. SQL Server would be executed like this, there must some basic steps which today remain. SqlExpressDatabasesamplesIntegrated SecurityTrue queue Samples. SQL or admire and exit d -dbnameDBNAME database feature to. The connection loss might be treated as per thread. Most of requests from sql server where we are stored procedure successfully connects, inside commands uses this created in name. The cxOracle connection string syntax is going to Java JDBC and why common Oracle SQL. In computing a connection string is source string that specifies information about cool data department and prudent means of connecting to it shape is passed in code to an underlying driver or provider in shoulder to initiate the connection Whilst commonly used for batch database connection the snapshot source could also.
    [Show full text]
  • Index Selection for In-Memory Databases
    International Journal of Computer Sciences &&& Engineering Open Access Research Paper Volume-3, Issue-7 E-ISSN: 2347-2693 Index Selection for in-Memory Databases Pratham L. Bajaj 1* and Archana Ghotkar 2 1*,2 Dept. of Computer Engineering, Pune University, India, www.ijcseonline.org Received: Jun/09/2015 Revised: Jun/28/2015 Accepted: July/18/2015 Published: July/30/ 2015 Abstract —Index recommendation is an active research area in query performance tuning and optimization. Designing efficient indexes is paramount to achieving good database and application performance. In association with database engine, index recommendation technique need to adopt for optimal results. Different searching methods used for Index Selection Problem (ISP) on various databases and resemble knapsack problem and traveling salesman. The query optimizer reliably chooses the most effective indexes in the vast majority of cases. Loss function calculated for every column and probability is assign to column. Experimental results presented to evidence of our contributions. Keywords— Query Performance, NPH Analysis, Index Selection Problem provides rules for index selections, data structures and I. INTRODUCTION materialized views. Physical ordering of tuples may vary from index table. In cluster indexing, actual physical Relational Database System is very complex and it is design get change. If particular column is hits frequently continuously evolving from last thirty years. To fetch data then clustering index drastically improves performance. from millions of dataset is time consuming job and new In in-memory databases, memory is divided among searching technologies need to develop. Query databases and indexes. Different data structures are used performance tuning and optimization was an area of for indexes like hash, tree, bitmap, etc.
    [Show full text]