Trabajo_Final_de_Grado_GATTO_

Anuncio
1
BASES DE DATOS Y TRANSACCIONES DE
COMERCIO ELECTRÓNICO
Sebastián Leandro Gatto Pereyra - Pablo Genoud
Profesora: Ana Darcacha

Abstract--Basic guidelines for the preparation of a technical
work for the IEEE
I. INTRODUCCION
El presente trabajo analizará los principios básicos del
comercio electrónico, así como la realización de una
comparación entre los diferentes modelos de transacciones,
tratando de evaluar sus pros y sus contras.
II. OBJETIVOS
E
l trabajo se encargará de demostrar que las transacciones
que cumplen con las propiedades ACID (Atomicidad,
Consistencia, Aislamiento y Durabilidad) son las apropiadas
para el correcto manejo del comercio electrónico del tipo B2C
(Business-to-Consumer).
Debido al alto crecimiento de los últimos años del comercio
electrónico es de suma utilidad entender que modelo en
necesario utilizar al gestionar un negocio que sea rentable y
con una buena respuesta al cliente.
III. MARCO TEORICO
El Comercio es el proceso y los mecanismos utilizados,
necesarios para colocar las mercancías, que son elaboradas en
las unidades de producción, en los centros de consumo en
donde se aprovisionan los consumidores, último eslabón de la
cadena de comercialización. Es comunicación y trato.
El comercio electrónico se entiende como cualquier forma
de transacción comercial en la cual las partes involucradas
interactúan de manera electrónica y no de la manera
tradicional por medio de intercambios físicos o trato físico
directo.
Actualmente la manera de comerciar se caracteriza por el
mejoramiento constante en los procesos de abastecimiento, y
como respuesta a ello los negocios a nivel mundial están
cambiando tanto su organización como sus operaciones. El
comercio electrónico es el medio de llevar a cabo dichos
cambios dentro de una escala global, permitiendo a las
compañías ser más eficientes y flexibles en sus operaciones
internas, para así trabajar de una manera más cercana con sus
proveedores y estar más pendiente de las necesidades y
expectativas de sus clientes. Además permiten seleccionar a
los mejores proveedores sin importar su localización
geográfica para que de esa forma se pueda vender a un
mercado global
Jaime Neilson dice que: "El comercio electrónico es
cualquier actividad de intercambio comercial en la que las
órdenes de compra - venta y pagos se realizan a través de un
medio telemático, los cuales incluyen servicios financieros y
bancarios suministrados por Internet. El comercio electrónico
es la venta a distancia aprovechando las grandes ventajas que
proporcionan las nuevas tecnologías de la información, como
la ampliación de la oferta, la interactividad y la inmediatez de
la compra, con la particularidad que se puede comprar y
vender a quién se quiera, y, dónde y cuándo se quiera. Es toda
forma de transacción comercial o intercambio de información,
mediante el uso de Nueva Tecnología de Comunicación entre
empresas, consumidores y administración pública."
¿Qué es una transacción?
Una transacción es una colección de acciones que hacen
transformaciones consistentes de los estados de un sistema
preservando la consistencia del mismo. Una base de datos está
en un estado consistente si obedece todas las restricciones de
integridad definidas sobre ella.
Las transacciones o terminan con éxito y son grabadas en la
base o bien fracasan y debe ser restaurado el estado anterior de
la BD.
Resuelve los problemas de que una operación compleja se
interrumpa en un momento indeterminado y que varios
usuarios concurrentemente traten de hacer operaciones sobre
los mismos datos.
Tipo Transacciones en el Comercio Electrónico
“B2B” (Business to business): las empresas pueden
intervenir como compradoras o vendedoras, o como
proveedoras de herramientas o servicios de soporte para el
comercio electrónico, instituciones financieras, proveedores de
servicios de Internet, etc.
“B2C” (Business to consumers): las empresas venden sus
productos y prestan sus servicios a través de un sitio Web a
clientes que los utilizarán para uso particular.
C2C (Consumers to consumers): es factible que los
consumidores realicen operaciones entre sí, tal es el caso de
2
los remates en línea.
C2A (Consumers to administrations): los ciudadanos
pueden interactuar con las Administraciones Tributarias a
efectos de realizar la presentación de las declaraciones juradas
y/o el pago de los tributos, obtener asistencia informativa y
otros servicios.
B2A (Business to administrations): las administraciones
públicas actúan como agentes reguladores y promotores del
comercio electrónico y como usuarias del mismo.
Propiedades ACID
garantiza que el resto de usuarios no observen los cambios
intermedios.
El gestor de transacciones es la parte del gestor de base de
datos que se asegura de mantener la atomicidad, durabilidad y
aislamiento de las transacciones. Si no hay ningún error, al
acabar la transacción esta se da por definitiva. Si se produce
un error durante la transacción, el sistema debe restaurar la
base de datos al estado en que estaba justo antes de que
empezara la transacción. Este proceso se denomina
recuperación de fallos
Estas cuatro características de los sistemas gestores de bases
de datos se suelen resumir con el acrónimo ACID, que
corresponde con las iniciales en ingles de Atomicidad
(Atomicity),
Consistencia
(Consistency),
Aislamiento
(Isolation) y Durabilidad (Durability)
Teorema CAP:
Tome DOS
Uno de los objetivos de usar una base de datos es el de
garantizar la atomicidad de un conjunto de operaciones (Se
utiliza la palabra atómico haciendo referencia al latín atomus,
y éste del griego άτομος, con el significado de indivisible). La
atomicidad es la garantía que da el sistema de que, ante la
ejecución de una serie de operaciones englobadas en lo que se
denomina una transacción, o bien se ejecutan todas las
operaciones, o bien no se efectúa ninguna.
El conjunto de operaciones se ejecuta en su totalidad o no
se ejecuta en absoluto, no dejando ningún efecto sobre el
sistema. Una vez empezada una transacción, por tanto, esta
puede acabar con una confirmación que la hace definitiva
(Commit) o puede ser cancelada en su totalidad (Rollback)
La atomicidad facilita mantener la consistencia de los datos.
Una base de datos es consistente si se garantiza que siempre se
verifican unas determinadas condiciones. Las condiciones
deben cumplirse obligatoriamente antes y después de la
transacción (pero pueden incumpliese transitoriamente dentro
de la misma).
Otra característica destacable de una transacción es que
debe ser durable. Esta garantiza que, en el instante en el que se
finaliza la transacción, esta perdura. Incluso en el caso de fallo
en el sistema, este deberá ser capaz de recuperarse y controla
todas la transacciones que hayan sido completadas.
Finalmente, un sistema de transacciones debe garantizar el
aislamiento. El aislamiento es la garantía de que los cambios
hechos dentro de cualquier transacción son invisibles al resto
de las transacciones, mientras esta no haya concluido. Así se
Con el teorema CAP se pueden implementar dos de las
siguientes tres propiedades, pero no las tres a la vez:
Consistency o Consistencia fuerte: En el sentido de las
transacciones ACID. Todos los clientes ven la misma versión
de los datos, incluso en presencia de actualizaciones, de forma
consistente.
Availability o Disponibilidad: El sistema está disponible y
responde en un tiempo adecuado a todos los clientes. Este
concepto está muy relacionado con el tiempo de respuesta. Si
el tiempo de respuesta excede un umbral, el sistema se
considera no disponible. Este umbral puede ser el timeout de
un socket, pero también puede ser la paciencia del usuario.
Partition Tolerance o Tolerancia a fallos: Incluso en
presencia de fallos en el servidor, todos los clientes pueden
tener servicio y poder acceder a los datos. Un sistema tolerante
a fallos sigue funcionando aunque uno de sus servidores se
caiga o se corten algunas de las conexiones de red entre
servidores. Un sistema completamente tolerante a fallos sólo
puede dejar de funcionar si caen todos los servidores o se
pierde el contacto con todos ellos.
En los siguientes gráficos se puede observar dos nodos con
3
valores iguales inicializados en cero. Luego uno de los nodos,
el N1 actualiza su valor. Para que luego en el siguiente paso el
valor correspondiente al nodo N1 se traslade al nodo N2. Este
lee el valor. Sin la tolerancia a fallos habría partes de la red
que no se comunicarían y los valores serian diferentes en los
distintos nodos.
4º Paso:
1º Paso:
Falta de tolerancia a fallos:
2º Paso:
3º Paso:
En el teorema CAP
se debe seleccionar bien las
propiedades que se quieran utilizar. Hay que enfatizar que no
tiene que ser una decisión de todo o nada. Se puede sacrificar
algo de consistencia en vez de toda la consistencia. También
se puede sacrificar un poco de disponibilidad, que en la
práctica es permitir que se degrade el tiempo de respuesta e
incluso que algunos clientes pierdan disponibilidad por un
tiempo limitado. O bien se puede decidir perder algo de
tolerancia a fallos, que en la práctica significa tolerar una
cantidad limitada determinada de fallos pero nada por encima
de un límite.
La forma en que podemos conseguir tolerancia a fallos es
tener muchos nodos por si se cae uno, haya otro capaz de
tomar su lugar. Si se quiere un sistema tolerante a fallos y que
además tenga consistencia absoluta, se debe replicar los datos
4
entre los nodos cada vez que hagamos una escritura. Al
escribir, todos los nodos deben replicarse y se debe esperar
hasta que este hecho suceda para poder dar por terminada la
operación. Esto como es normal hace que la operación sea
tanto más lenta cuanto más nodos existan, lo que degrada el
tiempo de respuesta y por lo tanto la disponibilidad. Otro
efecto negativo es que aumenta la probabilidad de que la
operación no se produzca con éxito, ya que debe escribir en
todos los nodos, y alguno puede estar caído, y para que la
operación sea exitosa debe escribir en todos los nodos. La
probabilidad de que al menos un nodo esté caído aumenta con
el número de nodos totales del sistema, con lo que cuanto más
nivel de replicación tenemos, más probabilidad de fallar en la
operación y por lo tanto de falta de disponibilidad. Esto va en
contra de la disponibilidad del sistema. Como contrapartida
sólo se necesita leer de un nodo, con lo que en la lectura tiene
gran rendimiento, disponibilidad y tolerancia a fallos. Las
bases de datos tradicionales suelen usar el enfoque
anteriormente expuesto como mecanismo de tolerancia a
fallos.
Si se quiere aumentar la disponibilidad, la operación debe
terminar antes, lo que implica que no se puede esperar a que se
repliquen todos los nodos, sino sólo uno o quizás unos cuantos
pero no todos. El hecho de que la operación termine antes de
que todos los nodos se repliquen aumenta la disponibilidad
pero a su vez degrada la consistencia al no tener todos los
nodos la misma información. Así si un cliente lee de un nodo
que pudo ser replicado no tendrá problema, pero si lee de un
nodo que aún no ha sido replicado se producirá una lectura
inconsistente con la escritura anterior. Normalmente los
sistemas que permiten sacrificar consistencia por
disponibilidad, tiempo de respuesta y tolerancia a fallos
implementan un modelo de consistencia llamado eventually
consistency (consistencia eventual).
En sistemas con consistencia eventual, si bien al terminar
una operación el sistema puede estar inconsistente, se
garantiza que al cabo de un tiempo el sistema quedará en un
estado consistente, es decir, que eventualmente se conseguirá
un estado consistente. Cuanto más tiempo pase entre la
escritura y la lectura más probabilidad habrá de que el sistema
sea consistente. No se puede especificar un tiempo mínimo
para que se produzca esta consistencia ya que el sistema puede
sufrir algún fallo
El hecho de que pueda existir inconsistencia complica la
lógica de los clientes
La inconsistencia también puede presentarse en la escritura,
en el caso en el que se intentase escribir en varios nodos, cada
uno con una versión diferente. En sistemas con grados de
consistencia no estricto, el cliente tiene la posibilidad de
detectar inconsistencias, pero por contra le queda la papeleta
de resolver el conflicto entre varias versiones.
Esto quiere decir que la resolución de conflictos queda en
mano de reglas de negocio en vez de en algoritmos genéricos.
Otro hecho a considerar sobre este tipo de sistemas es que
se puede especificar un grado de consistencia diferente a las
operaciones de lectura y escritura. Esto permite optimizar el
rendimiento de las escrituras o de las lecturas en función de lo
que nos interese.
También puede tener una vía alternativa: sacrificar la
tolerancia a fallos y tener sólo un nodo. De esta forma sólo se
necesita escribir y leer del único nodo del sistema, con lo que
se consigue consistencia y disponibilidad mientras el nodo no
se caiga. Estos sistemas tienen tolerancia a fallos cero. Este es
el enfoque clásico de una base de datos tradicional sin
tolerancia a fallos.
Este enfoque no está totalmente libre de la degradación del
tiempo de respuesta o de la disponibilidad aunque no se haya
producido ningún fallo.
En el caso de que ocurra que dos clientes quieren ejecutar
dos transacciones concurrentes que afectan al mismo dato, se
produce un conflicto. Si se utiliza ACID estricto, se invoca la
propiedad de aislamiento transaccional y serializan las
transacciones ya que intentan acceder al mismo dato. Para ello
se suele implementar un mecanismo de bloqueo a nivel de fila,
aunque también es típico bloqueo a nivel de tabla. Este
mecanismo se suele llamar concurrencia pesimista, y puede
llevar a la degradación del tiempo de respuesta o incluso a la
indisponibilidad del sistema con alta carga de transacciones
concurrentes. Esto ocurre en un sistema con un único nodo, es
decir con tolerancia a fallos cero.
Los fabricantes de base de datos saben esto y por ello
permiten relajar la consistencia mediante una disminución en
el grado de aislamiento de las transacciones. Si se relaja el
grado de aislamiento, se puede usar concurrencia optimista,
que consiste en no bloquear filas y al escribir comprobar si la
versión que está en la DDBB es la misma que la versión que
leímos al principio de la transacción. En caso de que sea así no
hay conflicto. En caso de que sean distintas versiones se
produce un conflicto y hay que solucionarlo. Los algoritmos
para solucionarlos son: fallar, sobrescribir, fusionar
automáticamente o fusión manual por parte del usuario.
Si se tiene un sistema de persistencia tradicional, no
tolerante a fallos, y se quiere escalar, se tiene que bajar el
aislamiento transaccional y usar concurrencia optimista, lo que
lleva a la necesidad de gestionar conflictos e inconsistencias
en la aplicación.
El objetivo de diseño de un sistema tradicional siempre ha
sido favorecer la consistencia sobre las otras propiedades del
sistema. Esto lleva al dilema de o bien sacrificar la
disponibilidad o la tolerancia a fallos. Es decir, se quiere un
sistema disponible y consistente, que responda a todos los
clientes en un tiempo razonable, no puede ser tolerante a fallos
y por lo tanto no se puede caer ningún servidor o línea de
comunicación. Si se tiene un sistema tolerantes a fallos y
consistente, y se produjera un fallo de red o la caída de una
máquina, el sistema seguiría funcionando, pero o bien el
tiempo de respuesta se degradaría o algunos clientes perderían
el servicio temporalmente.
Estos compromisos entre disponibilidad y tolerancia a
fallos pueden ser aceptables en aquellas aplicaciones donde la
consistencia es crítica, y el coste de un fallo en la consistencia
es mayor que el coste de estar un tiempo sin servicio o que el
5
sistema responda muy lentamente.
Concepto BASE:
software, videojuegos, electrónica, ropa, muebles, comida,
libros, etc.
La misma ha absorbido numerosas empresas, al igual que
Google o Microsoft. Algunas de estas adquisiciones son:
Audible (una empresa de audiolibros), BookSurge (dedicada a
los libros de baja demanda), Mobipocket (la cual crea ebooks
y dispositivos para libros electrónicos) o Fabric.com (una
empresa de costura).
Además, ha lanzado sus propios productos como el
AmazonKindle, lectura de libros electrónicos.
Dynamo es un producto interno de Amazon. Esta orientado
a AP (Availability, Partition Tolerance). Sacrificando la
consistencia. Adopta Eventual Consistency. Muchos servicios
internos de Amazon necesitan acceder por Clave a un Valor.
Los Datos son particionados y replicados
Cientos de Servicios en Amazon
BASE: (Basic Available, Soft state, Eventually consistent)
Es diametralmente opuesto a ACID. ACID es pesimista,
fuerza la consistencia al final de cada operación.
BASE es optimista, acepta que el estado de la base esté en
cambio. Provee disponibilidad soportando fallas parciales,
por ejemplo: Tener la base de usuarios particionada en 5
servidores. Si falla uno, sólo afecta al 20% de los usuarios
CASO PRÁCTICO:
AMAZON:
El caso especifico de Amazon es uno de los pioneros del
área de comercio electrónico B2C últimamente este tipo de
mercado se ha venido consolidando debido a la extrema
competencia que ya existe en el medio, siendo el mismo
comparado con dos áreas que utilizan establecimientos físicos
para el consumidor final.
Fundada como Cadabra.com por Jeff Bezos en 1994 y
lanzada en 1995, comenzó como una librería online. Tenía
más de 200.000 títulos y estos se podían pedir por e-mail.
Tiempo después la bautizó Amazon (río sudamericano) y ya
que en ese momento circulaban listas ordenadas
alfabéticamente, posicionándose en los primeros lugares. El
15 de mayo de 1997 amazon.com salió a la bolsa,
específicamente a la NASDAQ con el símbolo AMZN y a un
precio de 18 dólares la acción.
El primer plan económico era inusual: La compañía no
cambió nada en 4 o 5 años; tiempo después, pensando en
retrospectiva, la estrategia funcionó bien. En 2002 logró un
beneficio de 3900 millones de dólares, 5300 millones en 2003,
6900 millones en 2004, 8500 millones en 2005 y 10700
millones en 2006.
Además, la prestigiosa revista Time Magazine calificó a
Bezos como la persona del año en 1999, por ser dueño de
Amazon, que se había vuelto muy popular.
En la actualidad está totalmente diversificada en diferentes
líneas de productos, ofreciendo DVDs, CDs de música,
Las Operaciones: Cada clave tiene un nodo coordinador
asignado. La clave-valor se replica en otros servidores.
Put(key, value, context): Hay una clave, valor. Siempre
toma el “write”. El contexto tiene información como la
versión. Y puede pedir que se escriba en W nodos
Get(key): Dado la clave, recupera el valor Y el contexto.
Puede dar un valor, o una lista de valores en conflicto. La
aplicación decide qué hacer con los conflictos. Puede pedir
valores de R nodo
Utiliza anillos de nodos. Si alguno de los nodos se cae. pasa
a usar otro para manejar la clave K
6
GOOGLE BIGTABLE
Google creo Bigtable porque los sistemas de bases de datos
tradicionales no le permitían crear sistemas lo suficientemente
grandes.
Las
bases
de
datos
relacionales,
(MySQL,PostgreSQL, Firebird u Oracle) que se diseñaron
pensando que se ejecutarían en una solo servidor con mucha
potencia Nunca imaginaron que podrian distribuirse en miles
de servidores distintos.
El pilar basico de BigTable es que se diseña para almacenar
una gran cantidad de datos , del orden de los PetaBytes. Cada
tabla esta dividida en "Tablets" que tienen como maximo 200
Mb. En el caso de que se supere esa cantidad automaticamente
se divide, comprimen y son enviadas a mas maquinas usando
un sistema de compresion propietario de Google
Bigtable posee algunas particularidades, aunque se parezca
a una base de datos relacional rompe con algunas de sus
premisas. Por ejemplo, las tablas se dividen en conjuntos de
columnas y estos en columnas. Es posible añadir columnas a
una tabla en cualquier momento y no es posible borrar filas,
solo podemos reemplazarlas por unas nuevas que ocultan las
anteriores. Los datos se localizan usando tres llaves, la fila , la
columna y un timestamp (Fecha+Hora) Asi acceder a filas
borradas consiste en hacer referencias a ellas con un timestamp
de la fecha anterior al borrado.
Cada celda almacena una cadena de texto sin tipo, por
consideraciones de rendimiento se suelen almacenar los datos
de forma binaria, es decir, como volcados de la memoria que
los contenían. Como crear columnas es tan sencillo, la
columna en sí es un nuevo almacén.
Bigtable prioriza de CAP, la consistencia y la
disponibilidad. No tiene replicación a nivel de base de datos,
esta misma la hace el Google File System.
Es utilizado en Web indexing, Google Earth, Google
Finance, Google Analytics, etc. Estas aplicaciones manejan
datos desde simples URLs a fotos satelitales, desde batch hasta
datos para usuarios finales en el momento
CASSANDRA
Cassandra es una base de datos de código abierto cuya
principal característica es que fusiona Dynamo, de Amazon
con BigTable, de Google, siendo ambas implementaciones de
código cerrado.
El desarrollo de Cassandra fue iniciado por Facebook, para
intentar solventar la problemática relacionada con el
rendimiento del motor de búsquedas, concretamente con las
relacionadas en la comunicación entre usuarios. Esta
funcionalidad implica un gran volumen de datos a almacenar,
con una perpectiva de crecimiento muy alta (el boom de las
redes sociales se produjo después de la implementación de
Cassandra) y la necesidad de ofrecer un nivel de calidad de
servicio fijado.
Debido a la verticalidad de soluciones de datos relacionales
y a la necesidad de ajustar el coste de la implementación, se
diseñó Cassandra para que las configuraciones de explotación
fuesen altamente escalables, horizontales y relativamente
económicas. Con este objetivo en mente, se amplió el espectro
de funcionalidades de la plataforma Facebook a las que daría
servicio, y no únicamente la “Inbox Search” como se
provisionó en un inicio.
En 2008 Cassandra fue liberada por Facebook, pasando a
ser de código abierto, y actualmente es la gente de Apache
quien la mantiene. Esta característica es la que hace de
Cassandra una base de datos NoSQL realmente interesante, ya
que aparte de combinar lo mejor de Dynamo (consistencia
eventual) con lo mejor de BigTable (familias de columnas) es
gratuita y de libre uso y distribución. Está desarrollada en
Java, un lenguaje de programación Multi-plataforma.
Las características del modelo de datos de Cassandra es el
siguiente:
Una tabla de datos por cada instancia de Cassandra.
Cada familia de columnas puede contener o bien columnas
o bien supercolumnas. Las supercolumnas son columnas son la
agrupación de n-columnas.
Cada columna contiene elementos de la forma “ClaveValor-Tiempo”, donde el valor del campo tiempo es definible
por el usuario.
Cada fila de una tabla puede tomar valores en columnas
distintas de una familia de columnas que otra fila, es decir, si
se dispone de una familia de 5 columnas (A, B, C, D, E), la
fila R1 puede tener valores en A y B mientras que la fila R2
puede tenerlos en A, C, D y E.
Cassandra comparte con Dynamo el mecanismo de
membresía de los nodos, siendo ésta comunicada mediante un
mecanismo de Gossiping, así como la alta disponibilidad
conseguida mediante replicación de nodos, mientras que por
otra parte implementa un mecanismo de estimación/detección
de fallos mediante acumulación.
IV. DESARROLLO
La principal causa del abandono de las empresas a las bases
de datos que cumplen con las propiedades ACID es la falta de
tolerancia a fallos. Además de esta propiedad la otra utilizada
es la disponibilidad por lo que los websites más importantes
del planeta avalan y ponen en evidencia la utilización del
Teorema de Bower. Si funciona para ellos no hay razón para
que no sea considerada para el comercio electrónico B2C.
La implementación de las características ACID se torna
bastante dificultoso ya que para el proceso de una transacción
solicita una gran cantidad de reducidos cambios.
También se debe mantener al día los índices que el motor
utilizar para poder realizar búsquedas dentro de tiempos
aceptables por los usuarios que utilizan la herramienta
Por otro lado estas cantidades de operaciones que se
utilizan dentro de una transacción con propiedades ACID
pueden fallar por diferentes razones. Un caso típico es la
7
sobrecarga del CPU asignado al motor.
Es difícil poder garantizar las características que componen
ACID en un ambiente de red. Las conexiones de red pueden
fallar. Teniendo en cuenta que la mayoría de las base de datos
se utilizan en entornos multi-usuario, en los que muchos
clientes utilizando la misma aplicación muchos clientes
acceden a la misma base de datos y dos usuarios al mismo
tiempo.
Existen varias técnicas en ACID para controlar la concurrencia
simultanea a los datos. Los bloqueos es una de ellas utilizada
en la mayoría de las base de datos relacionales. Pero también
existe otras como el control Muli-Version o las marcas
Timestamp.
Para poder tener un proyecto web con tolerancia a fallos y
disponibilidad se necesita incorporar a la arquitectura un
determinado numero de nodos o servidores de forma que si
uno de ellos cae haya otro capaz de tomar el control del nodo
caído. Hay dos tipos de escalabilidad, la vertical y la
horizontal. La escalabilidad vertical, es utilizar CPUs,
memoria RAM y discos, aunque esto implica un aumento
elevado de presupuesto. En cambio la escalabilidad horizontal,
se utilizan más servidores en forma paralela, teniendo la
información en forma distribuida.
Utilizar solamente tanto la disponibilidad como la
consistencia, dejando de lado la tolerancia a fallos seria un
desaprovechamiento de las propiedades CAP. El tomar esta
decisión implica que únicamente se necesita escribir y leer del
único nodo del sistema consiguiendo por un lado consistencia
y disponibilidad, pero por otro lado hay un alto riesgo
presente.
Para poder evitar la tolerancia a fallos es necesario poner
todo lo relacionado con la operación en una maquina o en una
unidad como por ejemplo un rack. No esta garantizado en un
100 % porque se puede tener fallas parciales, pero reduce que
se obtengan efectos secundarios. Aunque hay limites de
escalamiento por lo que la tolerancia a fallos es muy
importante.
Tener un sistema no disponible implica la imposibilidad de
realizarse muchas transacciones. El volumen de negocio
generado por el comercio electrónico B2C en 2009 se sitúa en
un incremento del 15,9% respecto a 2008.
En los últimos años hay un crecimiento en los pagos
mediante tarjeta de crédito, aunque el pago en efectivo sigue
siendo el más utilizado por los usuarios de comercio
electrónico de Argentina.
Uno de cada cuatro usuarios compra mediante alguna
modalidad online, lo que representa unos 5,4 millones de
personas. El mayor uso de estos medios de pago es en el
interior del país. Tanto el mayor uso de las tarjetas de crédito,
como el factor confianza y que haya más gente bancarizada
influye mucho en este tipo de comercio.
Los usuarios que deben realizar pagos de elevados montos,
los realizan mas con tarjeta de crédito y hacen un uso más
sofisticado de las opciones de la banca online
El monto anual de compras electrónicas B2C ascendería
alrededor de $ 11000 millones. Durante 2010 las ventas online
crecieron un 48% en el país, lo que se tradujo en movimientos
por $ 7.755 millones, según datos de la Cámara Argentina de
Comercio Electrónico. Del total de 26,5 millones de usuarios
de Internet, el 49,3% consulta la Web para la toma de
decisiones sobre la compra de un producto o servicio. Para
2011, se espera que el negocio crezca a 11000 millones.
Este incremento en el volumen de negocio está relacionado
principalmente con sistemas disponibles, además de con el
aumento del porcentaje de internautas y del porcentaje de
aquellos
internautas
que
realizan
comercio
electrónico/compras. Todo ello, unido a un gasto medio por
comprador explica el volumen de negocio resultante en 2009 y
su crecimiento en relación al año anterior.
Con respecto a la disponibilidad se debe garantizar que el
cliente tenga una respuesta aceptable del sistema cuando esté
realizando operaciones tanto sea de compra y/o de venta. De
otra manera el sistema seria demasiado lento y el mismo
abandonaría la transacción. Un dato que se puede mencionar
para sustentar la necesidad de esta característica es la edad de
los compradores. La misma va de una franja de 25 a 49 años,
especialmente en la franja de 35 a 49 años. Son residentes en
hábitats urbanos; con estudios universitarios; de un nivel
socioeconómico alto y medio alto y trabajadores activos de
tiempo completo. Se vive en una época en donde hay muchas
ofertas de un mismo producto entonces si una pagina no tiene
un tiempo de respuesta rápido el usuario sin dudarlo cambiara
de lugar en donde realizar la operación, ya sea buscar el
mismo en otro portal, mediante un producto sustituto o ir
directamente al local en donde se encuentra físicamente.
V.
CONCLUSION
Para el correcto manejo de comercio electrónico del tipo
B2C no es recomendable la utilización de las propiedades
ACID debido a que se utiliza grandes aplicaciones de escritura
escalables, por lo que las bases relacionales no es la mejor
opción. La normalización de datos, los joins, y las
transacciones ACID son anti-patrones para la escritura
escalable. La opción más apropiada es la utilización del
Teorema CAP, que permite usar dos de las tres opciones según
la necesidad. En el comercio electrónico B2C se deberá dar
prioridad a la disponibilidad, bajo tiempo de respuesta y
tolerancia a fallos.
Muchas de las compañías mundialmente conocidas utilizan
este teorema como por ejemplo Amazon, Google, Yahoo,
eBay, Mercado Libre dado que no pueden permanecer sin
servicio por mucho tiempo. Tanto Amazon como eBay no
tienen problemas de escalabilidad. Los han tenido pero ahora
tienen las herramientas para solucionarlo. Una décima de
segundo más, cuesta 1% de las ventas. En Google medio
segundo de latencia, baja el tráfico en un quinto.
Otros gigantes como Linkedin, Facebook o Twitter pueden
soportar grados de inconsistencia en los datos que muestra
pero no admite una caída o degeneración del rendimiento. Es
por esto las empresas citadas anteriormente dejaron de lado las
8
transacciones que cumple con las propiedades ACID.
El teorema de CAP se utiliza en diversas bases de datos
Cassandra, MongoDb, CouchDB y Riak entre otras. Estas
mismas también son las más indicadas para la utilización en
software como servicio, cloud computing con millones de
usuarios. Todo esto trae aparejado problemas de alta
escalabilidad que las bases de datos tradicionales pueden
adaptarse para hacerlos escalar en los escenarios mas
complejos pero a veces se empiezan a utilizar triples y
cuádruples joins en las consultas que no necesariamente son
altamente performantes. También se trata de utilizar
almacenamiento en cache para la aceleración de estas
consultas complejas y asi poder evitar la ejecución de todas las
pesadas operaciones que resulta una carga excesiva para el
CPU.
Los sistemas NoSQL tratan de atacar estos problemas que
surgen a medida que nuevos paradigmas van apareciendo
mediante una estructura interna más versátil pero distinta al
almacenamiento de las base de datos relacionales. Puede
llegarse a perder funcionalidades como las transacciones que
engloban operaciones en más de una colección de datos, o
tener la incapacidad de ejecutar el producto cartesiano de dos
tablas teniendo que recurrir a la desnormalización de datos.
En ambientes en donde el escalamiento se da de forma
repentina, el teorema de cap da una solución robusta, sobre
todo por el altísimo rendimiento que propone.
Actualmente además de utilizarse como almacenamiento
primario, se implementan en entornos de persistencia para
guardar caches y otros datos los cuales la velocidad juega un
papel principal.
Se darán ejemplos de grandes empresas tales como
Amazon, Google y Cassandra.
Se indicara el porque del uso del Teorema de Brewer de las
principales empresas en vez de las propiedades ACID. Siendo
la falta de tolerancia a fallos la principal causa del abandono.
Technical Reports
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
ABSTRACT
[12]
El comercio electrónico va teniendo un crecimiento
exponencial a medida que pasa los años. El monto anual de
compras electrónicas B2C ascendería alrededor de $ 11000
millones. Durante 2010 las ventas online crecieron un 48% en
el país, lo que se tradujo en movimientos por $ 7.755 millones.
Para 2011, se espera que el negocio crezca a 11000 millones.
Por lo que en este documento se describirá tanto las
propiedades ACID, el teorema CAP, el concepto BASE.
Se denomina ACID a un conjunto de características
necesarias para que una serie de instrucciones puedan ser
consideradas como una transacción. En concreto ACID es un
acrónimo de: Atomicidad, Consistencia, Aislamiento y
Durabilidad.
El Teorema CAP, también llamado Teorema de Brewer,
establece que solo se pueden satisfacer hasta dos de las tres
características al mismo tiempo, pero nunca las tres:
Consistencia, Disponibilidad, Tolerancia a Fallos. El sistema
sigue funcionando a pesar de algunas pérdidas arbitrarias de
información o fallas parciales del sistema.
El concepto BASE es diametralmente opuesto a ACID, es
optimista, acepta que el estado de la base esté en cambio.
Provee disponibilidad soportando fallas parciales.
[13]
[14]
[15]
Euribates “Base de datos – Gestion de transacciones ACID” Marzo
2008
Available: http://databas.blogspot.com/2008/03/16-gestin-detransacciones-acid.html
Enrique Amodeo “noSQL (2): No necesitas ACID” May 2010
Available: http://eamodeorubio.wordpress.com/2010/05/17/nosql-2-nonecesitas-acid/
Leonardo De Seta “NoSQL y varias alternativas a las bases de datos”
March 2010
Available: http://www.dosideas.com/noticias/base-de-datos/864-nosqluna-alternativa-a-las-bases-de-datos.html
Beatriz Carreño, “Comercio Electrónico” July 2009 Available:
http://www.monografias.com/trabajos15/comercioelectronico/comercio-electronico.shtml#TIPOS
Angel Java Lopez, “Introduccion a NoSQL” Marzo2009 Available:
http://altnet-hispano.pbworks.com/f/NoSqlVan2010.pptx
G.Bracho ,M.Bracho, E.Cotte ,C.Haydon, M.Molina, “Modelos de
Negocios B2C” Available:
http://www.slideshare.net/guest94631/modelo-de-negocio-b2cpresentation
Cristian
Requena,
“Cassandra”
April
2010.
Available:
http://www.nosql.es/blog/nosql/cassandra.html
Wikipedia “ACID” Available: http://es.wikipedia.org/wiki/ACID
Wikipedia
“Teorema
CAP”
Available:
http://es.wikipedia.org/wiki/Teorema_CAP
GNOSS “Teorema de Brewer o CAP” March 2010 Available:
http://www.gnoss.com/comunidad/nextweb/recurso/Basicos-deInternet-Teorema-de-Brewer-o-CAP/0ae5ad19-8f63-422d-98d634bec3eba38a
Víctor S. Manzhirova , “Comercio electrónico, las transacciones a
través de Internet baten récords de facturación” March 2010
Available:
http://www.tuexpertoit.com/2011/03/18/comercioelectronico-las-transacciones-a-traves-de-internet-baten-records-defacturacion/
Estergio Artigas , “Las Alternativas NoSQL” , July 2010 Available:
http://sartigas.blogspot.com/2010/07/la-alternativa-nosql.html
Carlos Sanchez , “Base de Datos RDBMS vs NoSQL” February 2011
Available: http://carlosanchezperez.wordpress.com/2011/02/14/basesde-datos-rdbms-vs-no-sql-una-r-evolucion/
Moises Vazquez, “Big Table & GFS”October 2010 Available:
http://docencia.etsit.urjc.es/moodle/mod/forum/discuss.php?d=11268
ONTSI “Estudio B2C 2010”Octubre 2010 Available:
http://www.ontsi.red.es/articles/detail.action?id=4877&request_locale=e
s
Papers Presented at Conferences (Unpublished):
[16] Julian Browne, “Brewer's CAP Theorem - The kool aid Amazon and
Ebay have been drinking” Jan 2009 Available:
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
[17] J.Arias, G. Brey, G. Coco, Nicolas Passerini, “Arquitectura de
Persistencia” January 2005 Available: http://apit.wdfiles.com/local-files/start/03_apit_persistencia.pdf
VI.
GLOSARIO
ACID: En bases de datos se denomina ACID a un conjunto de
características necesarias para que una serie de instrucciones
puedan ser consideradas como una transacción. Así pues, si un
sistema de gestión de bases de datos es ACID compliant quiere
9
decir que el mismo cuenta con las funcionalidades necesarias
para que sus transacciones tengan las características ACID.
Amazon: Es una compañía estadounidense de comercio
electrónico con sede en Seattle, Estado de Washington. Su
lema es and you're done (Traducido al español: «y listo»). Fue
una de las primeras grandes compañías en vender bienes a
través de Internet. Amazon también posee Alexa Internet,
a9.com, Shopbop, Kongregate, Internet Movie Database
(IMDb), Zappos.com y DPreview.com.
BigTable: Es un motor de bases de datos creado por Google
con las características de ser: distribuido, de alta eficiencia y
propietario construído sobre GFS (Google File System),
Chubby Lock Service, y algunos otros servicios y programas
de Google.
CAP: El Teorema CAP, también llamado Teorema de Brewer,
establece que es imposible para un sistema de computo
distribuido dar simultaneamente las siguientes tres garantías:
Consistencia, Disponibilidad y Tolerancia a fallos.
Cassandra: Apache Cassandra es una Base de Datos no
relacional (NO SQL), distribuida y basada en un modelo de
almacenamiento de Clave-Valor, escrita en Java
Cloud Computing: Modelo de prestación de servicios de
negocio y tecnología, que permite al usuario acceder a un
catálogo de servicios estandarizados y responder a las
necesidades de su negocio, de forma flexible y adaptativa, en
caso de demandas no previsibles o de picos de trabajo,
pagando únicamente por el consumo efectuado
Commit: En el contexto de la Ciencia de la computación y la
gestión de datos, commit (acción de cometer) se refiere a la
idea de consignar un conjunto de cambios "tentativos, o no
permanentes". Un uso popular es al final de una transacción de
base de datos.
CouchDB: Base de datos documental sin schema, consultable
al estilo MapReduce, accesible por REST y con una
funcionalidad de replicación integrada.
Dynamo: Es una base de datos NoSQL propietaria y de
código cerrado, por lo que su uso es exclusivo de la empresa
que la implementó: Amazon.
Facebook: Facebook es un sitio web de redes sociales creado
por Mark Zuckerberg y fundado por Eduardo Saverin, Chris
Hughes, Dustin Moskovitz y Mark Zuckerberg. Originalmente
era un sitio para estudiantes de la Universidad Harvard, pero
actualmente está abierto a cualquier persona que tenga una
cuenta de correo electrónico. Los usuarios pueden participar
en una o más redes sociales, en relación con su situación
académica, su lugar de trabajo o región geográfica.
Google: Google Inc. es la empresa propietaria de la marca
Google, cuyo principal producto es el motor de búsqueda del
mismo nombre. Dicho motor es resultado de la tesis doctoral
de Larry Page y Sergey Brin (dos estudiantes de doctorado en
Ciencias de la Computación de la Universidad de Stanford)
para mejorar las búsquedas en Internet
Linkedin: Es un sitio web orientado a negocios, fue fundado
en diciembre de 2002 y lanzado en mayo de 2003[1]
(comparable a un servicio de red social), principalmente para
red profesional.
Mercado Libre: Es la tienda on line más grande de
Latinoamérica donde millones de personas se encuentran para
comprar y vender sus artículos cada día.
MongoDB: Es una base de datos NoSQL. Abandona el
enfoque relacional por bases de datos mas orientadas a objetos
y de esta manera es como se procesa la información.
Rollback: En tecnologías de base de datos, un rollback es una
operación que devuelve a la base de datos a algún estado
previo. Los Rollbacks son importantes para la integridad de la
base de datos, a causa de que significan que la base de datos
puede ser restaurada a una copia limpia incluso después de que
se han realizado operaciones erróneas. Son cruciales para la
recuperación de crashes de un servidor de base de datos;
realizando rollback(devuelto) cualquier transacción que
estuviera activa en el tiempo del crash, la base de datos es
restaurada a un estado consistente.
Tiempo de Respuesta: El tiempo de respuesta se define como
el tiempo que pasa desde que se envía una comunicación y se
recibe la respuesta.
Transaccion: Una transacción es una interacción con una
estructura de datos compleja, compuesta por varios procesos
que se han de aplicar uno después del otro. La transacción
debe ser equivalente a una interacción atómica. Es decir, que
se realice de una sola vez y que la estructura a medio
manipular no sea jamás alcanzable por el resto del sistema
hasta que haya finalizado todos sus procesos.
Twitter: Es una red social basada en el microblogging. La red
permite mandar mensajes de texto plano de bajo tamaño con
un máximo de 140 caracteres, llamados tweets, que se
muestran en la página principal del usuario. Los usuarios
pueden suscribirse a los tweets de otros usuarios – a esto se le
llama "seguir" y a los suscriptores se les llaman
"seguidores"[11] o tweeps.
Yahoo: Yahoo! Inc. es una empresa global de medios con
sede en Estados Unidos, cuya misión es "ser el servicio global
de Internet más esencial para consumidores y negocios". Posee
un portal de Internet, un directorio web y una serie de
servicios, incluido el popular correo electrónico Yahoo!.
Descargar