How does the DynamoDB Driver handle complex types like Maps and Lists

Types such as Maps and Lists are difficult to apply to single column and therefore must be normalized. Maps are flattened into multiple columns with each Map Attribute defined as a column. Lists are virtualized into a child or right table that can be joined to the parent or left table. The child table consists of a primary key and index column and a value column. List entries are expanded row-wise with one entry per row.

What about Sets

Sets are virtualized into child tables similar to Lists. The only difference is that because Sets are unique; they do not require an artificial index to maintain primary key uniqueness.

How does the DynamoDB Driver handle Read Units

Because the DynamoDB driver is querying your DynamoDB instance, it consumes Read Units the same way any other application would. The driver will attempt to reduce its read unit footprint by using the query API when filters are applied to a primary key. To maximize performance the driver will attempt to maximize its throughput usage to retrieve results as fast as possible. This maximum can be reduced using the driver wide throttling settings located in the Advanced Settings Dialog. More information on Read Units can be in the DynamoDB documentation found here.

How does the throttle work?

The throttle attempts to limit the throughput consumption of the driver to a certain percentage of the total available throughput. This is not an exact science as there are a number of factors that make client side throttling and imprecise science.

The throttle works by attempting to calculate the number of items that can be requested by the driver per second in order to achieve the desired throughput. There are two limitations with this approach. The first issue is that the metadata used in the throttling calculation only updates every 6 hours. So if you have tables that change frequently this calculation will be inaccurate. Secondly, the calculation assumes a relatively consistent item size, so if you have disproportionate data the calculation may also be inaccurate.

What happens if the throughput available on the server is less than what is required by the driver

If the driver sends a request that exceeds the currently available throughput, the server will return a ThroughputExceeded error. By default, the driver will catch this error, backoff and retry the operation up to 5 times. This maximum retry count can be configured in the Advanced Settings Dialog.

Does the DynamoDB Driver support multithreading

The DynamoDB driver supports multithreading on read operations. The number of threads can be configured using the schema editor.


General FAQ for all drivers

Licensing


Where is my license file?

It is sent in a separate email when you download the driver. Please check your junk folder as strict filters may incorrectly mark the license email as spam

How do I install my license file?

License location is product and platform specific, but generally, the license file should be placed in the same folder where the driver files (.dll, .so, .dylib or .jar) are located. Detailed instructions on how to install the license are provided in the email with which you received the license file and in the User Guides.

I get the following error when I attempt to connect, how do I fix it?

The license file “<…snip…>” could not be found. Please contact your administrator or Simba Technologies Inc. at sales@simba.com.

The customer should find their license file in their email and place it in the location indicated in the error message.

I get an error when trying to copy the license file from Outlook to my Program Files directory.

This is due to Windows permissions, you must first copy it to your desktop and then into your Program Files directory.

Can I use a license file for one platform on another platform?

No, licenses are specific to platform, but not bitness.

Can I use a license file for one bitness with the other bitness?

Yes, licenses are specific to platform, but not bitness.

Do I need to have a copy of the license file with both the 32 and 64-bit driver, or just one?

Yes, the license file needs to be present for each driver and bitness you use.

General ODBC


I cannot see the DSN I’ve created in my application

This is usually due to a mismatch in bitness between the application and driver. The driver bitness (32 or 64-bit) must match the application bitness. Please see the Bitness section for more information.

I cannot see the driver I've installed in the ODBC Administrator.

This is usually because the wrong bitness of ODBC Administrator is being used, please see https://cdn.simba.com/wp-content/uploads/2010/10/HOW-TO-32-bit-vs-64-bit-ODBC-Data-Source-Administrator.pdf for how to access the correct one.

ERROR: Data source name not found and no default driver specified

If you can see your DSN in the ODBC Administrator, but your application reports this error, then most likely you created a User DSN and the application or the data access process runs under a different user account. If this is the case, then the application/process will not be able to detect the User DSN. Using a System DSN may resolve this issue since they are accessible by all processes running on the local machine. If the error persists with the System DSN, it is possible that the application or process trying to load the driver has a different bitness than the driver. See the previous answer to correct this problem.

I get the following error when I try and connect: “The specified DSN contains an architecture mismatch between the Driver and Application.”

This is due to a mismatch in bitness between the application and driver. The driver bitness (32 or 64-bit) must match the application bitness. Please see the Bitness section for more information.

Where is the driver installed?

The ODBC driver must be installed on the same machine that the application is running on. If using a desktop application like Excel, then it must be installed on the desktop. If using a server application like Tableau Server, it must be installed on the server machine.

What format do dates use?

YYYY-MM-DD

How do I enable logging in the driver?

On Windows, open ODBC Administrator, go to the System DSN tab, select your DSN and hit Configure. Then Click the Logging Options button, add your logging settings and click OK and OK to save the settings. Restart the application you are using the driver with for changes to take effect.

In OSX or Linux platforms, you must modify the simba.<driverName>odbc.ini file. For example, for Salesforce, this is simba.salesforceodbc.ini. The default location for this file is INSTALL_DIR/lib/<bitness>. Add the following under [Driver]. 6 is the highest log level(Trace). Restart the application you are using the driver with for changes to take effect.

LogLevel=6

LogPath=/path/to/logs

For a step by step guide visit How do I enable logging in an ODBC driver?

Or for more information, see the install guide for your driver.

How do I enable logging in the driver manager?

For Windows: Open ODBC Administrator, go to the Tracing tab then provide a Log File Path, including file name. Click Start Tracing Now, then open your application. Click Stop Tracing now to finish.

OSX and Linux:

iODBC – in your odbc.ini file add the following:

[ODBC]

Trace=1

TraceFilePath=/path/tofile/tracefile.log

Debug=1

DebugFilePath=/path/tofile/debugfile.log

unixODBC – in your odbcinst.ini file add the following:

Trace=yes

TraceFilePath=/path/tofile/tracefile.log

See this blog post for more information.

What format do times use?

hh:mm:ss

What format do timestamps use?

YYYY-MM-DD hh:mm:ss[.fffffffff]

I get the following error: (Simba)(ODBC)(11560) Unable to locate SQLGetPrivateProfileString function

This is due to not setting the ODBCInstLib in the .simba.<driverName>odbc.ini correctly. Please refer to the .ini file and uncomment the correct ODBCInstLib line as indicated by the comments to match the driver manager that you are using.

How can I test connectivity on non-Windows platforms?

When using iODBC as the driver manager you can use the iodbctest application provided as part of iODBC.

When using unixODBC as the driver manager you can use the isql application provided as part of unixODBC.

Are parameters supported?

Yes, parameters are supported for all drivers. Note that the syntax for parameters follows ODBC, and you use the ? as a parameter marker. For example: “SELECT * FROM T1 WHERE C1 = ?”

Bitness Specific


Do I need to use a 64-bit driver on a 64-bit OS?

No, virtually every 64-bit OS can run 32-bit programs. Instead, you should match the bitness of the driver to the bitness of the application you wish to use the driver with.

How can I tell the bitness of my application (in general)?

On Windows 64-bit, open the Task Manager and go to the Processes tab. Locate the name of the application that is running, and if it has a “*32″ beside the name then it is a 32-bit application.

How can I tell the bitness of Excel?

Excel 2007 and earlier are all 32-bit.

Excel 2010: Click the File tab and then click Help in the left navigation pane. The bitness will show up at the end of the version number.

Excel 2013: Click the File tab and then click Account in the left navigation pane, then click the About Excel button. The bitness will show up at the end of the version number.

How can I tell the bitness of PowerBI

Expand the main PowerBI ribbon and open the Help section. Clicking on the About item will open a Dialog containing version information including bitness.

How can I tell the bitness of QlikSense

QlikSense normally installs as a 64-bit application when downloaded from the website, however, its bitness isn’t really relevant, as QlikSense will allow you to connect to either 32 or 64-bit DSNs.

How can I tell the bitness of Tableau?

Tablea 8.0 and earlier are all 32-bit.

Tableau 8.1 and later: Click the Help menu item, then click About Tableau. The bitness will show in the top right hand corner of the dialog.

Tableau Specific

Will my generic ODBC driver work with Tableau on a Mac?

No, Tableau does not currently support generic ODBC connections on Mac. Please see: http://kb.tableau.com/articles/issue/generic-odbc-data-connection-unavailable-on-the-mac.

Linked Server


Insert, Update, and Delete fail with an error saying the Linked Server doesn’t support the required transaction interfaces.

Linked Server does not use ODBC natively, it uses OLE DB and to talk to ODBC it uses the Microsoft OLE DB to ODBC bridge. This is where the problem arises. You can work around this by disabling transactions for DML queries with the provider. Delete the linked server connection to MongoDB, then open the Linked Server Providers and right click on the MDASQL one. Select the “Non-transacted updates” and then recreate the linked server and try again.

Why do I get an error about unsupported conversions?

Because Linked Server uses the OLE DB to ODBC bridge, conversions are dependant on the bridge. This bridge does not support conversions when character columns have more than 8000 characters, so limiting the size of columns to 8000 characters allows this to work. Some drivers have configurable character lengths, so setting this will fix the error. In other cases, simply omitting the column will also resolve the issue

Why does TOP not work when querying the Linked Server directly?

This is a known bug and has been resolved. If the driver you are using has this problem, contact Simba to obtain the latest version of the driver.

How do I set up a Linked Server?

Please refer to the Quickstart guide that comes with the driver for information on how to create a Linked Server, or contact Simba to obtain the latest information