Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Version 1.7 October 24, 2014 Simba Technologies Inc. Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Copyright ©2012-2014 Simba Technologies Inc. All Rights Reserved. Information in this document is subject to change without notice. Companies, names and data used in examples herein are fictitious unless otherwise noted. No part of this publication, or the software it describes, may be reproduced, transmitted, transcribed, stored in a retrieval system, decompiled, disassembled, reverse-engineered, or translated into any language in any form by any means for any purpose without the express written permission of Simba Technologies Inc. Trademarks Simba, the Simba logo, SimbaEngine, SimbaEngine C/S, SimbaExpress and SimbaLib are registered trademarks of Simba Technologies Inc. All other trademarks and/or servicemarks are the property of their respective owners. ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1995-2010 International Business Machines Corporation and others All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. All trademarks and registered trademarks mentioned herein are the property of their respective owners. w w w. si mb a. co m 2 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide OpenSSL Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected]. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Expat Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, w w w. si mb a. co m 3 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NOINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Lua Copyright © 1994–2014 Lua.org, PUC-Rio. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. LuaJIT LuaJIT is Copyright © 2005-2014 Mike Pall Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A w w w. si mb a. co m 4 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Contact Us Simba Technologies Inc. 938 West 8th Avenue Vancouver, BC Canada V5Z 1E5 www.simba.com Telephone: +1 (604) 633-0008 Information and Product Sales: Extension 2 Technical Support: Extension 3 Fax: +1 (604) 633-0004 Information and Product Sales: [email protected] Technical Support: [email protected] Follow us on Twitter: @SimbaTech Printed in Canada w w w. si mb a. co m 5 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Table of Contents Introduction ........................................................................................................................................................7 Windows Driver..................................................................................................................................................7 System Requirements ................................................................................................................................7 Installing the Driver ...................................................................................................................................8 Creating a Data Source Name ................................................................................................................8 Configuring Options................................................................................................................................ 10 Logging ........................................................................................................................................................ 12 Defining a Schema for the Driver to Use ........................................................................................ 13 Using Virtual Tables ................................................................................................................................. 15 Linux Driver ...................................................................................................................................................... 16 System Requirements ............................................................................................................................. 16 Installing the Driver Using the RPM .................................................................................................. 17 Installing the Driver Using the Tarball Package ............................................................................ 18 Setting the LD_LIBRARY_PATH Environment Variable ............................................................... 18 Mac OS X Driver .............................................................................................................................................. 19 System Requirements ............................................................................................................................. 19 Installation.................................................................................................................................................. 19 Configuring ODBC Connections for Linux and Mac OS X ............................................................... 20 Files ............................................................................................................................................................... 20 Sample Files ................................................................................................................................................ 20 Configuring the Environment.............................................................................................................. 21 Configuring the odbc.ini File ............................................................................................................... 21 Configuring the odbcinst.ini File ........................................................................................................ 22 Configuring the simba.mongodbodbc.ini File ................................................................................ 23 Features ............................................................................................................................................................. 24 SQL Connector........................................................................................................................................... 24 Schema Definition ................................................................................................................................... 24 Data Types................................................................................................................................................... 25 Authentication .......................................................................................................................................... 27 Catalog Support........................................................................................................................................ 27 Virtual Tables ............................................................................................................................................. 28 Write-back .................................................................................................................................................. 30 Contact Us ........................................................................................................................................................ 32 Appendix: Driver Configuration Options ............................................................................................... 33 w w w. si mb a. co m 6 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Introduction The Simba ODBC Driver with SQL Connector for MongoDB enables Business Intelligence (BI), analytics, and reporting on data that is stored in MongoDB databases. The driver complies with the ODBC 3.80 data standard and adds important functionality such as Unicode, as well as 32and 64-bit support for high-performance computing environments on all platforms. ODBC is one of the most established and widely supported APIs for connecting to and working with databases. At the heart of the technology is the ODBC driver, which connects an application to the database. For more information about ODBC, see http://www.simba.com/odbc.htm. For complete information on the ODBC specification, see the ODBC API Reference at http://msdn.microsoft.com/en-us/library/windows/desktop/ms714562(v=vs.85).aspx Simba ODBC Driver with SQL Connector for MongoDB is available for the Microsoft® Windows®, Linux, and Mac OS X operating systems. Note: For details on installing and setting up a MongoDB data source, and details on configuring Microsoft Excel and Tableau as client applications to connect to MongoDB data sources using the Simba ODBC Driver with SQL Connector for MongoDB, see the Simba ODBC Driver with SQL Connector for MongoDB Quick Start Guide. Windows Driver System Requirements You install Simba ODBC Driver with SQL Connector for MongoDB on client computers accessing MongoDB databases. Each computer where you install the driver must meet the following minimum system requirements: • One of the following operating systems (32- and 64-bit editions are supported): o Windows® Vista o Windows® 7 Professional o Windows® 8 o Windows® 8.1 o Windows® Server 2008 R2 • 100 MB of available disk space Important: To install the driver, you need Administrator privileges on the computer. Simba ODBC Driver with SQL Connector for MongoDB Version 1.7 supports MongoDB versions 2.2.1 to 2.6 www.simba.com 7 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Installing the Driver On 64-bit Windows operating systems, you can execute 32- and 64-bit applications transparently. You must use the version of the driver matching the bitness of the client application accessing MongoDB databases: • SimbaMongoDBODBC32.msi for 32-bit applications • SimbaMongoDBODBC64.msi for 64-bit applications You can install both versions of the driver on the same computer. Note: For an explanation of how to use ODBC on 64-bit editions of Windows, see http://www.simba.com/docs/HOW-TO-32-bit-vs-64-bit-ODBC-Data-Source-Administrator.pdf To install Simba ODBC Driver with SQL Connector for MongoDB: 1. Depending on the bitness of your client application, double-click to run SimbaMongoDBODBC32.msi or SimbaMongoDBODBC64.msi 2. Click Next 3. Select the check box to accept the terms of the License Agreement if you agree, and then click Next 4. To change the installation location, click the Change button, then browse to the desired folder, and then click OK. To accept the installation location, click Next 5. Click Install 6. When the installation completes, click Finish 7. If you received a license file via e-mail, then copy the license file into the \lib subfolder in the installation folder that you selected in step 4. Note: To avoid security issues, you may need to save the license file on your local computer prior to copying the file into the \lib subfolder. Creating a Data Source Name After installing Simba ODBC Driver with SQL Connector for MongoDB, you need to create a Data Source Name (DSN). To create a Data Source Name: 1. Click the Start button , then click All Programs, then click the Simba MongoDB ODBC Driver 1.7 program group corresponding to the bitness of the client application accessing MongoDB databases, and then click ODBC Administrator 2. In the ODBC Administrator, click the Drivers tab, and then scroll down as needed to confirm that Simba MongoDB ODBC Driver appears in the alphabetical list of driver names. www.simba.com 8 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB 3. To create a DSN that only the user currently logged into Windows can use, click the User DSN tab. OR To create a DSN that all users who log into Windows can use, click the System DSN tab. 4. Click Add 5. In the Create New Data Source dialog box, select Simba MongoDB ODBC Driver, and then click Finish 6. In the Simba MongoDB ODBC Driver DSN Setup dialog box, in the Data source name field, type a name for the data source. 7. In the Description field, type relevant details about the DSN. 8. In the Host field, type the name or IP address of the host where the MongoDB instance runs. 9. In the Port field, type the number of the port that the MongoDB instance uses. Note: The default port for MongoDB is 27017. 10. In the Database field, type the name of the MongoDB database to which the client application needs to connect. 11. In the Username field, type the appropriate login credential for the DSN to provide when accessing the MongoDB database. 12. In the Additional servers field, type a comma-separated list of additional servers that you need to use when connecting to a sharded cluster or a replica set. You can indicate the port on which a server is listening by appending a colon (:) and the port number to the server name or IP address. 13. If you are connecting to a replica set in your MongoDB implementation, then select the Connect to a replica set check box and then type the name of the replica set in the Replica set name field. Note: Ensure that the names of the secondary servers in the replica set are listed in the Additional servers field, as described in step 12. 14. To configure advanced driver options, click Advanced Options. For details, see Configuring Options on page 10. 15. To configure logging behavior for the driver, click Logging Options. For details, see Logging on page 12. 16. If you need to customize the schema that Simba ODBC Driver with SQL Connector for MongoDB detects for a MongoDB database, then click Schema Definition. For details, see Defining a Schema for the Driver to Use on page 13. 17. To test the connection, click Test. If you are prompted for authentication, then type your user name and password for accessing the MongoDB instance, and then click OK. The Test Results dialog box appears, displaying a message informing you if the connection succeeded or failed. Click OK to close the Test Results dialog box. www.simba.com 9 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Note: To troubleshoot a connection, confirm that the values and settings in the Simba MongoDB ODBC Driver DSN Setup dialog box are correct. Contact your MongoDB administrator for assistance as needed. 18. To save your settings and close the Simba MongoDB ODBC Driver DSN Setup dialog box, click OK 19. To close the ODBC Data Source Administrator, click OK Configuring Options You can configure options using the following: • Data Source Name • Database connection string For information about the configuration options available in Simba ODBC Driver with SQL Connector for MongoDB, see Appendix: Driver Configuration Options on page 33. Using the Data Source Name To set advanced options using the Simba MongoDB Driver DSN Setup dialog box: 1. In the ODBC Data Source Administrator where you created the DSN, select the DSN tab where the Data Source Name appears, and then select the Data Source Name. 2. Click Configure, and then click Advanced Options 3. In the Documents fetched per block field, type the maximum number of documents (rows) that a query returns at a time. 4. In the Nested column separator field, type a character or string to use to separate the names of nested columns. 5. In the Read preference list, select the appropriate option to specify how the driver routes read operations to the members of a replica set. 6. In the Sampling strategy list, select the appropriate option to specify the location in the table to sample rows from when detecting schema. 7. In the Documents to sample field, type the number of documents to sample when detecting schema for a table. Note: If you set the value to 0, then the driver scans all documents. 8. In the String Column Lengths area, do the following: a. In the Standard field, select or type the default length for String columns. b. In the Container field, select or type the default length for containers (arrays and objects) in MongoDB. c. In the DocumentAsJSON field, select or type the default column length for documentAsJSON fields. www.simba.com 10 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide 9. Select or clear the Use SQL_WVARCHAR for string data types check box as needed. When this check box is selected, the driver maps the MongoDB String data type to SQL_WVARCHAR instead of SQL_VARCHAR. 10. To configure the driver to report a special column named documentAsJSON that retrieves or stores documents as JSON-formatted strings, select Enable reading/writing as JSON document 11. To configure the driver to display documents and arrays as columns in JSON format in the real table, select Show container columns when generating metadata Note: This option does not affect virtual tables. 12. If you purchased the write-enabled Simba ODBC Driver with SQL Connector for MongoDB, then select or clear check boxes in the Write Configuration area as needed: a. To configure the driver to check for reported failures after each INSERT or UPDATE operation, select Check GetLastError on writes b. To configure the driver so that UPDATE statements update all rows that match the filters instead of the first matching row only, select Enable updating multiple rows c. To configure the driver so that INSERT operations do not write null values to table columns, select Omit default NULL columns on insert. If you clear this check box, then the INSERT operations write explicitly provided null values to columns, but not default null values. d. To configure the driver to truncate any document that is greater than 16MB in size, select Truncate documents larger than 16MB. If you clear this check box, then the driver rejects any document that is greater than 16MB in size. e. To configure the driver to validate BSON objects before INSERT or UPDATE operations, select Validate BSON before writes 13. In the Metadata Source area, select Database or Local file. If you select Local file, then click the Browse button, then select the Schema Database Definition (SDD) file from which to load metadata, and then click OK 14. To save your settings and close the Advanced Options dialog box, click OK 15. To close the Simba MongoDB ODBC Driver DSN Setup dialog box, click OK Using a DSN-less Connection Some applications provide support for connecting to a data source using a driver without a DSN. To connect to a data source without using a DSN, use a connection string instead. The following is an example of a connection string that contains only the minimum required attributes: Driver=Simba MongoDB ODBC Driver; Host=192.168.100.100; Port=27017; Database=MyDatabase www.simba.com 11 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB The following is an example connection string that sets some advanced options: Driver=Simba MongoDB ODBC Driver; Host=192.168.100.100; Port=27017; Database=MyDatabase; UID=MyUsername; PWD=MyPassword; RowsFetchedPerBlock=4096; DefaultStringColumnLength=255; DefaultContainerColumnLength=511; UseSqlWVarchar=0; CacheMetadata=1; VirtualTableDetection=1 Logging To help troubleshoot issues, you can enable logging. In addition to functionality provided in the Simba ODBC Driver with SQL Connector for MongoDB, the ODBC Data Source Administrator provides tracing functionality. Important: Only enable logging long enough to capture an issue. Logging decreases performance and can consume a large quantity of disk space. The driver allows you to set the amount of detail included in log files. In order from highest to lowest level, Table 1 lists logging levels provided by the Simba ODBC Driver with SQL Connector for MongoDB. Logging Level Description OFF Disables all logging. FATAL Logs very severe error events that will lead the driver to abort. ERROR Logs error events that might still allow the driver to continue running. WARNING Logs potentially harmful situations. INFO Logs general information that describes the progress of the driver. DEBUG Logs detailed information that is useful for debugging the driver. TRACE Logs more detailed information than the DEBUG level. Table 1 Simba ODBC Driver with SQL Connector for MongoDB Logging Levels www.simba.com 12 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide To enable logging functionality available in the Simba ODBC Driver with SQL Connector for MongoDB: 1. In the Simba MongoDB ODBC Driver DSN Setup dialog box, click Logging Options 2. In the Log level list, select the desired level of information to include in log files. 3. In the Log directory field, type the full path to the folder where you want to save log files. 4. Click OK The Simba ODBC Driver with SQL Connector for MongoDB produces a log file named MongoDBODBC_driver.log at the location you specify using the Log directory field. To disable Simba ODBC Driver with SQL Connector for MongoDB logging: 1. In the Simba MongoDB ODBC Driver DSN Setup dialog box, click Logging Options 2. In the Log level list, select LOG_OFF 3. Click OK To start tracing using the ODBC Data Source Administrator: 1. In the ODBC Data Source Administrator, click the Tracing tab. 2. In the Log File Path area, click Browse. In the Select ODBC Log File dialog box, browse to the location where you want to save the log file, then type a descriptive file name in the File name field, and then click Save 3. On the Tracing tab, click Start Tracing Now To stop ODBC Data Source Administrator tracing: On the Tracing tab in the ODBC Data Source Administrator, click Stop Tracing Now For more information about tracing using the ODBC Data Source Administrator, see the article How to Generate an ODBC Trace with ODBC Data Source Administrator at http://support.microsoft.com/kb/274551 Defining a Schema for the Driver to Use This section explains how to customize the schema that the driver uses when connecting to a MongoDB instance. For information about how the Simba ODBC Driver with SQL Connector for MongoDB uses a schema, see Schema Definition on page 24. Note: The driver will automatically generate the schema if you do not manually define it. When you select data from a table for the first time, the driver generates the schema for that table. In the Schema Definition dialog box, you must first select or set a Schema Database Definition (SDD) file. All actions to export, edit, or update metadata that you complete in the Schema Definition dialog box use the SDD file that you set. www.simba.com 13 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB You can export metadata for all tables, missing tables, or tables that you select. To define a schema that the Simba ODBC Driver with SQL Connector for MongoDB uses when connecting to a MongoDB instance: 1. In the ODBC Data Source Administrator where you created the DSN, select the DSN tab where the Data Source Name appears, and then select the Data Source Name. 2. Click the Configure button, and then click the Schema Definition button. 3. In the Schema Definition dialog box, click the Browse button next to the External schema file field. In the Save As dialog box, browse to select the existing SDD file that you want to use, and then click Save OR In the Save As dialog box, type the name of a new SDD file that you want to create in the File name field, and then click Save 4. To export metadata to the SDD file that you set, do one of the following: • If the desired metadata has already been generated, then click Export Existing to export the metadata. In the confirmation dialog box, click OK • To generate and export metadata for all the tables in the database, click Export All Tables. In the confirmation dialog box, click OK • To generate and export metadata for tables in the database that are currently not included in the schema, click Export Missing Tables. In the confirmation dialog box, click OK • To generate and export metadata for a specific table, use the options in the Export One Table area: a. In the Database source table list, select the table for which you want to generate and export metadata. b. Optionally, in the JSON filter field, type an appropriate JSON filter to apply to data in the selected table prior to generating metadata. c. Click Export Table. In the confirmation dialog box, click OK d. Repeat steps a to c as needed to include all desired metadata in the SDD file that you set. Note: The value you type in the JSON filter field is the MongoDB equivalent of a WHERE clause in SQL. For example, the SQL statement SELECT * FROM at_1 WHERE _id = “T123” returns the row having the value T123 in the _id field from the table named at_1. In the Schema Definition dialog box, selecting at_1 from the Table Name list and then typing {_id: “T123”} in the JSON Filter field returns the same result. For more information, see the “db.collection.find()” section of the MongoDB Manual at http://docs.mongodb.org/manual/reference/method/db.collection.find/#db.collecti on.find. The JSON filter is the argument for the “criteria” parameter. www.simba.com 14 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide 5. To edit metadata in the SDD file that you set, click Edit Schema File. Using the Simba Schema Editor that opens, edit the schema as needed, and then save your edits. Note: The Simba Schema Editor is installed with the Simba ODBC Driver with SQL Connector for MongoDB. You can find the Simba Schema Editor application in the /Tools/Schema Editor subfolder in the Simba ODBC Driver with SQL Connector for MongoDB installation folder. The Simba Schema Editor is a Java application. For details on using the Simba Schema Editor, see the Simba Schema Editor User Guide. 6. To update the schema that the driver uses to connect to your MongoDB instance with the metadata in the SDD file that you set, in the Update area of the Schema Definition dialog box, click Update Metadata. Note: The Current metadata source field displays the metadata source that you set using the Advanced Options dialog box. For information about how to set the metadata source, see Configuring Options on page 10. 7. Repeat steps 5 and 6 until your queries perform as needed. 8. If you want to delete all the metadata that the driver has generated for the MongoDB instance, click Clear Existing Metadata 9. To configure options related to virtual tables, click Virtual Table Options. For details, see Using Virtual Tables on page 15. Important: By default, the Simba ODBC Driver with SQL Connector for MongoDB enables virtual table creation. If possible, configure options related to virtual tables as needed prior to connecting to your MongoDB data source using the Simba ODBC Driver with SQL Connector for MongoDB for the first time. Connecting to the data source generates a schema for the data source. If you configure options for virtual tables after connecting to the data source, then you need to export and then import the schema for changes to take effect. 10. In the Schema Definition dialog box, click OK Using Virtual Tables For a discussion and example showing how the Simba ODBC Driver with SQL Connector for MongoDB implements virtual tables, see Virtual Tables on page 28. For information about the configuration options available in Simba ODBC Driver with SQL Connector for MongoDB, including settings related to virtual tables, see Appendix: Driver Configuration Options on page 33. To set Simba ODBC Driver with SQL Connector for MongoDB options related to using virtual tables: 1. In the ODBC Data Source Administrator where you created the DSN, select the DSN tab where the Data Source Name appears, and then select the Data Source Name. 2. Click Configure, then click Schema Definition, and then click Virtual Table Options. www.simba.com 15 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide 3. To enable the generation of metadata for virtual tables, select the Enable virtual table detection check box. 4. In the Virtual main table name suffix field, type a suffix for naming the main virtual table. 5. In the Virtual key column separator field, type a separator for generated column names in a virtual table. 6. In the Virtual table name separator field, type a separator for naming a virtual table built from an array column. 7. In the Virtual table index column suffix field, type a suffix for naming generated columns in a virtual table that indicate the position/index of an element into an array. 8. To configure the driver to hide the real table when virtual tables have been created, select Hide real table if virtual tables created 9. To show the array count column in the main virtual table, select the Show array counts in virtual main table check box, and then in the Virtual table array count prefix field, type a prefix for naming the array count column. 10. To save your settings and close the Virtual Table Options dialog box, click OK Linux Driver System Requirements Each computer where you install the driver must meet the following minimum system requirements: • One of the following operating systems (32- and 64-bit editions are supported): o Red Hat® Enterprise Linux® (RHEL) 5.x o CentOS 5.x o CentOS 6.x o SUSE Linux Enterprise Server (SLES) 11 • 300 MB of available disk space • An installed ODBC driver manager: • iODBC 3.52.7 or above OR • unixODBC 2.2.12 or above Simba ODBC Driver with SQL Connector for MongoDB Version 1.7 supports MongoDB 2.2.1 to 2.6 www.simba.com 16 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Installing the Driver Using the RPM You can install the driver using RPMs. There are two versions of the driver for Linux: • • SimbaMongoDBODBC-32bit-Version-Release.rpm—32-bit driver SimbaMongoDBODBC-Version-Release.rpm—64-bit driver The bitness of the driver that you select should match the bitness of the client application accessing your MongoDB-based data. For example, if the client application is 64-bit, then you should install the 64-bit driver. Note that 64-bit editions of Linux support both 32- and 64-bit applications. Verify the bitness of your intended application and install the appropriate version of the driver. Simba ODBC Driver with SQL Connector for MongoDB driver files are installed in the following directories: • /opt/simba/mongodbodbc/ contains release notes, the Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide in PDF format and a Readme.txt file that provides plain text installation and configuration instructions. • /opt/simba/mongodbodbc/lib/32 contains the 32-bit Simba ODBC Driver with SQL Connector for MongoDB for Linux, as well as the simba.mongodbodbc.ini configuration file. • /opt/simba/mongodbodbc/lib/64 contains the 64-bit Simba ODBC Driver with SQL Connector for MongoDB for Linux, as well as the simba.mongodbodbc.ini configuration file. • /opt/simba/mongodbodbc/ErrorMessages contains error message files required by the Simba ODBC Driver with SQL Connector for MongoDB. • /opt/simba/mongodbodbc/Setup contains sample configuration files named odbc.ini and odbcinst.ini • /opt/simba/mongodbodbc/Tools/Schema Editor contains the Simba Schema Editor Java application. To install Simba ODBC Driver with SQL Connector for MongoDB: 1. In Red Hat Enterprise Linux 5.0 or CentOS 5.0, log in as the root user, then navigate to the folder containing the driver RPM packages to install, and then type the following at the command line, where RPMFileName is the file name of the RPM package containing the version of the driver that you want to install: yum --nogpgcheck localinstall RPMFileName OR In SUSE Linux Enterprise Server 11, log in as the root user, then navigate to the folder containing the driver RPM packages to install, and then type the following at the command line, where RPMFileName is the file name of the RPM package containing the version of the driver that you want to install: www.simba.com 17 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide zypper install RPMFileName 2. If you received a license file via e-mail, then copy the license file into the /opt/simba/ mongodbodbc /lib/32 or /opt/simba/mongodbodbc /lib/64 folder, depending on the version of the driver that you installed. Installing the Driver Using the Tarball Package Alternatively, the Simba ODBC Driver with SQL Connector for MongoDB is available for installation using a TAR.GZ tarball package. The tarball package includes: • [INSTALL_DIR]/simba/mongodbodbc/ contains release notes, the Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide in PDF format and a Readme.txt file that provides plain text installation and configuration instructions. • [INSTALL_DIR]/simba/mongodbodbc/lib/32 contains the 32-bit Simba ODBC Driver with SQL Connector for MongoDB for Linux, as well as the simba.mongodbodbc.ini configuration file. • [INSTALL_DIR]/simba/mongodbodbc/lib/64 contains the 64-bit Simba ODBC Driver with SQL Connector for MongoDB for Linux, as well as the simba.mongodbodbc.ini configuration file. • [INSTALL_DIR]/simba/mongodbodbc/ErrorMessages contains error message files required by the Simba ODBC Driver with SQL Connector for MongoDB. • [INSTALL_DIR]/simba/mongodbodbc/Setup contains sample configuration files named odbc.ini and odbcinst.ini • [INSTALL_DIR]/simba/mongodbodbc/Tools/Schema Editor contains the Simba Schema Editor Java application. Setting the LD_LIBRARY_PATH Environment Variable The LD_LIBRARY_PATH environment variable must include the paths to installed ODBC driver manager libraries. For example, if ODBC driver manager libraries are installed in /usr/local/lib, then set LD_LIBRARY_PATH as follows: export LD_LIBRARY_PATH=/usr/local/lib For information about how to set environment variables permanently, refer to your Linux shell documentation. For information about creating ODBC connections using Simba ODBC Driver with SQL Connector for MongoDB, see Configuring ODBC Connections for Linux and Mac OS X on page 20. www.simba.com 18 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Mac OS X Driver System Requirements Each computer where you install the driver must meet the following minimum system requirements: • Mac OS X version 10.6.8 or later • 100 MB of available disk space • iODBC 3.52.7 or above Simba ODBC Driver with SQL Connector for MongoDB Version 1.7 supports MongoDB 2.2.1 to 2.6 Installation Simba ODBC Driver with SQL Connector for MongoDB driver files are installed in the following directories: • /opt/simba/mongodbodbc/ErrorMessages contains error message files required by the Simba ODBC Driver with SQL Connector for MongoDB. • /opt/simba/mongodbodbc/Setup contains sample configuration files named odbc.ini and odbcinst.ini • /opt/simba/mongodbodbc/Tools/Schema Editor contains the Simba Schema Editor Java application. • /opt/simba/mongodbodbc/lib/universal contains the Simba ODBC Driver with SQL Connector for MongoDB for Mac OS X, as well as the simba.mongodbodbc.ini configuration file. To install Simba ODBC Driver with SQL Connector for MongoDB: 1. Double-click to mount the SimbaMongoDBODBC.dmg disk image. 2. Double-click SimbaMongoDBODBC.pkg to run the installer. 3. Follow the instructions in the installer to complete the installation process. 4. When the installation completes, click Close 5. If you received a license file via e-mail, then copy the license file into the /opt/simba/mongodbodbc/lib/universal folder. www.simba.com 19 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Setting the DYLD_LIBRARY_PATH Environment Variable The DYLD_LIBRARY_PATH environment variable must include the paths to installed ODBC driver manager libraries. For example, if ODBC driver manager libraries are installed in /usr/local/lib, then set DYLD_LIBRARY_PATH as follows: export DYLD_LIBRARY_PATH=/usr/local/lib For information about how to set environment variables permanently, refer to your Mac OS X shell documentation. For information about creating ODBC connections using Simba ODBC Driver with SQL Connector for MongoDB, see Configuring ODBC Connections for Linux and Mac OS X on page 20. Configuring ODBC Connections for Linux and Mac OS X Files ODBC driver managers use configuration files to define and configure ODBC data sources and drivers. By default, the following configuration files residing in the user’s home directory are used: • .odbc.ini – The file used to define ODBC data sources (required) • .odbcinst.ini – The file used to define ODBC drivers (optional) Also, by default the Simba ODBC Driver with SQL Connector for MongoDB is configured using the simba.mongodbodbc.ini file in the subfolder in the /lib folder containing the binaries for the driver that you are using. The simba.mongodbodbc.ini file is required. Note: The simba.mongodbodbc.ini file in the /lib subfolder provides default settings for most configuration options available in the Simba ODBC Driver with SQL Connector for MongoDB. Sample Files The driver installation contains the following sample configuration files in the Setup directory: • odbc.ini • odbcinst.ini The sample configuration files in the Setup directory provide preset values for settings related to the Simba ODBC Driver with SQL Connector for MongoDB. The names of the sample configuration files do not begin with a period (.) in order to appear in directory listings by default. A filename beginning with a period (.) is hidden. For odbc.ini and odbcinst.ini, if the default location is used, then the filenames must begin with a period (.). www.simba.com 20 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide If configuration files do not exist in the user’s home directory, then you can copy the sample configuration files to the home directory, and then rename the files. If the configuration files already exist in the home directory, then use the sample configuration files as a guide to modify the existing configuration files. Configuring the Environment Optionally, you can use three environment variables—ODBCINI, ODBCSYSINI, and SIMBAMONGODBINI—to specify different locations for the odbc.ini, odbcinst.ini and simba.mongodbodbc.ini configuration files by doing the following: • Set ODBCINI to point to your odbc.ini file. • Set ODBCSYSINI to point to the directory containing the odbcinst.ini file. • Set SIMBAMONGODBINI to point to your simba.mongodbodbc.ini file. For example, if your odbc.ini and simba.mongodbodbc.ini files are located in the folder /etc and your odbcinst.ini file is located in the folder /usr/local/odbc, then set the environment variables as follows: export ODBCINI=/etc/odbc.ini export ODBCSYSINI=/usr/local/odbc export SIMBAMONGODBINI=/etc/simba.mongodbodbc.ini The following search order is used to locate the simba.mongodbodbc.ini file: 1. If the SIMBAMONGODBINI environment variable is defined, then the driver searches for the file specified by the environment variable. Important: SIMBAMONGODBINI must contain the full path, including the filename. 2. The directory containing the driver’s binary is searched for a file named simba.mongodbodbc.ini (not beginning with a period). 3. The current working directory of the application is searched for a file named simba.mongodbodbc.ini (not beginning with a period). 4. The directory ~/ (that is, $HOME) is searched for a hidden file named .simba.mongodbodbc.ini 5. The directory /etc is searched for a file named simba.mongodbodbc.ini (not beginning with a period). Configuring the odbc.ini File Note: For an example odbc.ini file providing preset values for settings related to the Simba ODBC Driver with SQL Connector for MongoDB, see the Setup directory in the folder where you installed the driver. www.simba.com 21 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide ODBC Data Sources are defined in the odbc.ini configuration file. The file is divided into several sections: • [ODBC] is optional and used to control global ODBC configuration, such as ODBC tracing. • [ODBC Data Sources] is required, listing DSNs and associating DSNs with a driver. • A section having the same name as the data source specified in the [ODBC Data Sources] section is required to configure the data source. The following is an example odbc.ini configuration file for Linux: [ODBC Data Sources] Sample Simba MongoDB DSN 32=Simba MongoDB ODBC Driver 32-bit [Sample Simba MongoDB DSN 32] Driver=/opt/simba/mongodbodbc/lib/32/libsimbamongodbodbc32.so HOST=MyMongoDBServer PORT=10000 The following is an example odbc.ini configuration file for Mac OS X: [ODBC Data Sources] Sample Simba MongoDB DSN=Simba MongoDB ODBC Driver [Sample Simba MongoDB DSN] Driver=/opt/simba/mongodbodbc/lib/universal/libsimbamongodbodbc.dylib HOST=MyMongoDBServer PORT=10000 To create a data source: 1. Open the .odbc.ini configuration file in a text editor. 2. Add a new entry to the [ODBC Data Sources] section. Type the data source name (DSN) and the driver name. 3. To set configuration options, add a new section having a name matching the data source name (DSN) you specified in step 2. Specify configuration options as key-value pairs. 4. If you are connecting to a MongoDB database that uses authentication, then set the following key: UID=MyUsername MyUsername is your login credential for accessing the MongoDB database. 5. Save the .odbc.ini configuration file. For information about the configuration options available in Simba ODBC Driver with SQL Connector for MongoDB, see Appendix: Driver Configuration Options on page 33. Configuring the odbcinst.ini File Note: For an example odbc.ini file providing preset values for settings related to the Simba ODBC Driver with SQL Connector for MongoDB, see the Setup directory in the folder where you installed the driver. www.simba.com 22 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide ODBC Drivers are defined in the odbcinst.ini configuration file. The configuration file is optional because drivers can be specified directly in the odbc.ini configuration file, as described in Configuring the odbc.ini File on page 21. The odbcinst.ini file is divided into the following sections: • [ODBC Drivers] lists the names of all the installed ODBC drivers. • A section having the same name as the driver name specified in the [ODBC Drivers] section lists driver attributes and values. The following is an example odbcinst.ini file for Linux: [ODBC Drivers] Simba MongoDB ODBC Driver 32-bit=Installed Simba MongoDB ODBC Driver 64-bit=Installed [Simba MongoDB ODBC Driver 32-bit] Description=Simba MongoDB ODBC Driver (32-bit) Driver=/opt/simba/mongodbodbc/lib/32/libsimbamongodbodbc32.so [Simba MongoDB ODBC Driver 64-bit] Description=Simba MongoDB ODBC Driver (64-bit) Driver=/opt/simba/mongodbodbc/lib/64/libsimbamongodbodbc64.so The following is an example odbcinst.ini file for Mac OS X: [ODBC Drivers] Simba MongoDB ODBC Driver=Installed [Simba MongoDB ODBC Driver] Description=Simba MongoDB ODBC Driver Driver=/opt/simba/mongodbodbc/lib/universal/libsimbamongodbodbc.dylib To define a driver: 1. Open the .odbcinst.ini configuration file in a text editor. 2. Add a new entry to the [ODBC Drivers] section. Type the driver name, and then type =Installed Note: Assign the driver name as the value of the Driver attribute in the data source definition instead of the driver shared library name. 3. In .odbcinst.ini, add a new section having a name matching the driver name you typed in step 2, and then add configuration options to the section based on the sample odbcinst.ini file provided with Simba ODBC Driver with SQL Connector for MongoDB in the Setup directory. Specify configuration options as key-value pairs. 4. Save the .odbcinst.ini configuration file. Configuring the simba.mongodbodbc.ini File To configure Simba ODBC Driver with SQL Connector for MongoDB to work with your ODBC driver manager: 1. Open the simba.mongodbodbc.ini configuration file in a text editor. www.simba.com 23 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide 2. Edit the DriverManagerEncoding setting. The value is usually UTF-16 or UTF-32, depending on the ODBC driver manager you use. iODBC uses UTF-32, and unixODBC uses UTF-16. Consult your ODBC Driver Manager documentation for the correct setting to use. 3. Edit the ODBCInstLib setting. The value is the name of the ODBCInst shared library for the ODBC driver manager you use. The configuration file defaults to the shared library for iODBC. In Linux, the shared library name for iODBC is libiodbcinst.so. In Mac OS X, the shared library name for iODBC is libiodbcinst.dylib. Note: Consult your ODBC driver manager documentation for the correct library to specify. You can specify an absolute or relative filename for the library. If you intend to use the relative filename, then the path to the library must be included in the library path environment variable. In Linux, the library path environment variable is named LD_LIBRARY_PATH. In Mac OS X, the library path environment variable is named DYLD_LIBRARY_PATH. 4. Save the simba.mongodbodbc.ini configuration file. Features SQL Connector The SQL Connector feature of the driver allows applications to use normal SQL queries against MongoDB, translating standard SQL-92 queries into equivalent MongoDB API calls. This allows standard queries that BI tools execute to run against your MongoDB instance. Schema Definition Simba ODBC Driver with SQL Connector for MongoDB dynamically detects the database schema— also referred to as metadata—needed for ODBC in the process of connecting to a MongoDB database. You can also edit the schema that the driver uses manually using the Simba Schema Editor. The Simba Schema Editor is a Java application that runs on Windows, Linux, and Mac OS X. The Simba Schema Editor is included when you install the Simba ODBC Driver with SQL Connector for MongoDB. For more details on using the Simba Schema Editor, see the Simba Schema Editor User Guide. To define a schema manually: 1. Export the schema from the driver. 2. Edit the schema using the Simba Schema Editor application. 3. Import the edited schema into the driver. 4. Repeat steps 2 to 3 until your queries perform as needed. For information about exporting and importing the schema when using the Windows driver, see Defining a Schema for the Driver to Use on page 13. For information about exporting and www.simba.com 24 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB importing the schema when using the Linux or Mac OS X driver, see Appendix: Driver Configuration Options on page 33. Data Types The following data types are supported: • Array (see below for more information) • MaxKey • BinData • MinKey • Boolean • NumberDouble • Code • NumberInt • CodeWScope • NumberLong • Date • Object (see below for more information) • DBRef (deprecated) • RegEx • jstOID • String • JSTypeMax • Symbol • Timestamp Embedded Documents Embedded documents in MongoDB are represented as nested columns in the Simba ODBC Driver with SQL Connector for MongoDB. For example, consider the following JSON document: {"contact": {"address": {"street": "1-123 Broadway", "city": "Vancouver"}}, "phone": "+12345678"} The driver identifies the following columns in the document: Column MongoDB Data Type Data contact.address.street String 1-123 Broadway contact.address.city String Vancouver phone String +12345678 The identified columns will act in the same way as any other column when being mapped to SQL data types or when generalizing data types. If there are different fields within a document, then only the most general fields are identified as columns. Consider the following two documents: {"contact": {"address": {"street": "1-123 Broadway", "city": "Vancouver"}}, "phone": "+12345678"} {"contact": {"address": "22 Cambie, Vancouver"}, "phone": "+87654321"} www.simba.com 25 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB In the second document, contact.address is not an embedded document, so the driver considers contact.address as a String instead of an embedded document. Respectively, the driver identifies the following columns for each document: Column MongoDB Data Type Data contact.address String {street: “1-123 Broadway”, city: “Vancouver”} 22 Cambie, Vancouver phone String +12345678 +87654321 In a SQL query, when a column name contains the separator character, you need to enclose the column name in quotes (“). For example: SELECT "contact.address", "phone" FROM Contacts Arrays The ODBC interface does not natively support collection-based data types, so the Simba ODBC Driver with SQL Connector for MongoDB implements two options for accessing and interacting with collection-based data. Depending on preference, arrays in MongoDB can be represented as either virtual tables or nested columns. By default, arrays are represented as virtual tables. The driver uses the nested column representation when Virtual Table Detection is disabled in the configuration. Arrays as Virtual Tables The Simba ODBC Driver with SQL Connector for MongoDB can represent arrays in MongoDB using virtual tables. For more information, see Virtual Tables on page 28 and Using Virtual Tables on page 15. Arrays as Nested Columns Arrays in MongoDB can also be represented as nested columns in the Simba ODBC Driver with SQL Connector for MongoDB. Consider the following JSON document using an array: {"values": ["hello", 1, {"v1": {"v2": "this is an embedded document"}}]} The driver identifies the following columns: Column MongoDB Data Type Data values.0 String Hello values.1 Double 1.0 values.2.v1.v2 String this is an embedded document www.simba.com 26 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide The column names include the index of the item in the array that the column represents, starting with an index of 0. In other words, the first element of the array uses a suffix of .0, the second element uses .1, and so on. If different rows in the sample have the same field with different data types, then a precedence order is used to determine the type. The generated type will be the first one from the following list that appears in the sample data: 1. Array 2. Object 3. Binary 4. String 5. NumberDouble 6. NumberLong 7. NumberInt Data types having no direct mapping from Mongo to ODBC are represented as type VARCHAR in ODBC. The detected MongoDB type is used during INSERT and UPDATE operations. Columns mapped to SQL data types or generalized act in the same way as any other column. For example, the following field named f is generalized to type Array: {f : {g1 : 1}} {f : [1, 2, 3]} In a SQL query, when a column name contains the separator character you need to enclose the column name in quotes (“). For example: SELECT "values.0", "values.1", "values.2.v1.v2" FROM Contacts Authentication Simba ODBC Driver with SQL Connector for MongoDB leverages authentication built into MongoDB. Built-in authentication requires users to supply a user name and password. For information about using authentication when the driver is installed on the Windows operating system, see Creating a Data Source Name on page 8. For information about Linux and Mac OS X installations, see Configuring the odbc.ini File on page 21. Catalog Support Simba ODBC Driver with SQL Connector for MongoDB supports catalogs by using the name of the MongoDB database as the catalog, allowing the driver to work easily with various ODBC applications. www.simba.com 27 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide Virtual Tables One advantage of the MongoDB design is the ability to create schemas with data that is denormalized into a fewer number of tables. By taking advantage of arrays, transactions can be simplified. However the ODBC interface does not natively support accessing this type of data in an intuitive manner. By expanding the data contained within an array into virtual tables, the Simba ODBC Driver with SQL Connector for MongoDB allows users to directly interact with their data but leave the storage of the data in its denormalized form in MongoDB. When creation of virtual tables is enabled in the driver, the first time that a table having cells containing embedded arrays is queried the driver creates a virtual table for each embedded array found in the real table, up to four levels deep for reading and up to two levels deep for writing. Virtual tables appear as additional tables in a list showing tables that exist in the database. Once created, virtual tables are persistent within the schema that the driver creates and is using for the connection. Virtual tables link to data in the real table. When you write to your MongoDB database using a virtual table, data in the real table is updated. When the Simba ODBC Driver with SQL Connector for MongoDB creates virtual tables, a virtual main table is created containing data matching the real table, but replacing data embedded in the real table with links from other virtual tables that reference the data embedded in the real table, using unique MongoDB IDs. In virtual tables that the driver creates, the names of primary and foreign key fields end with the suffix _id. By querying the virtual tables, you can access the contents of embedded arrays via ODBC. The virtual main table is named using the convention RealTableName VirtualTableNameSeparator VirtualMainTableNameSuffix where RealTableName is the name of the corresponding real table, VirtualTableNameSeparator is _vt_ by default, and VirtualMainTableNameSuffix is main by default. Other virtual tables are named using the convention RealTableName VirtualTableNameSeparator ArrayName where RealTableName is the name of the real table containing the embedded data, VirtualTableNameSeparator is _vt_ by default, and ArrayName is the shortest unique version of the embedded data array name. You can change the Virtual Table Name Separator and Virtual Main Table Name Suffix. Important: If possible, configure options related to virtual tables as needed prior to connecting to your MongoDB data source using the Simba ODBC Driver with SQL Connector for MongoDB for the first time. Connecting to the data source generates a schema for the data source. If you configure options for virtual tables after connecting to the data source, then you need to export and then import the schema for changes to take effect. For information about exporting and importing a schema in Windows, see Defining a Schema for the Driver to Use on page 13. For information about exporting and importing a schema in Linux or Mac OS X, see Appendix: Driver Configuration Options on page 33. www.simba.com 28 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB For example, consider the following table in MongoDB, CustomerTable: _id 1111 Customer Name ABC Invoices Service Level [{invoice_id=123,item=toaster, price=456,discount=0.2}, Silver {invoice_id=124,item=oven, price=1235,discount=0.2}] 2222 XYZ Contacts Oggs [{type=primary,name="John [1,2] Johnson"}, {type=invoicing,name="Jill Jilliamson"}] [{invoice_id=135,item=denial, price=12543,discount=0.0}] Lead [{type=primary,name="Jane Doe"}] [8,9] This table has two columns that have an array of Objects in each cell (Invoices, Contacts) and one column that has an array of Scalar types (Oggs). If Virtual Table Detection is enabled, then multiple virtual tables would be generated for this single Source table. The first table is the main virtual table: CustomerTable_vt_main _id 1111 Customer Name Number of Invoices Service Level Number of Contacts Number of Oggs ABC 2 Silver 2 2 2222 XYZ 1 Lead 1 2 This virtual table contains all of the data of the original table, but the data from the arrays has been left out and will be expanded in the other virtual tables. The cells that originally contained the array data have been replaced with counts of the number of elements in the array (Number of Invoices, Number of Contacts, Number of Oggs). By default, the columns containing counts are hidden and do not appear in ODBC. Now, have a closer look at the expanded virtual tables representing the original arrays: CustomerTable_vt_Invoices CustomerTable._id Invoices_index invoice_id item price discount 1111 1 123 toaster 456 0.2 1111 2 124 oven 1235 0.2 2222 1 135 denial 12543 0.0 www.simba.com 29 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB CustomerTable_vt_Contacts CustomerTable._id Invoices_index type name 1111 1 primary John Johnson 1111 2 invoicing Jill Jilliamson 2222 1 primary Jane Doe CustomerTable_vt_Oggs CustomerTable._id Oggs_index Oggs.value 1111 1 1 1111 2 2 2222 1 8 2222 2 9 Each of these tables contain a reference back to the original primary key column corresponding to the row of the original array (CustomerTable._id), an indication of the position of the data within the original array (Invoices_index, Contacts_index, Oggs_index), and the expanded data for each element within the array (for Invoices: (invoice_id, item, price, discount), for Contacts: (type, name), for Oggs: (Oggs.value)). The data within each of these virtual tables can be selected, inserted and updated as if they were normal tables, and the driver will take care of the storage details within MongoDB. You can also explicitly append data to the end of an array by inserting a row of data with the index column set to -1. For example, to append 3 to the Oggs array in the CustomerTable where _id = 1111, you would submit a query to: INSERT INTO CustomerTable_vt_Oggs (CustomerTable._id, Oggs_index, Oggs.value) VALUES (1111, -1, 3) Write-back The write-enabled version of the Simba ODBC Driver with SQL Connector for MongoDB supports Data Manipulation Language (DML) statements such as INSERT, UPDATE, and DELETE. These statements expose standard SQL-92 behavior. The driver does not execute the DML statements atomically, as MongoDB does not have transaction support. However, MongoDB guarantees atomic update on a single row and so does the driver. If an UPDATE/DELETE statement affects multiple rows and an error occurs in one of them, then the driver returns an error, but the rows that are already updated will remain so. Which means, for an UPDATE/DELETE statement, some rows may be updated successfully and the driver may return an error for the rest. Some special cases with DML statements are described in more detail below. www.simba.com 30 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Important: The read-only version of the driver does not support the use of DML statements such as INSERT, UPDATE, and DELETE. INSERT Each row in MongoDB needs to have a unique ID represented by the “_id” column. If not provided during insertion, MongoDB auto-generates a unique ID for each row. The “_id” field is exposed as a valid column in MongoDB ODBC Driver and can be auto-generated when issuing INSERT statements through the driver. For example, consider the following table: _id sample_column "517024D6CC79814E3FEBD352" 1 "5170ED77E49CC93A918DE316" 2 To insert a document with auto-generated value for “_id” (data type: jstOID), issue the following command: INSERT INTO sample_table_1(sample_column) VALUES(3) After the insertion, the table would look like as below: _id sample_column "517024D6CC79814E3FEBD352" 1 "5170ED77E49CC93A918DE316" 2 "51710FFCE49CC93A918DE322" 3 The value for the “_id” column can also be inserted using the INSERT statements, as in the following examples: INSERT INTO sample_table_2(_id, sample_column) VALUES(1,1) INSERT INTO sample_table_2 VALUES(1,1) UPDATE When updating rows, special care needs to be taken to avoid duplicate values for the “_id” column. As mentioned before, “_id” needs to be unique across all rows. When an UPDATE statement tries to set a value for the “_id” column and matches multiple rows, only one of the rows is updated with the new values, and the driver return an error for the remaining rows. UPDATE is not executed atomically. DELETE Currently, the driver considers a table valid as long as the table contains some data. If a table is completely empty, then the driver is not able to access the table. Consider the following example: DELETE FROM sample_table_3 www.simba.com 31 Simba ODBC Driver with SQL Connector for MongoDB Installation and Configuration Guide The command removes all data from sample_table_3. Therefore, sample_table_3 is invalid. Any users attempting to access the table receive an error. A table exists until the metadata is removed. Continuing the example, the following command removes the table metadata: DROP TABLE sample_table_3 Supported Data Types for DML All supported data types are supported for DML statements. CREATE TABLE cannot create virtual tables, arrays, or nested objects. In general, it is recommended to create tables by inserting a row using the mongo shell and then generating the schema from the row. Also, the data provided in DML statements should match the existing column data types. For example, a String value cannot be inserted/set in a column that has NumberInt as its data type. Contact Us If you have difficulty using the driver, please contact our Technical Support staff. We welcome your questions, comments, and feature requests. Technical Support is available Monday to Friday from 8 a.m. to 5 p.m. Pacific Time. Important: To help us assist you, prior to contacting Technical Support please prepare a detailed summary of the client and server environment including operating system version, patch level and configuration. You can contact Technical Support via: • E-mail: [email protected] • Web site: www.simba.com • Telephone: (604) 633-0008 Extension 3 • Fax: (604) 633-0004 You can also follow us on Twitter @SimbaTech www.simba.com 32 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Appendix: Driver Configuration Options You can configure options using the following: • Data Source Name • Database connection string Table 2 lists the configuration options available in Simba ODBC Driver with SQL Connector for MongoDB alphabetically by field or button label. Options that do not appear in the user interface of the driver are listed alphabetically by key name at the end of the table. When creating or configuring a DSN connection from a Windows machine, the fields and buttons described in Table 2 are available in the following dialog boxes: • The Simba MongoDB ODBC Driver DSN Setup dialog box • The Advanced Options dialog box • The Schema Definition dialog box • The Virtual Table Options dialog box When using a connection string or configuring a connection from a Linux or Mac OS X machine, use the key names provided in Table 2. Field or Button Label (Key Name) Additional servers (SecondaryServers) Check GetLastError on writes (CheckGetLastError) www.simba.com Default Value Description A comma-separated list of additional servers that you need to use when connecting to a sharded cluster or a replica set. You can indicate the port on which a server is listening by appending a colon (:) and the port number to the server name or IP address. Selected (1) When this option is enabled (1), the driver calls the MongoDB CheckGetLastError() function after each INSERT or UPDATE operation to check for reported failures. Calling CheckGetLastError() typically takes four times longer than the INSERT or UPDATE operation, but it is necessary if fault tolerance is important. 33 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Default Value Description Connect to a replica set (UseReplicaSet) 0 When this option is enabled (1), the driver is able to access replica sets in your MongoDB implementation. When this option is disabled (0), the driver does not access replica sets. Container (DefaultContainerColumnLength) 511 The default column length for containers (arrays and objects) in MongoDB. DocumentAsJSON (DefaultJSONColumnLength) 1023 The default column length for documentAsJSON fields. See also the Enable reading/writing as JSON document driver configuration option. Documents fetched per block (RowsFetchedPerBlock) 4096 The maximum number of documents (rows) that a query returns at a time. Documents to sample (SchemaDetectSampleSize) 100 The number of documents to sample when detecting schema for a table. If you set the value to 0, then the driver scans all documents. Enable reading/writing as JSON document (UseJSONColumn) Clear (0) When this option is enabled (1), the driver reports a special column named documentAsJSON that retrieves or stores whole documents as JSON-formatted strings. Note: Only enable this option as needed. The process of converting documents into JSON strings decreases the performance of the driver. See also the DocumentAsJSON driver configuration option. Enable updating multiple rows (UpdateMultipleRows) Selected (1) When this option is enabled (1), UPDATE statements update all rows that match the filters. When this option is disabled (0), UPDATE statements update the first matching row only. www.simba.com 34 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Enable virtual table detection (VirtualTableDetection) Default Value Description Selected (1) When this option is enabled (1), the driver generates metadata for virtual tables. When this option is disabled (0), the driver does not generate metadata for virtual tables. Export All Tables (ExportSchemaMapTo) The full path to a Schema Database Definition (SDD) file that you want to export metadata to. Important: Including the key in a connection string exports the metadata to the specified file. After exporting the metadata, remove the key from the connection string. Hide real table if virtual tables created (VTHideRealTables) Selected (1) When this option is enabled (1), if virtual tables have been created, then the real table is hidden. When this option is disabled (0), both types of tables are displayed. Local file (LocalMetadataFile) Clear The path to a local SDD file from which to load metadata. The metadata in the file must be in a predefined JSON format. If you do not provide a value, then the driver loads metadata from the collection in the database named Mersenne_Collection_Metadata Nested column separator (NestedColumnSeparator) __ (two underscore characters) The character or string to use to separate the names of nested columns (for embedded documents and arrays). Note: It is assumed that the separator is not used in column names. By default, MongoDB uses a period (.) as the separator. www.simba.com 35 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Default Value Description Omit default NULL columns on insert (OmitColumns) Selected (1) When this option is enabled (1), no null values (whether explicitly provided or not) are written to the columns of a table. When this option is disabled (0), explicitly provided null values are written to columns as specified, but no default null value is inserted. Note: This option affects INSERT operations only. Read preference (ReadPreference) primary Replica set name (ReplicaSetName) Sampling strategy (SchemaDetectSampleStrategy) www.simba.com Specify how the driver routes read operations to the members of a replica set. The following values are possible: • primary • primaryPreferred • secondary • secondaryPreferred • nearest For more information, see “Replication” in the MongoDB Manual at http://docs.mongodb.org/manual/replicat ion/ The name of the replica set for the driver to access. Note: This option is available only if the Connect to a replica set option is enabled (the UseReplicaSet key is set to 1). End The location in the table to sample rows from when detecting schema. The following values are possible: • Start • End • Random 36 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Default Value Description Show array counts in virtual main table (VTMainTableShowArrayCounts) Clear (0) When this option is enabled (1), the array count column appears in the main virtual table. When this option is disabled (0), the column does not appear. Show container columns when generating metadata (SchemaDetectShowContainerColumns) Clear (0) When this option is enabled (1), documents and arrays appear as columns in JSON format in the real table. When this option is disabled (0), documents and arrays do not appear as columns in the real table. Note: This option does not affect virtual tables. Standard (DefaultStringColumnLength) 255 The default column length for String columns. MongoDB does not provide the length for String columns in its column metadata. The option allows you to tune the length of String columns. Truncate documents larger than 16MB (TruncateDocument) Clear (0) When this option is enabled (1), the driver truncates any document that is greater than 16MB in size. When this option is disabled (0), the driver rejects any document that is greater than 16MB in size. Update Metadata (ImportSchemaMapFrom) Use SQL_WVARCHAR for string data types (UseSqlWVarchar) www.simba.com The full path to a Schema Database Definition (SDD) file from which to import metadata. Important: Including the key in a connection string imports the specified SDD file. After importing the desired SDD file, remove the key from the connection string. Clear (0) When this option is enabled (1), the MongoDB String type is mapped to SQL_WVARCHAR instead of SQL_VARCHAR. When this option is (0), the String type is mapped to SQL_VARCHAR. 37 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Default Value Username (UID) Description The login credential to use when accessing the MongoDB database. Validate BSON before writes (ValidateBsonBeforeWrite) Selected (1) By default, MongoDB does not validate BSON objects before INSERT or UPDATE operations, which can result in a corrupted database. When this option is enabled (1), the driver validates all content prior to passing the content to the database server. When this option is disabled (0), the driver does not validate BSON objects. Virtual key column separator (VTKeyColumnSeparator) . (a period character) The separator for generated column names in a virtual table. The name of a key column in a virtual table uses the following format: OriginalTable<VTKeyColumnSeparator>_i d For example, OriginalTable._id Virtual main table name suffix (VTMainTableNameSuffix) main The suffix for naming the main virtual table. The name of a virtual main table uses the following format: OriginalTable<VTTableNameSeparator>< VTMainTableNameSuffix> For example, OriginalTable_vt_main Virtual table array count prefix (VTArrayCountPrefix) Number of The prefix for naming a generated array count column in a virtual table. The name of an array count column in a virtual table uses the following format: <VTArrayCountPrefix>ArrayColumnName For example, Number of ArrayColumnName www.simba.com 38 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Default Value Description Virtual table index column suffix (VTIndexColSuffix) index The suffix for naming generated columns in a virtual table that indicate the position/index of an element into an array. The name of an array index column name uses the following format: ArrayColumnName<VTTableNameSeparat or><VTIndexColSuffix> For example, ArrayColumnName_vt_index Virtual table name separator (VTTableNameSeparator) _vt_ The separator for naming a virtual table built from an array column. The name of a virtual table uses the following format: OriginalTable<VTTableNameSeparator> ArrayColumnName For example, OriginalTable_vt_ArrayColumnName N/A (ArrayColumnMax) 5 The number of array columns to generate when detecting schema for a table. www.simba.com 39 Installation and Configuration Guide Simba ODBC Driver with SQL Connector for MongoDB Field or Button Label (Key Name) Default Value Description N/A (CacheMetadata) 1 Simba ODBC Driver with SQL Connector for MongoDB dynamically detects the database schema as needed in the process of connecting to a MongoDB database. By default, the driver stores the metadata for reuse. When you disable metadata caching by setting the CacheMetadata key to 0, the driver regenerates the metadata every time the driver accesses the database. If you disable metadata caching, then the driver continues to save schema definitions that you set using the Schema Definition dialog box. For information about using the Schema Definition dialog box, see Defining a Schema for the Driver to Use on page 13. Important: Caching metadata is useful when defining the schema for your MongoDB database. After the schema is defined, disable metadata caching in your production environment. N/A (DefaultBinaryColumnLength) 32767 The default column length for Binary columns. N/A (VTInsertUpdateSafeMode) 0 VTInsertUpdateSafeMode is no longer used. Table 2 Advanced Configuration Options www.simba.com 40
© Copyright 2024