2008-10-10 23 views
7

Me he estado preparando para presentar una presentación en SQL Server Compact Edition 3.5 (SP1 - lanzado recientemente) y me preguntaba si alguien había diseñado (o contemplaba diseñar) un sistema con SQL Server CE 3.5 (o versiones anteriores)?¿Alguien ha usado (o considerado usar) Sql Server Compact Edition?

En particular, ¿alguien ha pensado (o experimentado) utilizando SQLCE como una solución para el almacenamiento de datos fuera de línea (como parte de un diseño de sistema conectado)?

La versión 3.5 parece ser bastante rica en funciones en comparación con sus predecesoras, ¿está lista para una seria consideración (ahora que admite LINQ to SQL, columnas de identidad y una variedad de T-SQL importantes)?

¿Consideraría usarlo si tuviera la necesidad de una base de datos basada en archivos liviana y poco compacta (especialmente si necesitara soporte en dispositivos móviles y sistemas de escritorio), o hay mejores opciones?

Respuesta

9

En el trabajo, recientemente tuvimos que migrar un proyecto que fue diseñado para SQL Server Express a SQLCE. Al principio pensé que iba a ser horrible, principalmente debido al hecho de que no hay procedimientos almacenados. Sin embargo, una vez que empezamos a investigar, y vimos lo que OFRECE, estábamos convencidos de que era el movimiento correcto. Es compatible con LINQ, la consulta de muchos datos tomó MUCHO más rápido de lo que pensábamos. La inserción y la actualización fueron un poco más lentas, pero realmente nada mal. Los únicos problemas que encontramos realmente fueron A) Management Studio 2005 no lo admite, y aunque 2008 sí lo hace, es muy limitado. No estoy seguro de por qué, con suerte cambiarán eso para lanzamientos futuros, pero me fastidió muchísimo. B) Al intentar migrar un DB de SQL Server existente a un SQLCE, realmente no existe una manera fácil de crear el esquema a partir del existente y mover todos los datos. Probablemente tendrá que hacer rodar su propia herramienta para hacerlo (tuvimos que hacerlo).

Sin embargo, dicho todo esto, el resultado final fue increíble.El tiempo de instalación se redujo a un tercio ahora que los usuarios no tenían que instalar SQL Express, y la aplicación funcionó mucho mejor en máquinas con menos memoria. En general, me sorprendió lo bien que realmente funciona.

+0

Eso es bastante interesante, ¡especialmente el rendimiento! Hiciste alguna evaluación comparativa? – RobS

+0

Además de reducir el tiempo de instalación, nunca hicimos ningún bechmarking. Sin embargo, para grandes consultas, funcionó notablemente bien. Lo único que no pudo manejar en las consultas fue Left Outter Joins. HOMBRE esos tomaron PARA SIEMPRE. Un día, cuando esté aburrido, haré una evaluación comparativa. – BFree

+0

http://www.oracle.com/technology/products/berkeley-db/index.html podría ser una alternativa, no una alternativa de SQL, pero podría abstraerse como un mapa hash persistente. –

6

Probé varias versiones de SQLCE y siempre terminé usando el excelente ADO.NET SQLite implementation - es más liviano, más rápido, más fácil de usar (al menos para mis propósitos), y es portátil para casi todas las plataformas.

0

Probé SQLCE varias veces. Siempre terminé usando algo más (Firebird (embedded), SQLite, VistaDB). IMO SQLCE es limitado a ser útil en escenarios más o menos complejos. Aunque no tengo experiencia en el mundo real con la última versión (3.5) pero sospecho que todavía apesta :)

0

He ayudado a desarrollar y mantener un software PDA que utiliza SQL Server CE 2.0. Creo que está bien siempre y cuando sepas dónde están los límites.

4

Actualmente uso SQL CE con NHibernate en una aplicación empresarial donde la base de datos SQL CE se sincroniza con Sync Framework a través de WCF a un servidor SQL 2008. ¡Funciona de maravilla! especialmente generar la base de datos a partir de archivos de mapeo nhibernate es simplemente increíble.

pero incluso cuando se utiliza linq2sql ¡funciona bastante bien!

+0

wow, ¡eso suena como un proyecto realmente interesante! ¿Cómo encontraste el marco Sync? – RobS

+0

En segundo lugar ese comentario. ¿Alguna posibilidad de que publique una publicación sobre su implementación? –

0

He usado SQLCE una vez, para un ejercicio que he recibido en una entrevista de trabajo, y fue suficiente para eso. Ahora, cada vez que necesito tal funcionalidad, uso sqlite o firebird.

La usabilidad de SQLCE para ese ejercicio fue muy buena. Es rápido, tiene un buen editor visual y está bien integrado en Visual Studio.

En pocas palabras: si puede manejar las limitaciones de SQLCE, y está SEGURO de que no necesitará más que eso, úselo.

0

Si se usa en un dispositivo móvil, entonces no puede usar Linq para SQL.

la usamos y que es agradable, pero LINQ to conjunto de datos no es tan agradable como LINQ to SQL

0

Utilizamos SQLCE (versión 3.0 creo) en un proyecto de un año o 2 hace.
El problema que tuve fue que necesitaba una instalación, no era XCOpy desplegable. Además, la actuación fue horrible. estábamos haciendo aproximadamente 20 inserciones por segundo, lo que probablemente esté fuera de sus capacidades, pero definitivamente no podía manejarlo. Los problemas de rendimiento y despliegue me han convencido de que hay mejores alternativas. mi próximo proyecto usará SQLite o VistaDB.

He utilizado SQLite en la Mac, e iPhone para el desarrollo, y funciona muy bien en ambas plataformas.

+0

Estoy usando SQL CE 3.5 en un proyecto en este momento e insertando filas (en la máquina de escritorio) a una velocidad de más de 10.000 filas por segundo, por lo que decir que es lento no siempre es cierto. Depende exactamente de cómo lo estés usando. – ctacke

0

Existe un problema si utiliza SQLCE 3.5 SP1 con Entity Framework. Básicamente hay un problema al pasar algunos parámetros a una consulta. La solución alternativa es desinstalar SQLCE e instalar otra versión publicada como revisión. El problema es cuando intentamos incluir SQLCE en un proyecto de instalación. Más acerca del tema se pueden encontrar en este hilo: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/b6bac277-cf66-4c74-a0b3-e48abedbd161

Otro extraño problema es que SQLCE 3.5 SP1 con marco de la entidad no va a funcionar en 64 sistemas de bits a menos que lo construye para apuntar x86 (http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/aa5850bb-34fe-4064-82b0-4a7cac675c91/)

Cuestiones relacionadas