tediousjs / tedious

Node TDS module for connecting to SQL Server databases.
http://tediousjs.github.io/tedious/
MIT License
1.58k stars 436 forks source link

Tedious Survey Results (May 2017 - Jan 2018) #690

Closed David-Engel closed 4 years ago

David-Engel commented 6 years ago

Here are the survey results from the Tedious survey which ran from May 2017 to January 2018.

In what projects do you mostly use Node.js + SQL Server?

Order Answer Responses Percent
1 Enterprise Projects 20 41%
2 Small-Medium Business Projects 23 47%
3 Personal Projects 5 10%
4 Prototyping only 1 2%
  TOTAL 39 100.00%

What types of projects do you use Node.js with SQL Server for? (Select all that apply)

Order Answer Responses Percent
1 Web Applications 41 84%
2 Back-end Applications 37 76%
3 Desktop Applications 6 12%
4 Mobile Applications 14 29%
5 IoT Projects 1 2%
6 Data Science/Machine Learning Projects 3 6%
7 Other, please specify: [Open-ended answer] 1 2%
  Etl batch jobs
  (49 Respondents)    TOTAL 103

What driver do you use to connect your Node.js apps to SQL Server?

Order Answer Responses Percent
1 tedious (https://github.com/tediousjs/tedious) 23 47%
2 mssql (https://github.com/patriksimek/node-mssql) 16 33%
3 msnodesql (https://github.com/Azure/node-sqlserver) 3 6%
4 msnodesqlv8 (https://github.com/TimelordUK/node-sqlserver-v8) 3 6%
5 Other, please specify: [Open-ended answer] 4 8%
  We use tedious, but mostly via sequelize and sometimes with node-mssql.  
  Sequelizejs  
  https://github.com/mysqljs/mysql  
  https://github.com/mysqljs/mysql  
  TOTAL 49 100.00%

What are the best attributes of your driver? (Select all that apply)

Order Answer Responses Percent
1 Pure Javascript implementation 19 39%
2 Performance 15 31%
3 Connection Resiliency 14 29%
4 Ease of Use 30 61%
5 Ease of Setup 26 53%
6 Compatibility with older SQL Server versions 5 10%
7 Database Feature Completeness 11 22%
8 Other, please specify: [Open-ended answer] 3 6%
  officially supported by Microsoft  
  simplicity, raw access  
  Windows Authentication for SQL Server!  
  (49 Respondents)    TOTAL 123

What improvements would you like to see in your driver? (Select all that apply)

Order Answer Responses Percent
1 Performance 21 43%
2 Connection Resiliency 21 43%
3 Ease of Use 22 45%
4 Ease of Setup 13 27%
5 Compatibility with older SQL Server versions 4 8%
6 Database Feature Completeness 16 33%
7 Other, please specify: [Open-ended answer] 13 27%
  json to xml procedure parameter conversion.  
  Don't know yet  
  Windows Auth in Tedious. Windows Auth, Windows Auth, WINDOWS AUTH  
  Promise support  
  connection pooling  
  MsSql 2016  
  none  
  More examples best practices  
  Sample code and sample projects.  
  Especially performance related to serialization.  
  Windows integrated auth from Linux  
  Didn't have any issues  
  Event hooks, like node-postgres with triggers.  
  (49 Respondents)    TOTAL 110  

What is the one most necessary thing that needs to improve in your driver?

Order Answer Responses Percent
1 Open-ended answers 22 100%
  Better patterns for writing safe code without falling into callback hell.  
  ?  
  I don't want msnodeqlv8 improved. I want Microsoft to implement Windows Authentication for SQL Server in Tedious. Insane that the PR and feedback haven't resulted in Windows Auth for SQL Server in Tedious yet. Need help MS?  
  Support latest version of Node  
  More feature-parity with the .NET SqlClient driver  
  connection pooling with resiliency  
  Connection pooling. Need that performance.  
  Needs an async interface (Promises, async/await). Instead of wrapping it with another library like tedious-promises.  
  No really necessary changes. A more modern async/await API would be great now that those have landed in Node.js LTS.  
  Can't think about for now.  
  Documentation maintenance.  
  Documentation  
  More useful error reporting.  
  Serialization performance. Receiving large data sets can take a long time and use an incredible amount of blocking CPU.Using a streaming interface can be helpful, but often it doesn't make sense when you only need 1000 rows and need to buffer all of them.  
  JSON support.  
  Would like to use table value parameters outside of stored prices (mssql's .query() function, instead of .execute())  
  TOTAL 16 100.00%  

How important is it to fix the improvement you mentioned in the previous question? (1-5, where 5 is the highest importance)

Order Answer Responses Percent
1 5 15 38%
2 4 12 31%
3 3 2 5%
4 2 3 8%
5 1 2 5%
6 N/A 5 13%
  TOTAL 39 100.00%

What platform do you use for your development environment?

Order Answer Responses Percent
1 macOS 14 29%
2 Red Hat/CentOS 4 8%
3 Ubuntu/Debian 7 15%
4 SUSE 0 0%
5 Windows 21 44%
6 Other, please specify: [Open-ended answer] 2 4%
  windows, debian, centos  
  archlinux / docker / alpine linux  
  TOTAL 48 100.00%

What platform do you use for your production environment?

Order Answer Responses Percent
1 macOS 0 0%
2 Red Hat/CentOS 9 19%
3 Ubuntu/Debian 14 30%
4 SUSE 0 0%
5 Windows 19 41%
6 Other, please specify: [Open-ended answer] 4 8%
  Anywhere Node runs - Windows, Linux, Mac  
  windows, debian, centos  
  Amazon Lambda  
  ubuntu / docker / alpine linux  
7 I don't run Node.js in production 1 2%
  TOTAL 47 100.00%

What version of SQL Server are you using your driver against? (Select all that apply)

Order Answer Responses Percent
1 Azure SQL Database 10 21%
2 Azure SQL Data Warehouse 0 0%
3 SQL Server 2017+ 6 12%
4 SQL Server 2016 14 29%
5 SQL Server 2014 5 10%
6 SQL Server 2012 5 10%
7 SQL Server 2008 R2 6 12%
8 SQL Server 2008 0 0%
9 SQL Server 2005 0 0%
10 Other, please specify: [Open-ended answer] 3 8%
  2008-2014  
  I usually use AWS.  
  mariadb  
  TOTAL 49 100.00%

What version of Node.js are you primarily using?

Order Answer Responses Percent
1 Node.js v7.x 28 57%
2 Node.js v6.x 13 27%
3 Node.js v5.x 0 0%
4 Other, please specify: [Open-ended answer] 8 16%
  v8.9.1  
  Node.js v8.6  
  v8.x now, previously v7.x  
  Node.js v8.x  
  8.9  
  8.0.0  
  TOTAL 49 100.00%  

What Javascript frameworks do you integrate with your driver?

Order Answer Responses Percent
1 ReactJS 12 27%
2 Express.js 36 82%
3 Meteor 0 0%
4 AngularJS 8 18
5 Angular2 10 23%
6 jQuery 9 20%
7 ember.js 1 2%
8 Vue.js 5 11%
9 Backbone.js 2 5%
10 D3.js 2 5%
11 Other, please specify: [Open-ended answer] 4 9%
  Feathers.js  
  knockout.js  
  We also use in-house libraries for interacting with Kafka.  
  KnockoutJS  
  (44 Respondents)    TOTAL 89  
arthurschreiber commented 6 years ago

@David-Engel Thank you SO MUCH for posting these! 👍 😍

arthurschreiber commented 6 years ago

I got to say, I love that sole user that apparently uses tedious to connect to mariadb. 🤣

David-Engel commented 6 years ago

For the couple of users who responded that they would like connection pooling, I wonder if they know about https://github.com/tediousjs/tedious-connection-pool. I also wonder if that library is being kept up-to-date with the latest release of tedious. It looks pretty simple. Is that something we should contribute to? Or maybe integrate it into tedious? Just wondering...

Suraiya-Hameed commented 6 years ago

@David-Engel tedious-connection-pool is not actively maintained. There are packages in npm that allow connection pooling via tedious, for now it would be best to direct users to use them 🤔 mssql and sequelize(ORM) are widely used ones.

spanditcaa commented 6 years ago

an offer to maintain it: https://github.com/tediousjs/tedious-connection-pool/issues/48