2009-02-24 9 views
8

Acabo de obtener una idea decente para una aplicación, pero implicaría algún trabajo de base de datos y un servidor central.¿Dónde debería comenzar con las bases de datos de aprendizaje?

Nunca antes he trabajado con bases de datos o servidores. ¿Cuáles son algunos de los lenguajes de consulta de base de datos recomendados para un principiante? Los idiomas con los que trabajo ahora son C#, C++, Perl y Python, pero no me importa si tengo que aprender otro idioma (eso siempre es divertido).

  • ¿Qué idioma debo usar?
  • ¿Cómo funcionaría con un servidor?
  • Si distribuyo mi programa y uso una computadora en mi red como servidor, ¿se abre un agujero de seguridad? Si es así, ¿cómo debería lidiar con esto?
  • ¿Y cómo configuraría el servidor, simplemente descargue el instalador y ejecútelo?
+1

@jimi, ¿Tiene experiencia? –

+1

@Paul: ¿En qué? ¿No deberías elaborar un poco? – GEOCHET

+5

@Rich: evidentemente no se conoce muy bien la música de los '60. –

Respuesta

5

Learn SQL.

Descargue SQLite como su servidor de aprendizaje.

Eso lo hará comenzar.

Una vez que haya aprendido SQL, puede pasar a las otras preguntas.

¿Cómo funcionaría con un servidor? MySQL o Postgres serían buenas opciones de bajo costo. Oracle, MS SQL/Server y DB2 son buenas opciones costosas.

Si distribuyo mi programa y uso una computadora en mi red como servidor, ¿se abre un agujero de seguridad?

Este es un tema enorme. Comience con una de las listas de vulnerabilidades ampliamente utilizadas. Aquí hay algunos indicadores: http://homepage.mac.com/s_lott/iblog/architecture/C465799452/E20090124205231/index.html

+1

SQLite no es un servidor. – skypher

+2

@skypher: eso es discutible. Proporciona el servicio SQL. No es un proceso de ejecución libre grande, complejo y pesado (o el "servicio" de Windows). Dado que proporciona el servicio SQL, ¿cómo no es un servidor? –

+0

Si bien es discutible en un sentido del idioma inglés, en realidad no refleja el uso del "servidor" en la ingeniería informática; una biblioteca incorporada (SQLite) definitivamente no tiene ese significado. De hecho, es un punto que diferencia fuertemente a SQLite de otros sistemas SQL. – skypher

1

Te recomiendo que comiences con C# en .NET framework y utilices MS SQL Server.

Primero, necesitará get started with databases.

Aquí es un gran lugar para comenzar con MS SQL: http://msdn.microsoft.com/en-us/library/aa256841.aspx

MS SQL Express es una edición gratuita para personas como usted mientras que está aprendiendo o evaluando.

Visual Studio también tiene un express edition para aprender.

Esto requerirá su aprendizaje Transact SQL, que es una mejora de SQL.

Si le preocupa la seguridad de SQL, hay algunos good articles por ahí.

+0

Lo que pasa con ese sitio es que me dirige a los libros por tema ... y no sé lo que significa nada de eso –

+0

@Jimi: Puede encontrar más información básica aquí: http://msdn.microsoft.com/ es-us/data/aa937718.aspx – GEOCHET

+0

Podría utilizar Sql Server Express para ejecutar la producción. No recuerdo haber visto nada en la licencia diciendo que no pudiste. Por favor corrígeme si estoy equivocado –

2

La mayoría de las bases de datos comerciales usan SQL como idioma, aunque hay otras por ahí, le sugiero que se adhiera a los paquetes probados y confiables, si se inclina hacia el campo de código abierto, le sugiero que use MySQL alternativamente si tiene Microsoft inquilinos entonces debería utilizar SQL Server Express (es decir, la versión gratuita).

No estoy seguro de lo que está preguntando sobre cómo trabajaría con el servidor, pero asumo que está preguntando cómo desarrolla/construye las bases de datos, con SQL Server tiene un programa cliente para administrar la base de datos, mientras que con MySQL hay una herramienta PHP de código abierto para la administración.

En cuanto a la seguridad, las bases de datos son muy seguras si están configuradas correctamente, sugiero leer los artículos de configuración para la plataforma de base de datos que acaba seleccionando.

0

Recomiendo aprender SQL primero. La forma más fácil de hacerlo es usar Access si lo tiene. De esta forma, puede centrarse exclusivamente en aprender la sintaxis y el código SQL. Lo mejor de todo es que hay bases de datos de muestra y consultas que puede consultar. Además, puedes juntar consultas usando una GUI y luego mirar el código SQL resultante.

Cuando está satisfecho con SQL, puede ver qué base de datos desea utilizar. Si usted es un desarrollador de 'software libre', entonces puede consultar MySQL. De lo contrario, recomendaría Microsoft SQL Server.

Si usa MySQL, Perl es un lenguaje fácil para empezar. Si desea una buena GUI, puede querer C# o VB.NET.

-1

Si está trabajando en una aplicación web, le sugiero que comience a utilizar los tutoriales de Ruby on Rails. La base de datos está tan abstraída y tan ligada al modelo que SQL se descarta casi por completo y usted solo piensa en términos de su modelo de negocio.

Si usted está trabajando en una aplicación, ya sea llegar a aprender algún sistema de unión o SQL entiendo C# tiene algún sistema (LINQ?) Que podría hacer la vida más fácil para usted ...

+0

Soy tan grande como un fanático de RoR como tú, pero ciertas cosas en Rails no tienen sentido a menos que entiendas los fundamentos de la teoría relacional. – Alan

+0

Todo lo que dije fue que no tenía que aprender SQL, esa es la parte realmente difícil. Tratar con las relaciones de tabla no es tan malo, es muy parecido a una buena programación de OO, e incluso eso se simplifica ya que RoR trata con objetos de dominio y hace la OO de base de datos para usted. –

1

Realmente no importa qué lenguaje de programación elijas. La forma más común de interactuar con una base de datos es a través de SQL, que es un lenguaje simple que proporciona una interfaz común a una gran cantidad de bases de datos diferentes. Una vez que sepa SQL, puede usar fácilmente una base de datos desde cualquier lenguaje de programación.

El mejor lugar para comenzar es una base de datos llamada SQLite, que proporciona una interfaz SQL a los datos almacenados en un archivo simple en su disco. Esto significa que puede crear una base de datos y comenzar a jugar y aprender SQL sin la molestia de configurar un servidor de base de datos real. Dependiendo de su aplicación, incluso puede ser todo lo que necesita.

La última parte de su pregunta es imposible de responder. Cualquier aplicación alojada en una red abre varios problemas de seguridad. Se necesitaría mucha más información y, con un poco de suerte, al aprender un poco sobre las bases de datos, usted mismo podrá responder algunas de ellas.

0

Aprendiendo SQL, casi todas las bases de datos funcionan, el servidor sql, mysql, postgree todas son una buena manera de comenzar. Probablemente deberías comenzar con python. C# te hará pensar 'Así que hago clic aquí, aquí y aquí, después, después, termino y estoy conectado a la base de datos' y cuando trates de hacer algo un poco diferente al script de microsoft, te costará trabajo imaginar que los wizzards de Microsoft han hecho con tu código. Por otro lado, trabajar con C# podría hacer el trabajo (mal pero hecho), que es la primera regla sobre programación, así que, básicamente, haz lo que quieras (pero recomiendo python y mysql).

Sobre la segunda pregunta, siempre trabajará con un servidor si tiene que hacer su aplicación en línea (es solo cuestión de cómo).

Sobre la tercera pregunta, siempre abrirá agujeros de seguridad cuando trabaje en línea para tratar esto, primero, hacer su programa y luego estudiar sus fallas de seguridad.

0

debe conocer el modelado de bases de datos, en particular, el modelo de relación de entidad. SQL es solo la tecnología para hablar con bases de datos relacionales, y eso es fácil, pero saber cómo diseñar sus tablas para satisfacer los requisitos de datos de su aplicación, y de una manera conveniente (es decir, al menos en la segunda forma normal) le ahorrará un muchos problemas

0

Estoy de acuerdo con que necesita saber el lenguaje SQL si va a trabajar con bases de datos. Un buen libro para aprender SQL es O'Reilly's Learning SQL, second edition.

Debe posponer el uso de un servidor (que incluye evitar el sistema MySQL que se utiliza en el libro anterior) mientras aprende los fundamentos de trabajar con una base de datos relacional. Estoy de acuerdo en que SQLite será una herramienta mucho mejor para empezar, ya que puede obtener información acerca de las bases de datos relacionales sin las dificultades administrativas de un servidor.

+0

Nunca he usado sqllite ... pero ese es un buen punto acerca de no usar un servidor de inmediato ... tipo de emula cómo aprendería SQL en un entorno académico. – dotjoe

+0

No necesita aprender SQL para trabajar con bases de datos. – skypher

-3

¿Qué idioma debo usar?

Common Lisp si usted está en para una experiencia iluminadora y quiere trabajar no sólo con bases de datos relacionales (SQL), sino también con los orientados a objetos.

Otros lenguajes tienden a admitir solo RDBMS.

¿Cómo trabajaría con un servidor?

Mi consejo: alquile un servidor GNU/Linux virtual barato y aprenda a trabajar en él usando SSH.

Si distribuyo mi programa y uso una computadora en mi red como servidor, ¿se abre un agujero de seguridad?

Tal vez, tal vez no. Depende de tu programa.

La pregunta que hizo fue aproximadamente análoga a "Si trabajo en mi casa, ¿hago que sea más fácil para los ladrones entrar?".

En caso afirmativo, ¿cómo debo tratar esto?

Lea acerca de la programación segura y en los firewalls.

Utilice un lenguaje de programación sano con la recolección de elementos no utilizados y trate con precaución cualquier intervención del usuario.

¿Y cómo puedo configurar el servidor, simplemente descargue el instalador y ejecútelo?

Es un poco más complicado que eso. Depende del sistema operativo y del software del servidor que va a utilizar.

¿Y qué servidor? ¿Un servidor de base de datos (si está utilizando uno), un servidor web, su servidor de aplicaciones, alguna otra cosa?

0

En cuanto al problema "¿Cómo trabajaría con un servidor?" lo que podría significar muchas cosas. . .

¿Has oído hablar del paquete "LAMP" (Linux-Apache-MySQL-Php (perl, python))?

Es una forma bastante extendida de ejecutar un servidor (apache), una base de datos (mysql) y su lenguaje de programación preferido.

Ejecuto Apache y mysql en una máquina Windows, y prefiero Python para hacer cosas en la base de datos. Es muy fácil usar Python para interactuar con MySql y obtener una GUI en funcionamiento que sirva como su interfaz.

Apache es bueno para saber si está ingresando a la programación web. Puede usarlo como un servidor web, un servidor de base de datos, un servidor de control de origen, etc.

0

LINQ es supuestamente la próxima gran evolución del manejo de SQL, así que tal vez quiera googlear eso un poco primero.

0

Alta disponibilidad y Brozar son las palabras clave que me dijeron mis compañeros de trabajo. Alta durabilidad es otra.

Seguridad = asegurando que la primera persona con un conjunto de creds es también la misma persona usando ese conjunto de credenciales + asegurando que otras personas no autorizadas no puedan entrar. Piense en sus puntos de acceso.

Está la computadora en sí (creds de inicio de sesión). Entonces, el hecho es que está en internet (cortafuegos/puertos/servicios en ejecución). Luego está el servidor (s) mismo (iis/SQL Server) que también tiene creds. Y tal vez una interfaz a través de una API que usa creds (token REST) ​​o sin creds.

Incluso si utiliza Creds, asegúrese de que sus funciones API sean sólidas. EG: No dejes huecos como la configuración de permisos masivos con los que Github fue golpeado, solo asegúrate de que tus funciones no sean abiertas.

También puede proteger el hardware utilizando una máquina como interfaz API, y otra es la base de datos real, y solo esa puerta de enlace puede comunicarse con la computadora de la base de datos. De esta forma, si su computadora pública (servidor de API) recibe un golpe, sus datos estarán en otra parte.

Luego está la encriptación, la salazón ... No soy un experto. Solo me quedan unas semanas para hacerle la misma pregunta que tú. Las otras respuestas las encontré útiles, pero como puede ver, no vi este nivel de detalle, así que lanzando esto a pesar de que la pregunta es '09 era

Cuestiones relacionadas