[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Hybris: Robust Hybrid Cloud Storage

Published: 28 September 2017 Publication History

Abstract

Besides well-known benefits, commodity cloud storage also raises concerns that include security, reliability, and consistency. We present Hybris key-value store, the first robust hybrid cloud storage system, aiming at addressing these concerns leveraging both private and public cloud resources.
Hybris robustly replicates metadata on trusted private premises (private cloud), separately from data, which are dispersed (using replication or erasure coding) across multiple untrusted public clouds. Hybris maintains metadata stored on private premises at the order of few dozens of bytes per key, avoiding the scalability bottleneck at the private cloud. In turn, the hybrid design allows Hybris to efficiently and robustly tolerate cloud outages but also potential malice in clouds without overhead. Namely, to tolerate up to f malicious clouds, in the common case of the Hybris variant with data replication, writes replicate data across f+1 clouds, whereas reads involve a single cloud. In the worst case, only up to f additional clouds are used. This is considerably better than earlier multi-cloud storage systems that required costly 3f+1 clouds to mask f potentially malicious clouds. Finally, Hybris leverages strong metadata consistency to guarantee to Hybris applications strong data consistency without any modifications to the eventually consistent public clouds.
We implemented Hybris in Java and evaluated it using a series of micro and macro-benchmarks. Our results show that Hybris significantly outperforms comparable multi-cloud storage systems and approaches the performance of bare-bone commodity public cloud storage.

References

[1]
Ittai Abraham, Gregory Chockler, Idit Keidar, and Dahlia Malkhi. 2006. Byzantine disk paxos: Optimal resilience with byzantine shared memory. Distrib. Comput. 18, 5 (2006), 387--408.
[2]
Hussam Abu-Libdeh, Lonnie Princehouse, and Hakim Weatherspoon. 2010. RACS: A case for cloud storage diversity. In Proceedings of the ACM Symposium on Cloud Computing (SoCC’10). 229--240. http://doi.acm.org/10.1145/1807128.1807165
[3]
Atul Adya, William J. Bolosky, Miguel Castro, Gerald Cermak, Ronnie Chaiken, John R. Douceur, Jon Howell, Jacob R. Lorch, Marvin Theimer, and Roger Wattenhofer. 2002. FARSITE: Federated, available, and reliable storage for an incompletely trusted environment. In Proceedings of the Symposium on Operating System Design and Implementation (OSDI’02). http://www.usenix.org/events/osdi02/tech/adya.html.
[4]
Amazon. 2016. Amazon DynamoDB Pricing. (2016). Retrieved from https://aws.amazon.com/dynamodb/pricing/.
[5]
Elli Androulaki, Christian Cachin, Dan Dobre, and Marko Vukolic. 2014. Erasure-coded byzantine storage with separate metadata. In Proceedings of the International Conference on Principles of Distributed Systems (OPODIS’14). 76--90.
[6]
Apache. 2016. Apache JClouds. Retrieved from http://jclouds.apache.org/.
[7]
Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy H. Katz, Andy Konwinski, Gunho Lee, David A. Patterson, Ariel Rabkin, Ion Stoica, and Matei Zaharia. 2010. A view of cloud computing. Commun. ACM 53, 4 (2010), 50--58.
[8]
Peter Bailis and Ali Ghodsi. 2013. Eventual consistency today: Limitations, extensions, and beyond. Commun. ACM 56, 5 (2013), 55--63. http://doi.acm.org/10.1145/2447976.2447992
[9]
Cristina Basescu, Christian Cachin, Ittay Eyal, Robert Haas, Alessandro Sorniotti, Marko Vukolić, and Ido Zachevsky. 2012. Robust data sharing with key-value stores. In Proceedings of the IEEE/IFIP International Conference on Dependable Systems and Networks (DSN’12). 1--12.
[10]
David Bermbach and Stefan Tai. 2014. Benchmarking eventual consistency: Lessons learned from long-term experimental studies. In Proceedings of the IEEE International Conference on Cloud Engineering (IC2E’14). 47--56.
[11]
Alysson Bessani, Ricardo Mendes, Tiago Oliveira, Nuno Neves, Miguel Correia, Marcelo Pasin, and Paulo Verissimo. 2014. SCFS: A shared cloud-backed file system. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’14).
[12]
Alysson Neves Bessani, Miguel Correia, Bruno Quaresma, Fernando André, and Paulo Sousa. 2013. DepSky: Dependable and secure storage in a cloud-of-clouds. ACM Trans. Stor. 9, 4 (2013), 12. http://doi.acm.org/10.1145/2535929
[13]
Carlos Eduardo Benevides Bezerra, Fernando Pedone, and Robbert van Renesse. 2014. Scalable state-machine replication. In Proceedings of the IEEE/IFIP International Conference on Dependable Systems and Networks (DSN’14). 331--342.
[14]
Kevin D. Bowers, Ari Juels, and Alina Oprea. 2009. HAIL: A high-availability and integrity layer for cloud storage. In Proceedings of the ACM Conference on Computer and Communications Security (CCS’09). 187--198. http://doi.acm.org/10.1145/1653662.1653686
[15]
Eric A. Brewer. 2012. Pushing the CAP: Strategies for consistency and availability. IEEE Comput. 45, 2 (2012), 23--29. http://doi.ieeecomputersociety.org/10.1109/MC.2012.37
[16]
Christian Cachin, Dan Dobre, and Marko Vukolic. 2014. Separating data and control: Asynchronous BFT storage with 2t + 1 data replicas. In Proceedings of the Conference on Stabilization, Safety, and Security of Distributed Systems (SSS’14). 1--17.
[17]
Ignacio Cano, Srinivas Aiyar, and Arvind Krishnamurthy. 2016. Characterizing private clouds: A large-scale empirical analysis of enterprise clusters. In Proceedings of the ACM Symposium on Cloud Computing (SoCC’16). 29--41.
[18]
Houssem-Eddine Chihoub, Shadi Ibrahim, Gabriel Antoniu, and María S. Pérez-Hernández. 2012. Harmony: Towards automated self-adaptive consistency in cloud storage. In Proceedings of the IEEE International Conference on Cluster Computing (CLUSTER’12). 293--301.
[19]
Gregory Chockler, Dan Dobre, and Alexander Shraer. 2013. Brief announcement: Consistency and complexity tradeoffs for highly-available multi-cloud store. In Proceedings of the International Symposium on Distributed Computing (DISC’13).
[20]
Byung-Gon Chun, Petros Maniatis, Scott Shenker, and John Kubiatowicz. 2007. Attested append-only memory: Making adversaries stick to their word. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP’07). 189--204. http://doi.acm.org/10.1145/1294261.1294280
[21]
CloudSpaces. 2015. CloudSpaces EU FP7 project. Retrieved from http://cloudspaces.eu/.
[22]
Consul. 2016a. Consul—Consensus protocol. Retrieved from https://www.consul.io/docs/internals/consensus.html.
[23]
Consul. 2016b. Consul —Distributed service discovery and configuration. Retrieved from https://www.consul.io/.
[24]
Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. 2010. Benchmarking cloud serving systems with YCSB. In Proceedings of the ACM Symposium on Cloud Computing (SoCC’10). 143--154. http://doi.acm.org/10.1145/1807128.1807152
[25]
James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, J. J. Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson C. Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford. 2013. Spanner: Google’s globally distributed database. ACM Trans. Comput. Syst. 31, 3 (2013), 8. http://doi.acm.org/10.1145/2491245
[26]
Miguel Correia, Daniel Gómez Ferro, Flavio Paiva Junqueira, and Marco Serafini. 2012. Practical hardening of crash-tolerant systems. In Proceedings of the USENIX Annual Technical Conference.
[27]
Miguel Correia, Nuno Ferreira Neves, and Paulo Veríssimo. 2004. How to tolerate half less one byzantine nodes in practical distributed systems. In Proceedings of the Symposium on Reliable Distributed Systems (SRDS’04). 174--183. http://doi.ieeecomputersociety.org/10.1109/RELDIS.2004.1353018
[28]
Idilio Drago, Enrico Bocchi, Marco Mellia, Herman Slatman, and Aiko Pras. 2013. Benchmarking personal cloud storage. In Proceedings of the ACM SIGCOMM Internet Measurement Conference (IMC’13). 205--212.
[29]
Idilio Drago, Marco Mellia, Maurizio M. Munafò, Anna Sperotto, Ramin Sadre, and Aiko Pras. 2012. Inside dropbox: Understanding personal cloud storage services. In Proceedings of the ACM SIGCOMM Internet Measurement Conference (IMC’12). 481--494.
[30]
Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer. 1988. Consensus in the presence of partial synchrony. J. ACM 35, 2 (Apr.1988), 288--323.
[31]
Eurecom. 2016. Hybris—Robust hybrid cloud storage library. Retrieved from https://github.com/pviotti/hybris.
[32]
Rui Fan and Nancy Lynch. 2003. Efficient replication of large data objects. In Proceedings of the Diocesan Information Systems Conference (DISC’03). 75--91.
[33]
Aishwarya Ganesan, Ramnatthan Alagappan, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2017. Redundancy does not imply fault tolerance: Analysis of distributed storage reactions to single errors and corruptions. In Proceedings of the USENIX Conference on File and Storage Technologies (FAST’17).
[34]
Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung. 2003. The google file system. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP’03). 29--43. http://doi.acm.org/10.1145/945445.945450
[35]
Garth A. Gibson, David Nagle, Khalil Amiri, Jeff Butler, Fay W. Chang, Howard Gobioff, Charles Hardin, Erik Riedel, David Rochberg, and Jim Zelenka. 1998. A cost-effective, high-bandwidth storage architecture. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems. 92--103.
[36]
Seth Gilbert and Nancy A. Lynch. 2002. Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. SIGACT News 33, 2 (2002), 51--59. http://doi.acm.org/10.1145/564585.564601
[37]
Wojciech M. Golab, Xiaozhou Li, and Mehul A. Shah. 2011. Analyzing consistency properties for fun and profit. In Proceedings of the ACM Symposium on Principles of Distributed Computing (PODC’11), 2011. 197--206.
[38]
Haryadi S. Gunawi, Mingzhe Hao, Riza O. Suminto, Agung Laksono, Anang D. Satria, Jeffry Adityatama, and Kurnia J. Eliazar. 2016. Why does the cloud stop computing?: Lessons from hundreds of service outages. In Proceedings of the ACM Symposium on Cloud Computing (SoCC’16). 1--16.
[39]
Raluca Halalai, Pierre Sutra, Etienne Riviere, and Pascal Felber. 2014. ZooFence: Principled service partitioning and application to the zookeeper coordination service. In Proceedings of the IEEE International Symposium on Reliable Distributed Systems. 67--78.
[40]
James Hamilton. 2009. The cost of latency. Retreived from http://perspectives.mvdirona.com/2009/10/the-cost-of-latency/.
[41]
Maurice Herlihy. 1991. Wait-free synchronization. ACM Trans. Program. Lang. Syst. 13, 1 (1991).
[42]
Maurice P. Herlihy and Jeannette M. Wing. 1990. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12, 3 (1990).
[43]
Patrick Hunt, Mahadev Konar, Flavio P. Junqueira, and Benjamin Reed. 2010. ZooKeeper: Wait-free coordination for internet-scale systems. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’10). 11--11.
[44]
Flavio Paiva Junqueira, Ivan Kelly, and Benjamin Reed. 2013. Durability with bookkeeper. Operat. Syst. Rev. 47, 1 (2013), 9--15. http://doi.acm.org/10.1145/2433140.2433144
[45]
Rüdiger Kapitza, Johannes Behl, Christian Cachin, Tobias Distler, Simon Kuhnle, Seyed Vahid Mohammadi, Wolfgang Schröder-Preikschat, and Klaus Stengel. 2012. CheapBFT: Resource-efficient byzantine fault tolerance. In Proceedings of the European Professional Society on Computer Systems (EuroSys’12). 295--308. http://doi.acm.org/10.1145/2168836.2168866
[46]
Ramakrishna Kotla, Lorenzo Alvisi, and Michael Dahlin. 2007. SafeStore: A durable and practical storage system. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’07). 129--142.
[47]
Leslie Lamport. 1979. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Comput. 28, 9 (1979), 690--691.
[48]
Shengyun Liu, Paolo Viotti, Christian Cachin, Vivien Quéma, and Marko Vukolic. 2016. XFT: Practical fault tolerance beyond crashes. In Proceedings of the USENIX Symposium on Operating Systems Design and Implementation (OSDI’16). https://www.usenix.org/conference/osdi16/technical-sessions/presentation/liu.
[49]
Pedro Garcia Lopez, Sergi Toda, Cristian Cotes, Marc Sanchez-Artigas, and John Lenton. 2014. StackSync: Bringing elasticity to dropbox-like file synchronization. In Proceedings of the ACM/IFIP/USENIX Middleware Conference.
[50]
Nancy A. Lynch and Alexander A. Shvartsman. 2002. RAMBO: A reconfigurable atomic memory service for dynamic networks. In Proceedings of the Diocesan Information Systems Conference (DISC’02). 173--190.
[51]
Prince Mahajan, Srinath T. V. Setty, Sangmin Lee, Allen Clement, Lorenzo Alvisi, Michael Dahlin, and Michael Walfish. 2011. Depot: Cloud storage with minimal trust. ACM Trans. Comput. Syst. 29, 4 (2011), 12.
[52]
Memcached. 2016. Memcached. (2016). Available online at http://memcached.org/; visited September 2016.
[53]
Diego Ongaro and John K. Ousterhout. 2014. In search of an understandable consensus algorithm. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’14). 305--319.
[54]
M. Pease, R. Shostak, and L. Lamport. 1980. Reaching agreement in the presence of faults. J. ACM 27, 2 (1980).
[55]
J. S. Plank, S. Simmerman, and C. D. Schuman. 2008. Jerasure: A Library in C/C++ Facilitating Erasure Coding for Storage Applications—Version 1.2. Technical Report CS-08-627. University of Tennessee.
[56]
Benjamin Reed and Flavio P. Junqueira. 2008. A simple totally ordered broadcast protocol. In Proceedings of the Workshop on Large-Scale Distributed Systems and Middleware (LADIS’08). 2:1--2:6.
[57]
Rodrigo Rodrigues and Barbara Liskov. 2005. High availability in DHTs: Erasure coding vs. replication. In Proceedings of the International Workshop on Peer-to-Peer Systems (IPTPS’05). 226--239. http://dx.doi.org/10.1007/11558989_21
[58]
K. C. Sivaramakrishnan, Gowtham Kaki, and Suresh Jagannathan. 2015. Declarative programming over eventually consistent data stores. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation. 413--424.
[59]
SoftLayer. 2016. IBM SoftLayer. Retrieved from http://www.softlayer.com/.
[60]
Emil Stefanov, Marten van Dijk, Elaine Shi, Christopher W. Fletcher, Ling Ren, Xiangyao Yu, and Srinivas Devadas. 2013. Path ORAM: An extremely simple oblivious RAM protocol. In Proceedings of the ACM SIGSAC Conference on Computer and Communications Security (CCS’13). http://doi.acm.org/10.1145/2508859.2516660
[61]
Syncany. 2016. Secure file synchronization software for arbitrary storage backends. Retrieved from https://www.syncany.org/.
[62]
Douglas B. Terry, Alan J. Demers, Karin Petersen, Mike Spreitzer, Marvin Theimer, and Brent B. Welch. 1994. Session guarantees for weakly consistent replicated data. In Proceedings of the Parallel and Distributed Information Systems (PDIS’94). 140--149.
[63]
Douglas B. Terry, Vijayan Prabhakaran, Ramakrishna Kotla, Mahesh Balakrishnan, Marcos K. Aguilera, and Hussam Abu-Libdeh. 2013. Consistency-based service level agreements for cloud storage. In Proceedings of the ACM SIGOPS Symposium on Operating Systems Principles (SOSP’13). 309--324.
[64]
Francisco J. Torres-Rojas, Mustaque Ahamad, and Michel Raynal. 1999. Timed consistency for shared distributed objects. In Proceedings of the ACM Symposium on Principles of Distributed Computing (PODC’99). 163--172.
[65]
Giuliana Santos Veronese, Miguel Correia, Alysson Neves Bessani, Lau Cheuk Lung, and Paulo Veríssimo. 2013. Efficient byzantine fault-tolerance. IEEE Trans. Comput. 62, 1 (2013), 16--30.
[66]
Paolo Viotti and Marko Vukolic. 2016. Consistency in non-transactional distributed storage systems. ACM Comput. Surv. 49, 1 (2016), 19.
[67]
VMware. 2013. The Snowden Leak: A Windfall for Hybrid Cloud? (2013). Retrieved from http://blogs.vmware.com/consulting/2013/09/the-snowden-leak-a-windfall-for-hybrid-cloud.html.
[68]
Werner Vogels. 2009. Eventually consistent. Commun. ACM 52, 1 (2009), 40--44. http://doi.acm.org/10.1145/1435417.1435432
[69]
Marko Vukolić. 2010. The byzantine empire in the intercloud. SIGACT News 41, 3 (2010), 105--111.
[70]
Yang Wang, Lorenzo Alvisi, and Mike Dahlin. 2012. Gnothi: Separating data and metadata for efficient and available storage replication. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’12). 38--38.
[71]
Hakim Weatherspoon and John Kubiatowicz. 2002. Erasure coding vs. replication: A quantitative comparison. In Proceedings of the International Workshop on Peer-to-Peer Systems (IPTPS’02). 328--338.
[72]
Sage A. Weil, Scott A. Brandt, Ethan L. Miller, Darrell D. E. Long, and Carlos Maltzahn. 2006. Ceph: A scalable, high-performance distributed file system. In Proceedings of the Symposium on Operating Systems Design and Implementation (OSDI’06). 307--320.
[73]
Zhe Wu, Michael Butkiewicz, Dorian Perkins, Ethan Katz-Bassett, and Harsha V. Madhyastha. 2013. SPANStore: Cost-effective geo-replicated storage spanning multiple cloud services. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP’13).
[74]
Jian Yin, Jean-Philippe Martin, Arun Venkataramani, Lorenzo Alvisi, and Michael Dahlin. 2003. Separating agreement from execution for byzantine fault tolerant services. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP’03). 253--267. http://doi.acm.org/10.1145/945445.945470
[75]
Hassan Zeineddine and Wael Bazzi. 2011. Rationing data updates with consistency considerations in distributed systems. In Proceedings of the IEEE International Conference on Networks (ICON’11). 165--170.
[76]
Heng Zhang, Mingkai Dong, and Haibo Chen. 2016. Efficient and available in-memory KV-store with hybrid erasure coding and replication. In Proceedings of the USENIX Conference on File and Storage Technologies (FAST’16).
[77]
Observers ZooKeeper. 2009. Observers—Making ZooKeeper scale even further. Retrieved from https://blog.cloudera.com/blog/2009/12/observers-making-zookeeper-scale-even-further/.

Cited By

View all
  • (2024)Cost-effective data classification storage through text seasonal featuresFuture Generation Computer Systems10.1016/j.future.2024.04.061158(472-487)Online publication date: Sep-2024
  • (2023)The Design and Implementation of a Secure File Storage on the Cloud using Hybrid CryptographyInternational Journal of Advanced Research in Science, Communication and Technology10.48175/IJARSCT-9067(461-470)Online publication date: 9-Apr-2023
  • (2023)Construction of a secure storage and sharing model for medical data under computer network technologyApplied Mathematics and Nonlinear Sciences10.2478/amns.2023.2.00888Online publication date: 30-Oct-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Transactions on Storage
ACM Transactions on Storage  Volume 13, Issue 3
Special Issue on FAST 2017 and Regular Papers
August 2017
265 pages
ISSN:1553-3077
EISSN:1553-3093
DOI:10.1145/3141876
  • Editor:
  • Sam H. Noh
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 28 September 2017
Accepted: 01 June 2017
Revised: 01 June 2017
Received: 01 December 2016
Published in TOS Volume 13, Issue 3

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Cloud storage
  2. consistency
  3. hybrid cloud
  4. reliability

Qualifiers

  • Research-article
  • Research
  • Refereed

Funding Sources

  • EU projects CloudSpaces
  • SECCRIT

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)24
  • Downloads (Last 6 weeks)3
Reflects downloads up to 14 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Cost-effective data classification storage through text seasonal featuresFuture Generation Computer Systems10.1016/j.future.2024.04.061158(472-487)Online publication date: Sep-2024
  • (2023)The Design and Implementation of a Secure File Storage on the Cloud using Hybrid CryptographyInternational Journal of Advanced Research in Science, Communication and Technology10.48175/IJARSCT-9067(461-470)Online publication date: 9-Apr-2023
  • (2023)Construction of a secure storage and sharing model for medical data under computer network technologyApplied Mathematics and Nonlinear Sciences10.2478/amns.2023.2.00888Online publication date: 30-Oct-2023
  • (2022)Secure and Efficient Item Traceability for Cloud-Aided IIoTACM Transactions on Sensor Networks10.1145/352274018:4(1-24)Online publication date: 29-Nov-2022
  • (2021)Multi-objective Optimization of Data Placement in a Storage-as-a-Service Federated CloudACM Transactions on Storage10.1145/345274117:3(1-32)Online publication date: 16-Aug-2021
  • (2020)INECProceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis10.5555/3433701.3433788(1-17)Online publication date: 9-Nov-2020
  • (2020)INEC: Fast and Coherent In-Network Erasure CodingSC20: International Conference for High Performance Computing, Networking, Storage and Analysis10.1109/SC41405.2020.00070(1-17)Online publication date: Nov-2020
  • (2020)Data Consistency in Multi-Cloud Storage Systems With Passive Servers and Non-Communicating ClientsIEEE Access10.1109/ACCESS.2020.30224638(164977-164986)Online publication date: 2020
  • (2019)TriECProceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis10.1145/3295500.3356178(1-34)Online publication date: 17-Nov-2019

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media