2009-11-18 22 views
15

Durante mucho tiempo, he estado usando servidores MySQL para manejar datos (en JAVA, y en C#). Pero últimamente, he estado escuchando cosas buenas sobre LINQ y SQL Server. He estado pensando en convertir, pero no sé mucho sobre SQL Server.C# - MySQL vs Microsoft SQL Server

Cualquiera que haya usado SQL Server anteriormente, defina qué tan bien se compara con el servidor MySQL en términos de rendimiento y usabilidad.

También he oído que SQL Server sería mejor para C#, ya que está básicamente construido en.

+0

Esto debería ayudar con una comparación general de los dos, independientemente de C#: http://tinyurl.com/yll4aro –

+0

No creo que esto merezca una respuesta completa, pero comentaré que creo que es raro que la gente utilice el CLR en SQL Server para su acceso de datos principal. ADO.NET, LINQ y Entity Framework parecen ser las principales opciones. –

+0

Si está interesado en usar LINQ, entonces realmente no necesita saber mucho sobre SQL Server. Todo el propósito es que LINQ abstraiga el acceso a los datos para que no escriba directamente consultas SQL. –

Respuesta

54

He usado SQL Server durante muchos años en proyectos C# grandes y pequeños, pero he estado utilizando principalmente MySQL durante el año pasado en varios proyectos C# (pero relacionados con fuente abierta y relacionados con startups) que ya estaban usando MySQL .

¡Extraño SQL Server! En mi experiencia, SQL Server es mejor en muchos aspectos:

  • el optimizador de consultas en SQL Server es más inteligente, lo que significa que a menudo puede generar consultas y producirán planes de consulta óptimos. Con MySQL, me encuentro dedicando más tiempo a la sintonización manual, incluso consultas relativamente simples para producir buenos planes de consulta.
  • el motor de base de datos subyacente en SQL Server puede hacer una variedad más amplia de cosas para aumentar el rendimiento. por ejemplo, todas las uniones en MySQL son uniones de bucle anidadas, mientras que SQL Server puede hacer uniones Hash o unir uniones, lo que a veces puede aumentar el rendimiento de las consultas en 10x +. SQL Server también puede paralelizar consultas que, especialmente para grandes cargas de trabajo de almacén de datos, pueden aumentar drásticamente el rendimiento.
  • las herramientas de GUI están muy por delante. El optimizador de consultas de planes gráficos de SQL Server hace que la optimización de consultas sea muy fácil: nunca querrá volver a EXPLAIN EXTENDED. Las herramientas de supervisión gráfica de SQL Server 2008 son mucho más sencillas que buscar en el registro lento de consultas para descubrir qué es lo que está fallando. Y así.
  • Como mencionaste, la historia de integración de .NET (C#, Linq, Entity Framework, etc.) en SQL Server es mejor. También uso C#, Entity Framework y LINQ con MySQL, por lo que no es una cosa o lo otra, aunque es probable que el rendimiento sea mejor con SQL Server en un entorno .NET porque los equipos trabajan juntos para mejorar el rendimiento y mejorar la integración. .
  • El soporte de SQL de SQL Server es más rico que MySQL, incluidas algunas características muy interesantes (especialmente en SQL 2008) como ROW_NUMBER(), GROUPING_SETS, OPTIMIZE FOR, computed columns, etc.
  • La copia de seguridad es mucho más rápida, especialmente en SQL 2008 con copias de seguridad comprimidas
  • No hay una nube de adquisición de Oracle pendiente sobre el futuro de SQL Server.
  • SQL Server (especialmente las costosas ediciones) vienen con otros extras, como un almacén de datos OLAP (SSAS), una solución de informes (SSRS), una herramienta ETL (SSIS), un programador (Agente SQL), etc. obtenga herramientas de código abierto similares, de forma gratuita (por ejemplo, Pentaho, BIRT, etc.) pero la integración tiende a ser mejor con SQL Server.

Dicho esto, también hay desventajas significativas, que pueden o no estar repartir-trituradores para usted:

  • le pegan usando los servidores de Windows, con todas las ventajas y desventajas que esto conlleva
  • SQL Server, especialmente las ediciones de gama alta, son expensive! Para pequeños DB's (< 4GB, creo), SQL Server Express es gratuito, y tiene casi todas las funciones del servidor SQL, si sabes que tus datos serán pequeños y sabes que tu jefe es un tacaño. , Express es el camino a seguir. Además, existe una nueva Edición Web de SQL Server 2008 que, en teoría, para aplicaciones web orientadas a Internet debería ofrecer alojamiento barato, ya que el costo para un proveedor de servicios de Internet es de solo $ 15/mes por procesador.
  • No es de código abierto. Algunas compañías y equipos de desarrollo son muy apasionados por esto, por buenas razones (depuración, costo, filosofía, etc.).
  • relacionado con lo anterior: si quiere que se solucione un error en MySQL, y tiene las habilidades, puede solucionarlo usted mismo. Con SQL Server, hay errores dolorosos en el procesamiento de consultas, la optimización, etc. que persisten durante años. He pasado una cantidad absurda de tiempo trabajando con algunos de ellos.
  • para cargas de trabajo muy simples, de solo lectura (o no transaccionales) (por ejemplo, acceso a caché basado en DB desde una aplicación web) donde se puede usar MyISAM en lugar de InnoDB. Escucho que MySQL puede ser significativamente más rápido .

Advertencia: escuché que se supone que MySQL 6.0 soluciona muchos de los vacíos y diferencias anteriores, pero no me he mantenido al día con la forma en que lo de Oracle, etc. afectará el calendario y/o conjunto de características

re: su "C# está incorporada" nota: sí, puede desarrollar procedimientos almacenados, funciones, agregados, etc. usando lenguajes .NET, pero en mi humilde opinión, en la mayoría de los escenarios esto es más problemas de lo que vale, incluyendo porque la implementación es más difícil y los DBA son menos cómodos con el código .NET en sus servidores. La verdadera victoria para una combinación de C# + .NET + Visual Studio + SQL Server, en mi humilde opinión, es que han sido diseñados en paralelo durante los últimos 10 años para que todos funcionen bien juntos, por lo que obtendrá la facilidad de uso y la sinergia que necesita. puede no obtener el uso de MySQL. Dicho esto, como mencioné anteriormente, este no es un factor decisivo o un factor decisivo ... es más sencillo al usar SQL Server con el resto de la pila de Microsoft.

En resumen, déjeme aclarar que, para muchas cargas de trabajo DB, MySQL es lo suficientemente bueno-- funciona, es estable, es rápido, tiene herramientas razonablemente buenas, etc. ¡Y es asequible! :-) Nunca rechazaría un proyecto simplemente porque están usando MySQL. Pero la comparación es como conducir un Honda frente a un BMW ... el Honda lo lleva a donde quiere ir, pero si su billetera lo puede llevar, disfrutará mucho más con el Bimmer. :-)

+1

+1, respuesta muy completa. –

+1

Recuerde que la Edición web es únicamente para aplicaciones o sitios web orientados al público, no intranets. – MartW

+1

Agregaré que mySQL puede ser más rápido para consultas más simples. Otra opción es PostGreSQL, se encuentra entre los 2. Se puede escalar a tamaños Enterprise al igual que (algunos dicen que mejor) que el servidor MS SQL. No cuesta un bazillion de dólares como SQL Server puede (mucho uso depende de todos modos). –

1

LINQ es un lenguaje en sí mismo y no está vinculada a una base de datos específica o incluso a una base de datos. Realmente es solo una herramienta para la manipulación de colecciones de datos estructurados. El lenguaje subyacente en el que se escribe el DBMS no debería importar en términos de con qué idioma lo use.

+4

LINQ to SQL está muy ligado a SQL Server. – LukeH

+0

Eh, un poco. No hay soporte oficial de MS para linq a mysql, pero hay un proyecto de código abierto que tiene un proveedor de MySQL. –

+0

@Chris: si te metes en el mundo del "hackeo" (este término suena más negativo de lo que pretendo), entonces todas las apuestas están apagadas. En términos de verdadero LINQ-a-SQL (en comparación con, por ejemplo, Entity Framework), está directamente relacionado con SQL Server. De hecho, incluso tiene problemas con SQLCE. –

1

C# tendría acceso a MySQL y SQLServer básicamente idéntico con ADO.NET (o LINQ - LINQ a SQL está vinculado a SQL Server, pero no parece tener una larga vida por delante), por lo que no sería ser un factor en mi mente, aunque la integración IDE podría serlo.

Las ventajas de SQL Server incluirían la gama más completa de soporte de desarrollo dentro de SQL Server, el Agente y la programación, el modelo de seguridad y la indexación, ajuste y otras características como Integration Services, Reporting Services y Analysis Services que lo hacen relativamente fácil de administrar grandes infraestructuras del sistema.

No creo que haya dado suficiente información sobre su sistema para hacer la elección entre ellos obvia en este punto.

4

Utilizo ambos bastante regularmente, y actualmente estoy estudiando para mi Sql Server MCTS, así que probablemente pueda hacer algunos comentarios útiles aquí.

SQL Server es una base de datos mucho, mucho, mucho más completa, especialmente la versión 2008. MySQL ni siquiera admite restricciones de columna (por ejemplo, crear una columna int y restringir el valor entre 1 y 1000, no se puede aplicar automáticamente en MySQL). SQL Server ofrece indexación de texto completo, manipulación y columnas XML nativas, múltiples modos de transacción, ofertas de seguridad complejas, funciones distribuidas y de replicación, y una gran suite de administración.

En cuanto a su comentario de C#, sí, SQL Server tiene la capacidad de importar objetos CLR, lo que significa que puede compilar algún código .Net y soltarlo en SQL Server y tener funciones de base de datos que lo utilicen. Esto es especialmente útil para crear nuevas funciones agregadas, ya que puede omitir los cursores y usar bucles de códigos CLR más rápidos.

También puede optimizar SQL Server hasta la empuñadura, hasta los modos de bloqueo y aislamiento que utiliza, y la CPU/memoria que puede usar un hilo determinado.

MySQL, por otro lado, es gratis y relativamente fácil de configurar, con suficientes opciones que la mayoría de los propietarios de sitios web están muy felices de usarlo para sus aplicaciones CRUD básicas.

Si desea utilizar Linq2Sql, necesita SQL Server. Si necesita toneladas de características avanzadas, SQL Server es el camino a seguir con seguridad.

+0

Gracias por la información. Pero, ¿qué pasa con la portabilidad, el servidor SQL Compact es realmente "portátil" como MySQL? – TheAJ

+1

SQL "Compact" es mucho más portátil que MySQL; pensar en ello como análogo a SQLite. –

1

Desde el punto de vista del desarrollo he trabajado tanto como desarrollador de Java como desarrollador de C# (conectando ambos en varios proyectos, Java a SQLServer, Java a MySQL, C# a MySQL, C# a SQLServer). Personalmente, realmente no noté tanta diferencia, aunque no estaba haciendo nada demasiado complejo. No creo que haya demasiado de lo que preocuparse si piensas que habrá una curva de aprendizaje abrupta a menos que desees profundizar en algunas cosas específicas del servidor. Hay algunas diferencias menores, pero nada que alguien no pueda detectar rápidamente.

2

He trabajado con ambos, aunque mucho más con SqlServer. En una tienda grande, especialmente una donde muchas decisiones arquitectónicas de aplicaciones surgen de DB Architects, SQL Server ofrece más. Replicación, SSIS, etc. Pero, eso agrega MUCHA complejidad, y en mi experiencia ha sido la fuente de una buena porción de interrupciones operativas.

Pero como almacén de datos para una aplicación de software, MySql hace lo que necesita y es sencillo, confiable, rápido y simple.

Hablando estrictamente filosóficamente, realmente quiere la lógica de su aplicación en su código de aplicación, no en SQL complejas y definiciones de restricciones. Vaya por lo básico en su almacén de datos y ponga el tiempo que ahorra en el programa mismo.

+0

Su último comentario acerca de tener lógica de aplicación en su código de aplicación es la sabiduría predominante. He trabajado en muchas aplicaciones empresariales que tienen mucho del código de procesamiento de datos en procedimientos almacenados y funciona bien y es más rápido que tenerlo en código. – infocyde

1

Ha considerado una base de datos de código abierto con más funciones como PostgreSQL. No hay nada de malo en SQL Server, pero comienza a engancharte en un software licenciado del que puedes mantenerte alejado si permaneces con una parte de código abierto. Todo depende de si te parece bien.

Cuestiones relacionadas