¿Por qué utilizar la base de datos SQL?

No estoy muy seguro de stackoverflow es un lugar para una pregunta de carácter general, pero vamos a darle una oportunidad.

Estar expuestos a la necesidad de almacenar datos de aplicación en algún lugar, yo siempre he usado MySQL o sqlite, porque siempre se hizo así. Como parece que todo el mundo es el uso de estas bases de datos (la mayoría de todos los productos de software, frameworks, etc), es muy difícil para un comienzo de desarrolladores como yo, para empezar a pensar acerca de si esto es una buena solución o no.

Ok, digamos que tenemos algunos orientado a objetos de la lógica de nuestra aplicación, y los objetos se relacionan entre sí de alguna manera. Necesitamos mapear esta lógica para el almacenamiento de lógica, por lo que las relaciones entre los objetos de base de datos son necesarios también. Esto nos lleva a la utilización de bases de datos relacionales, y estoy bien con eso – para ponerlo simple, nuestra base de datos de las filas de la tabla, a veces, se necesita tener referencias a otras tablas’ filas. Pero ¿por qué utilizar el lenguaje SQL para la interacción con una base de datos?

Consulta SQL es un mensaje de texto. Puedo entender esto es genial para entender realmente lo que hace, pero no es tonto el uso de texto nombres de tabla y columna para una parte de la aplicación que nadie jamás ha visto después de deploynment? Si tuviera que escribir un almacenamiento de datos desde cero, usted nunca ha utilizado una solución de este tipo. Personalmente, yo habría usado algunos «compilado db consulta» bytecode, que se montaría una vez dentro de la aplicación cliente y se pasa a la base de datos. Y seguramente sería que los nombre de las tablas y los dos puntos por los números de id, no ascii-cadenas. En el caso de los cambios en la estructura de la tabla de los bytes de consultas podría ser recompilado de acuerdo al nuevo esquema db, almacenada en XML o algo así.

¿Cuáles son los problemas de mi idea? ¿Hay alguna razón para que no me escribo a mí mismo y a utilizar la base de datos de SQL en su lugar?

EDITAR Para hacer mi pregunta más clara. La mayoría de las respuestas afirman que SQL, ser un texto de consulta, ayuda a los desarrolladores a comprender mejor la propia consulta y depurar más fácilmente. Personalmente, no he visto a la gente escribir consultas SQL a mano por un tiempo. Todos los que conozco, incluyéndome a mí, es el uso de ORM. Esta situación, en la que construimos un nuevo nivel de abstracción para ocultar SQL, lleva a pensar que si necesitamos SQL o no. Yo estaría muy agradecido si usted podría dar algunos ejemplos en los que SQL se utiliza sin ORM a propósito, y por qué.

EDIT2 SQL es una interfaz entre un humano y una base de datos. La pregunta es ¿por qué tenemos que utilizar para la aplicación/base de datos de la interacción? Todavía me pida ejemplos de seres humanos de la escritura/la depuración de SQL.

  • Cuando leí el título, pensé que iba a ser una pregunta tonta… pero en realidad es una idea muy interesante !
  • Cuando SQL fue introducido por primera vez en 1970, no había OO concepto de todo. Esta es la forma en ciencias de la computación desarrollado y ahora la gente ve el inconveniente y la gente se introdujo ORM como el complemento.
  • Tal vez la pregunta debería ser, «¿por Qué utilizar SQL vs compilado consulta en la base de datos»?
  • Yo normalmente a mano escribir SQL (concedido, mis preguntas no son muy complicadas).
  • Re: «todavía me pida ejemplos de seres humanos de la escritura/depuración de SQL». En serio esto?
  • Lo que sobre el uso de jQuery para que? Parece una idea genial – El cáncer que está matando a por LO
  • La NoSQL grupo de Google es bueno para este tipo de consulta, </pun> como así.
  • «No es tonto el uso de texto nombres de tabla y columna para una parte de la aplicación que nadie jamás ha visto después de deploynment [sic]?» Tal vez, pero nunca he visto una aplicación para que esto era cierto.
  • ¿Cómo sería la aplicación de saber lo que se obtiene a partir de la base de datos? No hay verdadera Aplicación/Base de datos de interacción.

25 Kommentare

  1. 24

    Si todo lo que usted necesita hacer es almacenar algunos datos de la aplicación en algún lugar, luego de propósito general RDBMS o incluso SQLite podría ser una exageración. Serializar los objetos y escribir en un archivo podría ser más simple en algunos casos. Una ventaja para SQLite es que si usted tiene una gran cantidad de este tipo de información, que todo está contenido en un archivo. Una desventaja es que es más difícil de leer. Por ejemplo, si usted serializar datos en YAML, usted puede leer el archivo con cualquier editor de texto o shell.

    Personalmente, yo habría usado algunos
    «compilado db consulta» bytecode, que
    se montaría una vez en el interior de un
    aplicación cliente y pasa a la
    la base de datos.

    Esta es la forma en que algunas Api de base de datos de trabajo. Echa un vistazo SQL estático y declaraciones preparadas.

    ¿Hay alguna razón para que no me
    escribir a mí mismo y a utilizar SQL
    base de datos en su lugar?

    Si usted necesita una gran cantidad de características, en algún momento será más fácil utilizar una existente RDMBS, a continuación, escribir su propia base de datos desde cero. Si usted no necesita muchas características, una solución más simple puede ser más prudente.

    El punto entero de la base de datos de productos para evitar la escritura de la capa de base de datos para cada nuevo programa. Sí, un moderno RDMBS no siempre se puede ser un ajuste perfecto para cada proyecto. Esto es debido a que fueron diseñados para ser muy general, por lo que en la práctica, siempre obtendrá características adicionales que usted no necesita. Eso no significa que es mejor tener una solución personalizada. El guante no siempre se necesita para ser un ajuste perfecto.

    ACTUALIZACIÓN:

    Pero ¿por qué utilizar el lenguaje SQL para
    la interacción con una base de datos?

    Buena pregunta.

    La respuesta a la que se puede encontrar en el artículo original que describe el modelo relacional Un Modelo Relacional de Datos para Grandes Bancos de Datos Compartidos, por E. F. Codd, publicado por IBM en 1970. Este artículo describe los problemas con la base de datos existente de las tecnologías de la época, y explica por qué el modelo relacional es superior.

    La razón de usar el modelo relacional, y por lo tanto una lógica del lenguaje de consulta como SQL, es un dato de la independencia.

    Datos de la independencia se define en el documento como:

    «… la independencia de los programas de aplicación y de la terminal de actividades, desde el crecimiento de los tipos de datos y los cambios en los datos de las representaciones.»

    Antes de que el modelo relacional, el de dominar la tecnología de bases de datos se conoce como el modelo de red. En este modelo, el programador tenía que saber la estructura del disco de los datos y recorrer el árbol o grafo de forma manual. El modelo relacional permite escribir una consulta contra el conceptual o esquema lógico que es independiente de la representación física de los datos en el disco. Esta separación de esquema lógico del esquema físico es por eso que usamos el modelo relacional. Para más sobre este tema, aquí son algunas de las diapositivas de una base de datos de la clase. En el modelo relacional, hacemos uso de la lógica en función de lenguajes de consulta como SQL para recuperar los datos.
    Codd del papel entra en más detalles acerca de las ventajas del modelo relacional. Darle una lectura.

    SQL es un lenguaje de consulta que es más fácil escribir en un ordenador, en contraste con los lenguajes de consulta normalmente se utiliza en trabajos de investigación. Trabajos de investigación en general el uso de la relación de álgebra relacional o de cálculo para escribir consultas.

    En resumen, podemos utilizar SQL porque nos ocurra utilizar el modelo relacional para nuestras bases de datos.

    Si usted entiende el modelo relacional, no es difícil ver por qué SQL es la manera que es. Así que, básicamente, es necesario estudiar la relación de la modelo y la base de datos interna más en profundidad para entender realmente por qué usamos SQL. Puede ser un poco de un misterio, de lo contrario.

    ACTUALIZACIÓN 2:

    SQL es una interfaz entre un humano
    y una base de datos. La pregunta es ¿por qué
    tenemos que utilizarlo para
    aplicación/base de datos de la interacción? Yo
    pedir ejemplos de los seres humanos
    redacción/la depuración de SQL.

    Porque la base de datos es una base de datos relacional, que sólo entiende de consultas relacionales idiomas. Internamente utiliza relacional el álgebra como lenguaje para la especificación de consultas que luego se convierte en un plan de consulta. Por lo tanto, escribimos nuestra consulta en un formulario que se puede entender (SQL), el DB se lleva a nuestra consulta SQL y lo convierte en su interior lenguaje de consulta. A continuación, toma la consulta y trata de encontrar un «plan de consulta» para la ejecución de la consulta. A continuación, ejecuta el plan de consulta y devuelve el resultado.

    En algún punto, debemos codificar nuestra consulta en un formato que el de la base de datos comprende. La base de datos sólo sabe cómo convertir a SQL para su representación interna, que es por lo que hay siempre SQL en algún punto de la cadena. No se puede evitar.

    Al uso de ORM, que acaba de agregar una capa en la parte superior de la SQL. El SQL es todavía allí, su ocultos. Si usted tiene un de alto nivel de la capa para la traducción de su solicitud en SQL, entonces usted no necesita escribir SQL directamente, que es beneficioso en algunos casos. Algunas veces no tenemos una capa que es capaz de hacer el tipo de consultas que necesitamos, así que debemos usar SQL.

    • En última instancia, él le pregunta que si SQL está diseñado para los seres humanos para acceder a bases de datos, ¿por qué el uso de equipos que no un sistema mejor diseñado para los ordenadores?
    • Los equipos no están interesados en sus propios datos todavía.
  2. 43

    Todos los que conozco, incluyéndome a mí, es el uso de ORM

    Extraño. Todos los que conozco, incluyéndome a mí, todavía escribe la mayoría de los SQL a mano. Normalmente terminan con más fuerza, más alto el rendimiento de las consultas que se pueden realizar con una solución generada. Y, dependiendo del sector y de la aplicación, esta velocidad hace la materia. A veces, mucho. sí, yo a veces voy a usar LINQ para una rápida n-sucio donde no me importa lo que el SQL resultante se parece, pero hasta ahora nada automatizado bate la mano-tuned SQL para cuando el rendimiento en contra de una gran base de datos en un entorno de carga alta que realmente importa.

    • +1 – y con un buen esquema de diseño, SQL hace más fácil de usar.
    • Esto no contesta la pregunta.
    • +1, yo por lo general sólo usar herramientas de SQL para la base de datos inicial de diseño. Pero yo siempre escribir/optimizar el código me sale de esas herramientas. Y cada consulta se escribe con la mano.
    • específicamente, se dirigió a sus dos ediciones pidiendo ejemplos de personas que siguen de la mano de escritura de SQL en lugar de utilizar un ORM / generado automáticamente las consultas.
    • No tengo ninguna prueba, pero yo creo que más ORM las consultas se resuelven con una simple búsqueda de índice, de modo que el alcance de la mano optimizaciones es limitado. Por supuesto, no podría ser la excepción lento de la consulta se tiene que modificar.
    • Esto es un poco lejos de captura, pero la gente de que se trate con el rendimiento es todavía la escritura de la asamblea, pero su moribunda carrera.
    • sin ofender, pero usted no debe haber mirado el sql generado por el ORM es. ORM son grandes para los fundamentos, y que hacen un trabajo admirable, pero también estás ignorando lo ORM que no se debe hacer; cosas como las consultas de Texto Completo, del CTE, uso de puntos de vista. Todavía hay un montón de ocasiones, el wetware, es simplemente de lo mejor en la consulta.
    • Creo que en realidad estamos diciendo la misma cosa. Orm va a hacer un montón de cosas básicas y las cosas básicas que la mayoría de las cosas. Durante mi tiempo con Hibernate he tenido que sacar aparte tal vez 1 o 2 consultas, y, en retrospectiva, yo debería haber desechado las consultas por completo y se logró que los bits de datos (tiempo-sensible cosas) con una memoria de prio cola.
    • depende de su industria, de verdad. He hecho un montón de trabajo donde las actualizaciones en tiempo real son de la máxima prioridad. Estos son los casos en los que la mayor parte de las de hierro DBs, caro de nivel 3 soluciones, y mano a mano de consultas.
    • +1: Mientras ORM a hacer fácil las consultas más fácil aún, parecen (al menos para mí) para consultas aún más difícil.
    • Estoy completamente de acuerdo con sus declaraciones, y donde estoy yo, también estamos escribiendo el gran la mayoría de nuestros SQL a mano. Una cosa que el cartel original en gran medida con vistas a es que una de las mayores fortalezas de una base de datos es como un múltiplo interfaz de la aplicación. Aquí, regularmente tenemos 2, 3 o incluso 10 aplicaciones que necesitan acceder a la misma base de datos. Estos son a menudo escritos por diferentes grupos y el uso de diferentes idiomas. SQL proporciona la sintaxis básica que todas las aplicaciones pueden utilizar. Si se tratara de API específica (o utilizar un ORM), esta situación se convierte en por tanto más difícil.
    • El uso de ORM también tiende a producir una gran cantidad de consultas en comparación con una mano consulta por escrito.
    • Tal vez eso es porque sql ha sido desarrollado para los 40-50 años la conexión de la mejor manera posible manipulación de base de datos actividades con palabras. Independientemente del tipo de datos, etc… y sólo requireing de un texto de entrada.

  3. 11

    Dado el hecho de que utiliza MySQL y SQLite, entiendo tu punto de vista por completo. La mayoría de los DBMS tienen características que requieren algunos de la programación de su lado, mientras que la recibe de la base de datos gratis:

    • Índices, puede almacenar grandes cantidades de datos y aún así ser capaces de filtrar y buscar muy rápidamente debido a los índices. Por supuesto, se podría implementar usted es dueño de indexación, pero ¿por qué reinventar la rueda

    • la integridad de los datos – uso de funciones de base de datos como una cascada de claves externas pueden garantizar la integridad de los datos en el sistema. Usted sólo deberá declarar relación entre los datos, y el sistema se encarga del resto. Por supuesto, una vez más, se podría implementar restricciones en el código, pero es más trabajo. Considere, por ejemplo, la eliminación, en el que tendría que escribir el código en el objeto del destructor para el seguimiento de todos los objetos dependientes y actuar en consecuencia

    • capacidad para tener múltiples aplicaciones escrito en diferentes lenguajes de programación, trabajando en diferentes sistemas operativos, incluso algunos se distribuye a través de la red utilizando el mismos datos almacenados en una base de datos común

    • muertos fácil implementación de patrón observer a través de disparadores. Hay muchos casos en los que sólo algunos de los datos depende de otros datos y no afecta a la interfaz de usuario de aspecto de la aplicación. Garantizar la coherencia puede ser muy difícil o requiere mucho de programación. Por supuesto, se podría implementar desencadenar un comportamiento similar con los objetos, pero se requiere más de programación de SQL simple definición

    • Gran golpe sobre múltiples aplicaciones. Un montón de desarrolladores que se utilizan para aplicaciones web o en otros casos donde se tiene una directa asignación de 1 a 1 de la aplicación a la base de datos. En un montón de situaciones empresa, que no es el caso. Usted tiene una base de datos que puede tener 2, 3, o incluso una docena de aplicaciones de todos los que trabajan con los mismos datos. Uno de los escenarios más comunes que he visto es la 2 parte de procesamiento de la aplicación y presentación de informes de la aplicación. A menudo escritos por diferentes grupos, en diferentes idiomas. Tratando de hacer que el trabajo con el ORM es muy difícil. Recta SQL hace que sea fácil.
    • Estoy de acuerdo ¿por qué reinventar la rueda? Eso es exactamente lo que tendría que hacer a la hora de crear una nueva y única base de datos – aplicación de la interacción, cada vez que cree una nueva aplicación.
  4. 10

    Hay algunas buenas respuestas aquí. Voy a intentar aportar mi granito de arena.

    Me gusta SQL, no puedo pensar en él con bastante facilidad. Las consultas producido por capas en la parte superior de la base de datos (como ORM marcos) suelen ser horribles. Van a seleccionar toneladas de material adicional, participar en cosas que no necesitas, etc.; todo porque ellos no saben que desea sólo una pequeña parte del objeto de este código. Cuando se necesita un alto rendimiento, a menudo, terminan trabajando en y con, al menos, algunas de las consultas SQL personalizadas en un ORM sistema para acelerar un par de cuellos de botella.

    Por qué SQL? Como otros han dicho, es fácil para los seres humanos. Hace un buen denominador común más bajo. Cualquier idioma puede hacer que SQL y llame a la línea de comandos de los clientes si es necesario, y que es casi siempre una buena biblioteca.

    Es analizar el SQL ineficiente? Algo. La gramática es bastante estructurado, por lo que no hay toneladas de ambigüedades que haría el analizador del trabajo realmente duro. Lo real es que la sobrecarga de analizar SQL es básicamente nada.

    Digamos que ejecutar una consulta «SELECT x FROM tabla where id = 3», y luego hacerlo de nuevo con el 4, luego 5, más y más. En ese caso, el análisis de la sobrecarga puede existir. Por eso se han preparado las declaraciones (como otros han mencionado). El servidor analiza la consulta una vez, y puede cambiar en el 3 y el 4 y 5 sin tener que reanálisis todo.

    Pero ese es el caso trivial. En la vida real, el sistema puede unirse a 6 mesas y tener que tirar de cientos de miles de registros (si no más). Puede ser una consulta que vamos a ejecutar en un clúster de base de datos por horas, porque esa es la mejor manera de hacer las cosas en su caso. Incluso con una consulta que solo se tarda un minuto o dos para ejecutar, el tiempo para analizar la consulta es esencialmente libre en comparación a tirar de los registros del disco y hacer la clasificación/agregación/etc. Los gastos de envío de la ext «LEFT OUTER JOIN» es sólo un par de bytes en comparación con el envío de especial codificado byte 0x3F. Pero cuando el conjunto de resultados es de 30 MB (por no hablar de los conciertos+), esos pocos bytes adicionales son despreciables en comparación con no tener que meterse con algunos especiales compilador de consultas objeto.

    Muchas personas utilizan SQL en bases de datos pequeñas. El más grande de interactuar con sólo una docena de conciertos. SQL se usa en todo, desde archivos muy pequeños (como poco SQLite DBs puede ser) hasta terabytes de tamaño de Oracle grupos. Teniendo en cuenta que es poder, es en realidad un sorprendentemente simple y pequeño conjunto de comandos.

    • «SELECCIONE x FROM tabla where id = 3» Isent estos comandos sql, también vinculada a la mejor algorithims encontrado, undependetly de cualquier tipo de datos es, por ejemplo.
  5. 9
    • Es una omnipresente estándar. Prácticamente cada lenguaje de programación tiene una manera de acceder a bases de datos SQL. Trate de que con una propiedad de un protocolo binario.
    • Todo el mundo lo sabe. Usted puede encontrar expertos fácilmente, nuevos desarrolladores se suelen entender es que en algún grado sin necesidad de formación
    • SQL está muy estrechamente ligada a la modelo relacional, el cual ha sido explorado a fondo en lo que respecta a la optimización y escalabilidad. Pero aún así, con frecuencia requiere ajustes manuales (índice de creación, estructura de consulta, etc.), que es relativamente fácil debido a los mensajes de la interfaz.
    • 1) lo siento si tengo algo mal, pero ¿por qué el uso de la palabra proprietary? Yo estaba pensando en una solución de código abierto, por ejemplo. 2) 3) parece que es una buena cosa para que los desarrolladores han textuales de las consultas, ya que son fáciles de entender. Pero, ¿qué acerca de aquellos desarrolladores que gastar un montón de tiempo en la optimización de la consulta? ¿Vale la pena? No creo que una buena interfaz de la aplicación a código de bytes de consultas, como el que yo he escrito acerca de, habría sido tan difícil de entender. Desarrolladores les gusta la velocidad más que el aprendizaje de la simplicidad, supongo.
    • El problema con esto es la interoperabilidad. SQL es el texto y puede ser copiado y pegado, revisado, etc. fácilmente. Con una versión compilada, usted necesita una aplicación. ¿Integrar uno en cada base de datos, crear una externa que funciona en todas las bases de datos? ¿Qué acerca de los diferentes sistemas operativos o incluso cambios de funciones entre los sistemas de base de datos y cada versión? SQL no tiene ninguno de estos problemas… hasta llegar a SQL constructores 🙂
    • …es probable que la misma razón por la que el XML es utilizado tanto. XML no es muy eficiente, pero el texto es más fácil de trabajar que algunos en formato binario. Un corrupto archivo XML es más fácil de solucionar (al menos por un ser humano) de un archivo binario, etc.
    • que suena como usted cree que la optimización de la consulta sólo es necesario porque es un formato de texto. Nada podría estar más lejos de la verdad. Consulta (y estructura DB) optimización de las preocupaciones de la estructura semántica y el contenido de la base de datos y las consultas. Un formato binario sería simplemente hacer ese tipo de optimización imposible sin herramientas adicionales.
  6. 9

    Pero ¿por qué utilizar el lenguaje SQL para la interacción con una base de datos?

    Creo que es por la misma razón que el uso de un formato legible (código fuente) de lenguaje para la interacción con el compilador.

    Personalmente, yo habría usado algunos «compilado db consulta» bytecode, que se montaría una vez dentro de la aplicación cliente y se pasa a la base de datos.

    Este es un existente (opcional) función de las bases de datos, denominado «procedimientos almacenados».


    Edición:

    Yo estaría muy agradecido si usted podría dar algunos ejemplos en los que SQL se utiliza sin ORM a propósito, y por qué

    Cuando he implementado mi propio ORM, he implementado el ORM de marco con ADO.NET: y el uso de ADO.NET incluye el uso de sentencias SQL en su implementación.

  7. 8

    Después de todas las ediciones y comentarios, el punto principal de tu pregunta parece ser : ¿por qué es la naturaleza de SQL más cerca de ser un humano/interfaz de base de datos que al ser una aplicación/base de datos de la interfaz ?

    Y la respuesta muy simple a que pregunta es : porque eso es exactamente lo que originalmente estaba destinado a ser.

    Los predecesores de SQL (QUEL siendo probablemente el más importante) estaban destinados a ser exactamente eso : un lenguaje de CONSULTA, es decir, uno que no tenía ninguna de las instrucciones INSERT, UPDATE, DELETE.

    Por otra parte, estaba destinado a ser un lenguaje de consulta que podría ser utilizado por cualquier usuario, siempre que el usuario es consciente de la estructura lógica de la base de datos, y obviamente sabía cómo expresar que la estructura lógica en el lenguaje de consulta que él estaba usando.

    La idea original detrás de QUEL/SQL se que una base de datos fue construida con «cualquier mecanismo de concebible», que el «real» de la base de datos podría ser realmente cualquier cosa (por ejemplo, una sola gigantesco archivo XML – aunque ‘XML’ no era considerada una opción válida en el momento), y que habrá «algún tipo de maquinaria» que entiende cómo transformar la estructura real de que ‘algo’ en la lógica relacional de la estructura como era percibida por el usuario de SQL.

    El hecho de que para lograr que las estructuras subyacentes se requiere que se prestan a la «visualización de los mismos relacional», no fue entendido así en aquellos días, como lo es ahora.

    • XML no existía en el tiempo.
    • También isent sql la más completa laungage de cada manipulación de datos que se puede hacer? Y si usted no tiene que – ¿cómo construir aplicaciones (conectado a bases de datos)? La aplicación a estos habría que utilizar un nuevo indivudual laungage cada momento. Sería como el desarrollo de un nuevo java laungage cada vez que haces una nueva aplicación (y sólo incluyen lo que se necesita en ese programa en particular).
    • El punto de esta respuesta fue que SQL llegó a ser tal como es, porque fue diseñado principalmente con el tipo de usuario de la mente que está sentado en una consola y entrar en su directamente los comandos que el DBMS. Que esta no es la más adecuada al tipo de interfaz para un programador escribir programas que abordan el DBMS, es bastante obvio. Así que tenemos la relativamente peculiar situación de que «el bajo nivel técnico» de los lenguajes de programación son a recurrir a un «nivel superior/usuario final a nivel de lenguaje» con el fin de obtener una base de datos de la manipulación que se hace. Podría haber sido diferente, pero simplemente no es …
    • … Como observa correctamente, que probablemente habría resultado en un «otro» host de idiomas : el idioma significaba para la integración con COBOL que hace que los datos reales de la interfaz de aspecto COBOL-ish, el lenguaje significó para la integración con C que hace que los datos reales mirada de la interfaz C)ish, etc. etc. etc. (Que parecen suponer que este sería necesariamente y por definición, han sido una mala cosa, pero no estoy de acuerdo (es decir, soy mucho menos seguro acerca de eso de lo que parecen ser) .)
    • ¿No tiene también que ser una mano humana que siempre se conecta a su base de datos para ciertas actividades en su aplicación? Yo también creo que el sql laungage debe estar conectado a algunos muy buenos algoritmos. Si usted hace cualquier nueva laungage usted tiene que reinventar estas?
    • No, usted no tiene que «reinventar» los algoritmos los algoritmos son definidas en términos de las matemáticas, y las matemáticas se aplican independientemente del lenguaje de implementación. Así que no hay «re-inventar», simplemente «volver a la aplicación» en cierta medida. Y no, eso no es necesariamente una mala cosa. «Algoritmos» para el direccionamiento de la memoria están siendo re-implementado todo el tiempo. Cuando nos encontramos con que «Uno de Meg le no suficiente para nadie» después de todo, cuando nos encontramos con que «16 Megas no es suficiente, después de todo» (mainframe transición de MVS a MVS/XA), cuando nos encontramos con que de 32 bits no son suficientes, después de todo, etc. etc.

  8. 7

    Sí, es molesto tener que escribir las sentencias SQL para almacenar y recuperar objetos.

    Es por eso que Microsoft ha añadido cosas como LINQ (language integrated query) en C# y VB.NET para hacer posible la consulta de bases de datos mediante objetos y métodos en lugar de cadenas.

    La mayoría de los otros idiomas tienen algo similar con diferentes niveles de éxito, dependiendo de las capacidades del lenguaje.

    Por otro lado, es útil saber cómo SQL obras y creo que es un error protegerse completamente de ella. Si utiliza la base de datos sin pensar puede escribir extremadamente ineficiente de consultas y el índice de la base de datos de forma incorrecta. Pero una vez que usted entienda cómo utilizar SQL correctamente y tener a punto su base de datos, usted tiene una muy potente y probada herramienta disponible para encontrar exactamente la información que necesitas de forma extremadamente rápida.

    • A mí me parece que LINQ declaraciones son traducidos a SQL, y toda la interacción con el db se hace, como se hace siempre. Este es sin duda un lugar fresco método no utilizar cojo SQL, pero no elimina del todo el problema con la interfaz de base de datos que yo estaba escribiendo.
    • Con LINQ to SQL, si los cambios de base de datos (por ejemplo un nombre de columna cambios) puede ajustar su archivo DBML. No es necesario cambiar el código.
  9. 4

    Mi razón principal para SQL de informes Ad-hoc. Que informe de su negocio que los usuarios quieren, pero no saben que lo necesitan todavía.

  10. 3

    SQL es una interfaz entre un humano
    y una base de datos. La pregunta es ¿por qué
    tenemos que utilizarlo para
    aplicación/base de datos de la interacción? Yo
    pedir ejemplos de los seres humanos
    redacción/la depuración de SQL.

    Puedo usar sqlite un montón derecho de las tareas más simples (como el registro de mis registros de firewall directamente a una base de datos sqlite) hasta las más complejas analíticas y de tareas de depuración en mi día a día de la investigación. Exponiendo mis datos en tablas y escribir consultas SQL para munge ellos de un modo más interesante parece ser la cosa más natural para mí en estas situaciones.

    En su punto acerca de por qué todavía se utiliza como una interfaz entre la aplicación/base de datos, este es mi sencillo razonamiento:

    1. Hay alrededor de 3-4 décadas de
      una investigación seria en esa zona
      a partir de 1970 con Codd seminales
      papel en Álgebra Relacional.
      Relacional el Álgebra de los formularios de la
      base matemática para SQL (y otros
      Ecv), aunque SQL no
      siga el relacional
      modelo.

    2. El «texto» del idioma
      (aparte de ser fácilmente
      comprensible para los seres humanos) es también
      de fácil análisis por máquinas (dicen
      el uso de un analizador de gramática como en el caso de
      lex) y es fácilmente convertible a lo que sea «bytecode» el uso de cualquier número de optimizaciones.

    3. No estoy seguro de si hacerlo en cualquier
      de otra manera habría rendido
      convincente beneficios en los casos genéricos. De lo contrario, se
      habría sido probablemente descubierto
      y adoptado en las 3 décadas de
      de investigación. SQL proporciona probablemente el
      la mejor de las compensaciones cuando el puente
      la división entre los seres humanos y las bases de datos y
      aplicaciones y bases de datos.

    La pregunta que entonces se convierte en interesante es preguntarse, «¿cuáles son los beneficios reales de hacer SQL en cualquier otro «no-texto» camino?» Google para esta ahora:)

  11. 3

    SQL es una interfaz común utilizado por el gestor de base de datos de la plataforma, todo el punto de la interfaz es que todas las operaciones de base de datos puede ser especificado en SQL sin necesidad suplementaria de llamadas a la API. Esto significa que hay una interfaz común a través de todos los clientes del sistema – software de aplicación, informes ad-hoc y herramientas de consulta.

    En segundo lugar, SQL vuelve más y más útil como a las consultas más complejas. Trate de usar LINQ para especificar un 12 unirse a una con tres condiciones basadas en el existencial y predicados de una condición basada en un agregado calculado en una subconsulta. Este tipo de cosas es bastante comprensible en SQL, pero raro será posible en un ORM.

    En muchos casos, un ORM va a hacer el 95% de lo que usted quiere – la mayoría de las consultas emitidas por las aplicaciones son simples operaciones CRUD que un ORM o de otros genéricos de la base de datos de la interfaz de mecanismo puede manejar fácilmente. Algunas operaciones se hace mejor uso de código SQL.

    Sin embargo, Orm no son el ser-todo y el fin de la base de datos de la interfaz. Fowler Patrones de Arquitectura de Aplicaciones Empresariales tiene una muy buena sección sobre otros tipos de base de datos, la estrategia de acceso con cierta discusión de los méritos de cada uno.

    A menudo hay buenas razones para no utilizar un ORM como la principal base de datos de la capa de interfaz. Un ejemplo de una buena es que la plataforma de base de datos de las bibliotecas como ADO.Net a menudo, hacer un buen trabajo y se integran bien con el resto del entorno. Usted podría encontrar que la ganancia en el uso de algunos otros de la interfaz en realidad no son mayores que los beneficios de la integración.

    Sin embargo, la última razón por la que realmente no se puede ignorar SQL es que son, en definitiva, trabajar con una base de datos si usted está haciendo una aplicación de base de datos. Hay muchos, muchos WTF historias acerca de tornillo-ups en la aplicación comercial de código hecho por la gente que no entendía bases de datos correctamente. Mal pensado código de base de datos puede causar problemas en muchas maneras, y alegremente pensando que no es necesario entender cómo el DBMS obras es un acto de Arrogancia, que es obligado a venir y te muerden algún día. Peor aún, se ven y mordedura de algunos otros buenos schmoe que hereda de su código.

  12. 2

    Mientras veo tu punto, SQL el lenguaje de consulta tiene un lugar, especialmente en aplicaciones de gran tamaño con un montón de datos. Y para señalar lo obvio, si el idioma no estaba allí, no se podía llamar de SQL (Lenguaje de Consulta Estructurado). El beneficio de tener SQL a través de el método que se describe es SQL en general es muy legible, a pesar de que algunos realmente empujar los límites de sus consultas.

    Me entero heartly de acuerdo con Mark Byers, usted no debe protegerse de SQL. Cualquier desarrollador puede escribir SQL, pero para realmente hacer su solicitud de realizar bien con SQL interacción, la comprensión del lenguaje es una necesidad.

    Si todo estaba precompilado con bytecode como usted la describe, no me gustaría ser el uno para depurar la aplicación después de que el desarrollador original de la izquierda (o incluso después de no ver el código de 6 meses).

  13. 2

    Creo que la premisa de la pregunta es incorrecta. Que SQL puede ser representado como el texto es inmaterial. La mayoría de las modernas bases de datos sólo compilar las consultas de una vez y se caché de todos modos, por lo que ya tienen, efectivamente, un «compilado » bytecode»‘. Y no hay razón para que esto no podía suceder cliente-sabio, aunque no estoy seguro de si alguien lo ha hecho.

    Usted dijo SQL es un mensaje de texto, así que pienso en él como un mensajero, y, como sabemos, no matar al mensajero. El problema real es que las relaciones no son una buena manera de organizar datos del mundo real. SQL es sólo lápiz de labios en el cerdo.

  14. 1

    Si la primera parte te parecen referirse a lo que se suele llamar el mapeo Objeto – relacional de la impedancia. Ya hay una gran cantidad de marcos para aliviar ese problema. Hay tradeofs así. Algunas cosas serán más fáciles, otras más complejas, pero en el caso general, que funciona muy bien si usted puede permitirse el lujo de la capa adicional.

    En la segunda parte que parece que se quejan de SQL texto (utiliza cadenas en lugar de ids, etc)… SQL es un lenguaje de consulta. Cualquier idioma (informático o no) que está destinado a ser leído o escrito por los seres humanos es un texto orientado para esa materia. La asamblea, C, PHP, nombre de ella. Por qué? Porque, bueno… tiene sentido, ¿no?

    Si quieres precompilado consultas, ya dispone de procedimientos almacenados. Declaraciones preparadas también se compila una vez sobre la marcha, si mal no recuerdo. La mayoría (si no todos) base de datos de drivers hablar con el servidor de base de datos mediante un protocolo binario de todos modos.

    • Yo he escrito un gran comentario en el post y luego publicado como una edición. Yo en realidad no se quejan de SQL, me estoy preguntando acerca de por qué la necesitamos – un extra de idioma para la interfaz entre el ser HUMANO y la BASE de datos, como en la mayoría de los casos se necesita una APLICACIÓN/BASE de datos de interacción.
    • No existe una APLICACIÓN/BASE de datos de interacción sin seres humanos involucrados. No todavía.
  15. 1

    sí, el texto es un poco ineficiente. Pero en realidad la obtención de los datos es mucho más costoso, por lo que el texto basado en sql es razonablemente insignificante.

  16. 1

    SQL fue creado para proporcionar una interfaz para realizar consultas ad hoc en una base de datos relacional.

    Generalmente, la mayoría de las bases de datos relacionales entender alguna forma de SQL.

    Orientada a objetos bases de datos existen, y (presumiblemente) uso de objetos para hacer sus consultas… pero como yo lo entiendo, OO bases de datos tienen mucho más por casualidad, y bases de datos relacionales a funcionar bien.

    También Bases de datos relacionales permiten operar en un «desconectado» del estado. Una vez que usted tiene la información que usted pide, usted puede cerrar la conexión de base de datos. Con una base de datos OO, deberá devolver todos los objetos relacionados con el actual (y los que están relacionados con el… y el…, etc…) o volver a abrir la conexión a recuperar nuevos objetos a los que se accede.

    Además de SQL, usted también tiene Orm (object-relational asignaciones) que los objetos del mapa a SQL y la espalda. Hay muy pocos de ellos, incluyendo LINQ (.NET), el MS Entity Framework (.NET), Hibernate (Java), SQLAlchemy (Python), ActiveRecord (Ruby), Clase::DBI (Perl), etc…

  17. 1

    Un lenguaje de base de datos es útil porque proporciona un modelo lógico de los datos independiente de cualquiera de las aplicaciones que la utilizan. SQL tiene un montón de defectos, sin embargo, no menos importante es que su integración con otros lenguajes es pobre, el tipo de apoyo es de alrededor de 30 años por detrás del resto de la industria y ha sido nunca verdaderamente relacional del lenguaje de todos modos.

    SQL ha sobrevivido principalmente porque el mercado de bases de datos ha sido y sigue siendo dominado por los tres mega-proveedores que tienen un interés personal en la protección de su inversión. Eso está cambiando y SQL días probablemente están numeradas, pero el modelo que finalmente va a reemplazar probablemente no ha llegado aún – aunque hay un montón de candidatos en estos días.

    • Ouch. «El modelo que finalmente va a reemplazar» se llegó. En 1969/1970. Se llama el modelo relacional de datos 🙂
  18. 1

    No creo que la mayoría de la gente llegar a su pregunta, aunque creo que es muy claro. Por desgracia no tengo la respuesta «correcta». Yo diría que es una combinación de varias cosas:

    1. Semi-decisiones arbitrarias cuando fue diseñado, tales como facilidad de uso, sin necesidad de SQL compilador (o IDE), portabilidad, etc.
    2. Sucedió a coger bien (probablemente debido a razones similares)
    3. Y ahora debido a razones históricas (compatibilidad, bien conocida, probada, etc.) se sigue utilizando.
    4. No creo que la mayoría de las empresas se han molestado con otra solución, ya que funciona bien, no es mucho de un cuello de botella, es un estándar, bla, bla..
  19. 1

    Uno de los Unix principios de diseño se puede decir de esa manera, «Escribir programas para manejar cadenas de texto, debido a que es una interfaz universal.».

    Y que, creo, es por eso que normalmente utilizamos SQL en lugar de algunos ‘byte-SQL’ que sólo tiene una compilación de la interfaz. Incluso si nos hizo tiene un byte-SQL, alguien debería escribir un Texto «SQL», y el bucle sería completa.

    También, MySQL y SQLite son menos completos que, por ejemplo, MSSQL y Oracle SQL. Así que usted todavía está en el extremo más bajo del SQL de la piscina.

  20. 1

    Realidad hay unos pocos no-SQL de base de datos (como la Objetividad, Oracle Berkeley DB, etc.) productos de vino, pero no tuvo éxito. En el futuro, si alguien encuentra intuitiva alternativa para SQL, que dará respuesta a su pregunta.

    • Mientras que SQL es el rey indiscutible de acceso de base de datos, creo que no hay ninguna forma en que se puede decir «ninguno de ellos tuvo éxito» de Berkeley DB. No, No es de propósito general como una típica base de datos SQL (es un valor clave de la tienda), pero es muy exitoso. Se ha utilizado en miles de aplicaciones de años, y todavía se utiliza mucho en un montón de lugares.
  21. 0

    Hay un montón de no relacional de la base de datos de los sistemas. Aquí están algunas de ellas:
    Memcached
    Tokio Gabinete

    • Pero tengo mi base de datos relacional! Yo no quisiera que el uso de SQL.
    • Sin duda se puede utilizar una base de datos relacional, pero la estructura de sus datos en cualquier forma que te gusta. No automatizados, integridad o actualización en cascada/eliminar funciones, aunque.
  22. 0

    Tan lejos como el hallazgo de una base de datos relacional que no usan SQL como su interfaz principal, creo que no la vas a encontrar. Razón: SQL es una gran manera de hablar acerca de las relaciones. No puedo entender por qué ese es un gran problema para usted: si no te gusta SQL, poner una abstracción por encima de ella (como un ORM) para que usted no tenga que preocuparse de ello. Vamos a la abstracción de preocuparse por ello. Se consigue el mismo lugar.

    Sin embargo, el problema de su’e realmente mencionar, es el objeto-relación de desconexión – el problema con la relación en sí. Los objetos y relacional de tuplas no siempre se prestan a ser un 1-1 relación, que es la razón por la que un desarrollador puede frustrado con una base de datos. La solución a esto es utilizar una base de datos diferente tipo.

    • No estoy de acuerdo con tu frase 2. SQL es realmente una pésima manera de «hablar acerca de» las relaciones! En muchas maneras SQL totalmente no entregar lo que el modelo relacional se suponía.
    • Sugerencias sobre la mejor manera?
  23. 0

    Porque a menudo, usted puede estar seguro de que (citando a usted) «nadie jamás ha visto después de la implementación». Sabiendo que no hay una interfaz sencilla para la presentación de informes y para el conjunto de datos a nivel de la consulta es un buen camino para la evolución de su aplicación.

    Tienes razón, que hay otras soluciones que pueden ser válidas en algunas situaciones: XML, archivos de texto sin formato, OODB…

    Pero tener un conjunto de interfaces comunes (como ODBC) es una gran ventaja para la vida de los datos.

  24. 0

    Creo que la razón podría ser la búsqueda/buscar/grab algoritmos de sql laungage está conectada a hacer. Recuerde que sql ha sido desarrollado por más de 40 años – y el objetivo ha sido preformence sabio y usuario firendly sabio.

    Pregúntate a ti mismo cuál es la mejor manera de encontrar 2 attibutes es. Ahora, ¿por qué la investigación de que cada vez que quiero hacer algo que incluye que cada vez que desarrollar su aplicación. Suponiendo que el objetivo principal es el desarrollo de su aplicación en el desarrollo de una aplicación.

    Una aplicación tiene similitudes con otras aplicaciones, una base de datos tiene similitudes con otras bases de datos. Así que no debe ser una «mejor manera» de estos para interactuar, lógicamente.

    También pregúntate a ti mismo cómo te gustaría desarrollar una mejor consola única aplicación que no utiliza sql laungage. Si usted no puede hacer eso yo creo que usted necesita para desarrollar un nuevo tipo de interfaz gráfica de usuario que son más fundamental aún más fácil de usar que con una consola – para desarrollar cosas de ella. Y que en realidad podría ser posible. Pero aún más el desarrollo de aplicaciones se basa en torno a la consola y escribir.

    A continuación, cuando se trata de laungage no creo que se puede hacer de una manera mucho más fundamental más fácil de texto laungage de sql. Y recuerde que cada palabra de cualquier cosa es inseperatly conectado a su significado – si extrae el significado de la palabra no puede ser usado – si se quita la palabra que no se puede comunicar el significado. Usted no tiene nada para describir con (Y tal vez usted no puede ni siquiera pensar que es porque se wouldent estar conectado a cualquier otra cosa que haber pensado antes…).

    Así que, básicamente, el mejor de los posibles algoritmos para la manipulación de bases de datos se asignan a las palabras – si usted quitar estas palabras, usted tendrá que asignar estas manipulaciones algo más – y ¿qué sería?

  25. -3

    creo que se puede usar ORM

    si y sólo si sabes lo básico de sql.

    otra cosa que el resultado no es la mejor

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea