database - software - red p2p
¿Hay una implementación de base de datos p2p por ahí (6)
Actualmente, estoy investigando modelos de aplicaciones p2p. Creo que a pesar de que los pares comparten datos entre sí, todavía hay un servidor de base de datos en alguna parte que contiene información de la cuenta del usuario. Tome Skype como ejemplo. Creo que están / estaban usando PostgreSQL aunque los usuarios establecen una comunicación p2p. Lo que me pregunto es si existe una implementación de la base de datos p2p, de modo que los datos se distribuyan (y encripten) a través de las computadoras cliente en lugar de alojarse en una granja de servidores.
De lo contrario, ¿sería extremadamente difícil / poco realista implementar una base de datos p2p?
En realidad, hay uno, pero necesita un nuevo mantenedor: Profeta
Prophet es un nuevo tipo de base de datos diseñada para el mundo post Web-2.0. Está hecho para permitirle colaborar con sus amigos y compañeros de trabajo sin necesidad de ningún tipo de servidor especial o proveedor de Internet.
El tono cargado de moda de Profeta dice algo como esto:
Una base de datos de propiedades replicada, desconectada, comparada, con bases, peer-to-peer, con resolución de conflictos autorreparable.
Incluso se ha usado para crear un rastreador de errores P2P llamado Defectos simples
Los marcos P2P generalmente se implementan independientemente de cualquier base de datos. Se enfocan en transportar información entre nodos. Algunos confían en bases de datos en memoria para almacenar información temporal. Con respecto a JXTA, el usuario puede configurar nodos para operar con bases de datos en memoria o basadas en archivos.
He estado en P2P durante bastante tiempo y no he escuchado acerca de un marco completamente orientado al usuario de la base de datos P2P. Creo que tendrá que implementar su marco P2P favorito encima de su base de datos.
Mencionas Skype, y este es un buen ejemplo. AFAIK, Skype distribuye su base de datos entre pares.
Sin embargo, tenga en cuenta que tienen una patente sobre algún tipo de base de datos distribuida entre pares. Si escribe algo, ¡asegúrese de no pisar su patente!
Creo que es parte de la razón por la que se vendieron por más de $ 8B a Microsoft.
Propongo que lea un poco sobre JoltID (compañía) que posee los derechos de propiedad intelectual de la patente estadounidense 7,480,658 "que cubre sistemas de bases de datos distribuidos y computación descentralizada coordinada entre pares "
No estoy seguro de si esto responde su pregunta directamente o no, pero me parece que cualquier tipo de aplicación que almacena datos localmente y ofrece sincronizar o compartir con otras instancias de sí mismo (o aplicaciones compatibles) es, de hecho, algún tipo de base de datos de igual a igual.
Tome una aplicación de motor de búsqueda distribuida, por ejemplo. Hay algunos experimentos en esa área (por ejemplo, http://yacy.net ). Utilizándolos, tienes un índice local que puedes compartir con tus compañeros, etc.
O, más al punto, un cliente bit torrent ...
Ninguno de estos se está comunicando a través de SQL propiamente dicho, ni existe necesariamente un servidor de BD que almacene información de cuenta de usuario. Cada una a su manera es, de hecho, en el ámbito de los almacenes de datos distribuidos.
En cada caso, el propósito de tener un "servidor" (o lo que sea que se haga referencia) es evitar que las instancias de la aplicación formen redes disjuntas que no se conocen entre sí. Lo mejor que sé es que no hay medios confiables para lograr esto de manera confiable sin algún tipo de puntos de referencia "siempre encendidos".
El giro, en el caso de Skype, es que además de querer dar forma a una red única, usted quiere a) autenticar a los usuarios cuando se unen a la red, yb) almacenar cierta cantidad de (pero no todos) la historia (ej. recibirá una notificación de llamadas perdidas y solicitudes de contacto, pero los mensajes de chat perdidos solo aparecerán cuando ambos clientes de Skype estén conectados).
Si está interesado en bases de datos no relacionales, hay muchas tiendas de valores-clave P2P transaccionales y no transaccionales, como memcached (dentro de un grupo de trabajo), o las diferentes implementaciones DHT (Distributed Hash Table) en Internet como entero (por ejemplo, CAN, acorde, pastelería, tapiz y quimera).
Este es un buen punto de partida: http://en.wikipedia.org/wiki/Distributed_hash_table
Una respuesta tardía, pero puede ser útil para que otros tengan la misma pregunta. Estoy de acuerdo con @JVerstry en que las implementaciones de las bases de datos P2P generalmente son solo capas de comunicación y sincronización que se colocan sobre una base de datos estándar.
Conozco un proyecto que básicamente realiza la replicación bidireccional y la resolución de conflictos en una base de datos entre varias copias en red, y cada nodo tiene una copia completa. Esta es de hecho una base de datos P2P, pero tenga en cuenta que hay otros tipos (@Canuck menciona correctamente los DHT, que se utilizan para implementar búsquedas en redes donde cada nodo contiene una copia parcial de la base de datos).
Para un enfoque NoSQL, puede mirar Refuge , que se basa en CouchDB. Creo que es temprano en el momento de escribir, pero parece interesante.