¿Hay entornos de bases de datos fáciles de usar para desarrollar una aplicación para MAC e iOS que no requieran conectividad a Internet?

Desafortunadamente, lo que desea hacer no está lo suficientemente especificado como para darle más que agitar la arquitectura.

La sincronización de datos entre una aplicación fuera de línea y una aplicación en línea sin conectividad de red periódica para el dispositivo fuera de línea; digamos que nunca quiere que los datos salgan de sus instalaciones y residan en la nube no es fácil.

Tampoco está claro cuántas personas podrían estar usando esto al mismo tiempo, y supongo que eventualmente querrá hacer crecer su negocio más allá de usted mismo.

En ese punto, se hace necesario permitir que ocurran transacciones entre múltiples copias desconectadas de la base de datos, y luego conectarlas y sincronizar una multitud de cambios.

Este no es un problema computacionalmente simple.

Sin una mejor explicación del espacio del problema, es dudoso que obtenga una respuesta más útil. y con más información, una respuesta útil equivale a hacer la parte de diseño del proyecto por usted.

Normalmente paga honorarios de consultoría al diseñador para obtener este nivel de información.


Le diré que si alguna vez se trata de más de una computadora y un iPad, deberá empaquetar las transacciones como unidades de transacción y avanzarlas como transacciones de una base de datos a otra, en función de un punto de serialización de sincronización, basado en un UUID de dispositivo y un número de secuencia de sincronización para instancias de sincronización.

Además, es probable que necesite la capacidad de transferir múltiples conjuntos de transacciones hacia adelante para los puntos de control, en el futuro, de modo que si alguna vez pierde la sincronización, por ejemplo, si tiene que restaurar sus dispositivos o computadora principal desde una copia de seguridad después de una o más transacciones posteriores los puntos de secuencia han pasado en función de que la copia de seguridad está obsoleta, por lo que deberá llevar registros de transacciones en cada dispositivo que participe en el grupo.

Esa es información que te daré gratis.

Mi recomendación general para este tipo de cosas (me gustaría hacer una aplicación o algo parecido a una aplicación, probablemente no esté interesado en el dolor de aprender Objective-C) es siempre obtener la versión gratuita de LiveCode. Es una herramienta de desarrollo de aplicaciones * muy * poderosa que utiliza un idioma que es prácticamente el inglés simple, aunque un poco rígido. Lo uso para enseñar la creación de software personalizado para el diseño de los estudiantes, y pueden crear aplicaciones básicas para Mac o Windows al final de la primera sesión. La versión de la comunidad es gratuita y de código abierto: el hogar del código abierto de LiveCode

Sin embargo, probablemente podría darle consejos y sugerencias más específicos y concretos si pudiera describir el tipo de cosas que desea hacer con un poco de detalle.

No estoy seguro de lo que realmente quiere decir con: “Quiero hacerlo yo mismo”, pero aquí hay algunos antecedentes sobre varios enfoques para la sincronización de datos.

Mientras tanto, iCloud Drive podría sincronizar las actualizaciones de datos de inventario al volver a conectar: ​​iCloud Drive: Cómo sincronizar datos entre Mac e iOS

Supongo que no está interesado en la arquitectura distribuida masivamente y solo quiere un sistema simple utilizado por pocas personas.

Una solución simple que se me ocurre es crear una aplicación para iPad y almacenar sus datos localmente en una base de datos [math] SQLite [/ math]. Esta sería la base de datos que se usaría sobre la marcha cuando use iPad.

Para una capa de persistencia real, puede usar cualquiera de las ofertas de la base de datos (probablemente en la nube) y exponerla a través de algún servicio web. Además de la interfaz de nivel de dominio, el servicio también debe tener apis para insertar y extraer datos del iPad.

Se verá un flujo habitual.

  1. La aplicación para iPad actualiza los datos automáticamente / a pedido en la mañana antes de sacarlos al campo utilizando la API de extracción.
  2. Realiza cambios en los datos en el campo que se almacena localmente en el iPad en la base de datos SQLite.
  3. Cuando regrese del campo, puede enviar los datos a la base de datos en la nube utilizando la API de inserción.
  4. Digamos que también realizó algunos cambios en la base de datos en la nube utilizando alguna otra interfaz / dispositivo / escritorio, necesitaría proporcionar una resolución de conflicto manual si alguna edición en los datos choca.

Si parece que le gusta lo que necesita, es posible que desee agregar más detalles en la pregunta sobre el uso exacto y tal vez obtendrá respuestas más claras y precisas.

¿Qué tipo de sistema de inventario necesitas? Si la nota de texto o la hoja de cálculo son suficientes para usted, puede usar las aplicaciones integradas de iOS (es decir, Notas y números) y el servicio de sincronización de iCloud. Puede editar el archivo fuera de línea, y su iPad sincronizará automáticamente el contenido actualizado a la nube cuando lo devuelva a Internet.

Si necesita funciones más complejas, como referencias cruzadas, desafortunadamente no hay una manera fácil de hacerlo.

La forma más económica es escribir su propia aplicación tanto en iPad como en escritorio con la biblioteca SQLite. La sincronización de datos se puede realizar fácilmente a través de servicios de Internet basados ​​en archivos, como iCloud drive o Dropbox.

Si tiene problemas para codificar, también hay aplicaciones comerciales para esto, aunque no es barato: FileMaker Pro. Su licencia comercial se cobra anualmente con una etiqueta de precios alucinante. Para uso personal también hay licencias individuales, pero sigue siendo muy costoso.

Todavía no he encontrado otra solución lista para usar para la base de datos personal con sincronización de datos. Lo siento.

Respuesta para más información:

Tabla 1: Árboles – Estáticos. mantenido en el escritorio.

  • Nombre común, nombre botánico
  • Velocidad de crecimiento
  • Esperanza de vida
  • Tamaño maduro
  • Multiplicador de precios (los árboles de crecimiento más lento obtienen multiplicadores más grandes)
  • Montón de banderas booleanas: nativas, comestibles, setos …

Tabla 2: Inventario. Vinculado a los árboles, precios estándar.

  • Ubicación
  • Tamaño de la maceta
  • Altura del percentil 20
  • Altura del percentil 80
  • Contar
  • Porcentaje vendible
  • Cuenta vendible (calculada)
  • Multiplicador
  • Fecha

Tabla 3: Precios estándar

  • Tamaño de la maceta
  • Volumen de la olla
  • Descripción del bote
  • Precio

Tabla 4: Clientes.

  • Nombre
  • Dirección
  • Teléfono
  • Email
  • Enlace a pedidos anteriores

Tabla 5: Artículos de factura

  • Código del objeto
  • Rellene desde los árboles en cuanto al nombre botánico y común.
  • Tamaño de la maceta
  • Rellene la descripción de la olla de precios estándar.
  • Contar
  • Precio (Calculado: Búsqueda de Potsize, Tree.Multiplier, Inv.multiplier)
  • Extensión (calculada a partir del precio y el recuento)

Tabla 6: Facturas

  • Enlace a artículos de factura, uno a muchos en el número de factura
  • Fecha
  • Enlace al cliente
  • Opciones de entrega / envío
  • Fecha de recogida / envío.

Interfaz de usuario.

  • Muchos elementos predeterminados al último elemento elegido
  • Listas desplegables escalonadas para la versión IOS. (Cultivo 80 tipos de árboles en 9 tamaños diferentes).
  • La versión de escritorio utilizará principalmente códigos para entradas de elementos

Sincronización.

  • Una persona puede estar trabajando en la base de datos en la casa, mientras que otra está trabajando en el campo. Tiene que ser robusto sobre las ediciones dobles con opciones para comparar cambios.
  • Todas las tablas tienen un tiempo de modificación de nivel de registro, una matriz de indicadores de bits de los campos que se modificaron y una persona de modificación.
  • La resolución debe usar el mod de campo más reciente cuando es diferente, pero si varios usuarios modificaron el mismo campo, entonces debe resolverse de forma interactiva.