User Tag List

Página 1 de 2 1 2 ÚltimoÚltimo
Resultados 1 al 20 de 22

Tema: ¿La mejor manera de escalar una BD?

  1. #1

    ¿La mejor manera de escalar una BD?

    Buenas!!
    Tengo en pleno desarrollo una aplicación Web que básicamente lleva control de stock de mercadería.
    Funciona todo correcto, la duda que tengo es si será mejor realizar una Base de datos y que allí estén todos los productos (por supuesto, que al listarlos los filtro según el ID de cliente), o tener una Base de datos para cada cliente. Supongo esto último no me permitiría escalar mucho a largo plazo, pero no se.

    Tengan en cuenta que es una Aplicación Web, por lo que tendría que ver la manera de que según el usuario logeado cambien las credenciales para acceder a dicha BD.

    ¿Sugerencias?

  2. #2
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    A que te referis con "escalar"?

    Desde ya te digo que una base para cada cliente es buscar problemas, sobretodo si en algun momento vas a querer consolidar la info.
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  3. #3
    Cita Iniciado por Master of the Wind Ver mensaje
    A que te referis con "escalar"?
    Me refería a si el día de mañana aumentan los clientes, si sería conveniente seguir cargando y cargando una misma BD con artículos de todos ellos.
    Si, ya se, eso no tiene que ver con escalar jajaja

    Cita Iniciado por Master of the Wind Ver mensaje
    Desde ya te digo que una base para cada cliente es buscar problemas, sobretodo si en algun momento vas a querer consolidar la info.
    Lo tendré en cuenta.

  4. #4
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Eso no te tiene que preocupar. Si vos dividis en varias bases, tenes que hacer que sean federadas (o sea, que esten configuradas para sacar info de varias bases de datos en una query, por ejemplo), y eso es complicado a veces, da mucha carga, y no todos los motores lo soportan (mysql por ejemplo, no).

    Lo que tiene que preocuparte es la respuesta de esa base.

    Si tenes 10000000 de personas, tenes ese numero y punto. Hay pocas cosas de diseño que puedas hacer para mejorar ahi.

    Lo que si, pagina las consultas (en vez de tirar un select * que te traiga todo eso, traete de 10 en 10, y eso mostras en la pagina), agrega indices, por ejemplo, si usas mysql ajusta los buffers de innodb, cachea las queries desde la aplicacion con redis o memcached, replica en varios servers para balancear lectura/escritura.

    Hay un lote de cosas que podes hacer ahi.
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  5. #5
    Cita Iniciado por Master of the Wind Ver mensaje
    Eso no te tiene que preocupar. Si vos dividis en varias bases, tenes que hacer que sean federadas (o sea, que esten configuradas para sacar info de varias bases de datos en una query, por ejemplo), y eso es complicado a veces, da mucha carga, y no todos los motores lo soportan (mysql por ejemplo, no).

    Lo que tiene que preocuparte es la respuesta de esa base.

    Si tenes 10000000 de personas, tenes ese numero y punto. Hay pocas cosas de diseño que puedas hacer para mejorar ahi.

    Lo que si, pagina las consultas (en vez de tirar un select * que te traiga todo eso, traete de 10 en 10, y eso mostras en la pagina), agrega indices, por ejemplo, si usas mysql ajusta los buffers de innodb, cachea las queries desde la aplicacion con redis o memcached, replica en varios servers para balancear lectura/escritura.

    Hay un lote de cosas que podes hacer ahi.
    Tenía la preocupación de cantidad de registros que se podrían almacenar, pero por lo que me decís no me preocupo entonces. De todas maneras una vez arranque a vender iré ampliando servidores.

    Ya tengo casi todo pronto para usar una BD sola, asíque sigo por ese cmaino entonces.

  6. #6
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Lo otro que podes hacer si tenes grandes cantidades de datos, es particionar las tablas. Por ejemplo, los registros mas consultados, mas nuevos, o con ultima fecha de ingreso en una columna (todos criterios creables por el administrador) los guardas en un storage rapido como una bala (SSD, o RAID de SSDs), y los menos consultados los guardas en un storage menos rapido, como un disco mecanico.


    Igual, eso te sirve si pasas los millones de registros es una tabla recien.

    Tambien te conviene evaluar si todas tus tablas van a ser relacionales, o podes hacer cosas con NoSQL.
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  7. #7
    Moderador Global Avatar de Thalios
    Fecha de ingreso
    Aug 2013
    Ubicación
    Valencia, España
    Steam
    Baldonacho
    Origin
    Thalios_uy
    PSN
    Thalios_uy
    Mensajes
    6,039
    igual creo que lo que quiere hacer no esta muy bien.


    Entiendo que lo que quiere hacer es tener una tabla productos por ejemplo que sea asi:

    Id Producto precio cliente
    1 Harina 000 34 Tata
    2 Harina 000 36 Disco
    3 Jamon 50 Devoto
    4 arroz 45 alto sur


    Entonces cuando entre tata y vaya a ver los productos que tiene cargados, le traiga la harina 000 a 34. Pero si el que entra a ver sus productos es el disco, lo muestre a 36


    Vos decis que es una buena práctica eso? por mas que sea un saas no se debería separar los datos? pregunto porqee no lo se, pero sobre todo por seguridad por ejemplo
    No tengo

  8. #8
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Yo lo que le entendi era una base de datos directamente para cada cliente, no una tabla. Que igual, una tabla por cada cliente tambien es una chanchada, sobretodo porque si tenes mañana 300.000 clientes, tene 300.000 tablas es un desporoposito, las tablas estan hechas para tener mucha informacion. Si tenes diferencia las reflejas en el contenido, no en otra otra tabla.


    Si es como vos decis, problemas de seguridad no tendria, pero si de integridad. Tendria que normalizar esa tabla y partirla en 3: cliente, producto y una relacion tiene, con el precio asignado en la relacion.
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  9. #9
    Cita Iniciado por Thalios Ver mensaje
    igual creo que lo que quiere hacer no esta muy bien.


    Entiendo que lo que quiere hacer es tener una tabla productos por ejemplo que sea asi:

    Id Producto precio cliente
    1 Harina 000 34 Tata
    2 Harina 000 36 Disco
    3 Jamon 50 Devoto
    4 arroz 45 alto sur


    Entonces cuando entre tata y vaya a ver los productos que tiene cargados, le traiga la harina 000 a 34. Pero si el que entra a ver sus productos es el disco, lo muestre a 36
    Exactamente eso, ojalá con esos clientes jajaja, pero si, esa es la idea general.

    Cita Iniciado por Master of the Wind Ver mensaje
    Yo lo que le entendi era una base de datos directamente para cada cliente, no una tabla. Que igual, una tabla por cada cliente tambien es una chanchada, sobretodo porque si tenes mañana 300.000 clientes, tene 300.000 tablas es un desporoposito, las tablas estan hechas para tener mucha informacion. Si tenes diferencia las reflejas en el contenido, no en otra otra tabla.

    Si es como vos decis, problemas de seguridad no tendria, pero si de integridad. Tendria que normalizar esa tabla y partirla en 3: cliente, producto y una relacion tiene, con el precio asignado en la relacion.
    Claro, una alternativa era una BD por cada cliente, pero de ser así, algún cambio, por ejemplo, en el nombre de una columna, ya no sería muy práctico que digamos hacerlo en todas las BD.

    No se me ocurre un método alternativo entre una manera y la otra.

  10. #10
    Moderador Global Avatar de Thalios
    Fecha de ingreso
    Aug 2013
    Ubicación
    Valencia, España
    Steam
    Baldonacho
    Origin
    Thalios_uy
    PSN
    Thalios_uy
    Mensajes
    6,039
    Cita Iniciado por Master of the Wind Ver mensaje
    Yo lo que le entendi era una base de datos directamente para cada cliente, no una tabla. Que igual, una tabla por cada cliente tambien es una chanchada, sobretodo porque si tenes mañana 300.000 clientes, tene 300.000 tablas es un desporoposito, las tablas estan hechas para tener mucha informacion. Si tenes diferencia las reflejas en el contenido, no en otra otra tabla.


    Si es como vos decis, problemas de seguridad no tendria, pero si de integridad. Tendria que normalizar esa tabla y partirla en 3: cliente, producto y una relacion tiene, con el precio asignado en la relacion.

    Si si, me referia asi a lo bruto, sin normalizar ni nada para efectos de practicidad nomas
    No tengo

  11. #11
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Igual te digo, y no es porque te quiera a tirar abajo. Con la mayoria de las bases de datos de aplicaciones para Uruguayos, nunca vas a tener el problema de tener que particionar, dividir, escalar aca o escalar alla.

    Salvo que me digas que es para Tienda inglesa, devoto, tata o algo asi.
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  12. #12
    Cita Iniciado por Master of the Wind Ver mensaje
    Igual te digo, y no es porque te quiera a tirar abajo. Con la mayoria de las bases de datos de aplicaciones para Uruguayos, nunca vas a tener el problema de tener que particionar, dividir, escalar aca o escalar alla.

    Salvo que me digas que es para Tienda inglesa, devoto, tata o algo asi.
    Ah no no, es apuntado a comercios chicos y medianos. No porque no quiera apuntar a lo grande, si no porque ellos ya tienen empresas contra las cuales de momento no puedo competir.

  13. #13
    Avatar de el_cami90
    Fecha de ingreso
    Sep 2013
    PSN
    peekabooUy
    Mensajes
    263
    Puede ser que a lo que te estes refiriendo sea al concepto de multi-tenancy?

    Hace un tiempo tuve un proyecto donde el software era el mismo para cada cliente, pero cada uno con su BD y cada uno entraba por su dominio. Hay distintos tipos de multi-tenancy y cada una se adapta a diferentes necesidades

  14. #14
    Moderador Global Avatar de Thalios
    Fecha de ingreso
    Aug 2013
    Ubicación
    Valencia, España
    Steam
    Baldonacho
    Origin
    Thalios_uy
    PSN
    Thalios_uy
    Mensajes
    6,039
    Por poner un ejemplo choto, en Travel Leaders usabamos Rackspace (webmails para las franquicias).

    Si tirabamos la consulta select * from webmailaccounts (totalmente simplificado para el ejemplo siga siendo choto)

    Nos traia todos nuestros webmails y los datos que estaban en esa tabla.


    Si entraba con el usuario de vacation.com (eraadmin de ambos) y tiraba la misma query, me traía todos los datos de las cuentas de vacation.com





    Vos decis que si un admin tira la misma query está bien que le traiga los datos de travel leaders y de vacation.com con una columna mas especificando de qué cliente es?


    O tiene que estar más segmentado eso? es pregunta posta, no tengo claro cómo manejar algo así, siempre que arme tablas era un cliente único y no me enfrente con ese tema.
    No tengo

  15. #15
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Cita Iniciado por el_cami90 Ver mensaje
    Puede ser que a lo que te estes refiriendo sea al concepto de multi-tenancy?

    Hace un tiempo tuve un proyecto donde el software era el mismo para cada cliente, pero cada uno con su BD y cada uno entraba por su dominio. Hay distintos tipos de multi-tenancy y cada una se adapta a diferentes necesidades

    Creo que el lo quiere mas para su lado y no para que cada cliente entre, por eso no se me ocurrio eso, si asi fuera, seria ideal eso entonces.


    Cita Iniciado por Thalios Ver mensaje
    Por poner un ejemplo choto, en Travel Leaders usabamos Rackspace (webmails para las franquicias).

    Si tirabamos la consulta select * from webmailaccounts (totalmente simplificado para el ejemplo siga siendo choto)

    Nos traia todos nuestros webmails y los datos que estaban en esa tabla.


    Si entraba con el usuario de vacation.com (eraadmin de ambos) y tiraba la misma query, me traía todos los datos de las cuentas de vacation.com





    Vos decis que si un admin tira la misma query está bien que le traiga los datos de travel leaders y de vacation.com con una columna mas especificando de qué cliente es?


    O tiene que estar más segmentado eso? es pregunta posta, no tengo claro cómo manejar algo así, siempre que arme tablas era un cliente único y no me enfrente con ese tema.
    Ahi estas hablando de SQL puro o consulta mediante un panel web?
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  16. #16
    Moderador Global Avatar de Thalios
    Fecha de ingreso
    Aug 2013
    Ubicación
    Valencia, España
    Steam
    Baldonacho
    Origin
    Thalios_uy
    PSN
    Thalios_uy
    Mensajes
    6,039
    En mi caso teniamos acceso a sql que nos disponibilizaba RS, pero así sea por panel web, siempre pensé que se debía separar la info, puedo tener el concepto mal claramente
    No tengo

  17. #17
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Pueden ser muchas cosas entonces, por ejemplo, podes poner un Proxy SQL entre medio y en base a credenciales parametrizar las queries. Tambien hay wrappers y middlewares para bases de datos cuando tenes cosas como particiones, federacion o requerimientos de seguridad complejos de todos colores y tipo.

    En general, siempre depende de la escala que estes hablando, y de la forma de acceder a la info.

    Si es muy grande, y tenes un set de datos complejo, pero a su vez ese set de datos no se va a cruzar entre si con otra info recurrentemente, y podes separarlo tranquilamente, pero tambien porque puede pasar al momento de generarlo sea una infra/procesos/contenedores aparte tambien.

    Ya son puntos que dependen mucho de la arquitectura del software, de servicios y los requerimientos de ingenieria. No hay receta, tenes mil formas de hacerlo.
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  18. #18
    Cita Iniciado por el_cami90 Ver mensaje
    Puede ser que a lo que te estes refiriendo sea al concepto de multi-tenancy?


    Hace un tiempo tuve un proyecto donde el software era el mismo para cada cliente, pero cada uno con su BD y cada uno entraba por su dominio. Hay distintos tipos de multi-tenancy y cada una se adapta a diferentes necesidades
    Seguramente me sirva si, de todas maneras para no complicarme tanto de entrada voy a hacer todo en una sola BD, después el tiempo lo dirá.


    Cita Iniciado por Thalios Ver mensaje
    Por poner un ejemplo choto, en Travel Leaders usabamos Rackspace (webmails para las franquicias).


    Si tirabamos la consulta select * from webmailaccounts (totalmente simplificado para el ejemplo siga siendo choto)


    Nos traia todos nuestros webmails y los datos que estaban en esa tabla.




    Si entraba con el usuario de vacation.com (eraadmin de ambos) y tiraba la misma query, me traía todos los datos de las cuentas de vacation.com




    Vos decis que si un admin tira la misma query está bien que le traiga los datos de travel leaders y de vacation.com con una columna mas especificando de qué cliente es?




    O tiene que estar más segmentado eso? es pregunta posta, no tengo claro cómo manejar algo así, siempre que arme tablas era un cliente único y no me enfrente con ese tema.

    Cita Iniciado por Master of the Wind Ver mensaje
    Pueden ser muchas cosas entonces, por ejemplo, podes poner un Proxy SQL entre medio y en base a credenciales parametrizar las queries. Tambien hay wrappers y middlewares para bases de datos cuando tenes cosas como particiones, federacion o requerimientos de seguridad complejos de todos colores y tipo.


    En general, siempre depende de la escala que estes hablando, y de la forma de acceder a la info.


    Si es muy grande, y tenes un set de datos complejo, pero a su vez ese set de datos no se va a cruzar entre si con otra info recurrentemente, y podes separarlo tranquilamente, pero tambien porque puede pasar al momento de generarlo sea una infra/procesos/contenedores aparte tambien.


    Ya son puntos que dependen mucho de la arquitectura del software, de servicios y los requerimientos de ingenieria. No hay receta, tenes mil formas de hacerlo.

    La idea es que cada cliente entre desde un mismo dominio: www.nombre-app.com y ahí hacen login, y las consultas SQL las filtros según un campo pertenece_a_empresa por decir algo. Por supuesto con tablas normalizadas, y las medidas de seguridad correspondientes. Laravel por suerte ayuda mucho en ese sentido.


    Al principio apuntaré a pocos clientes, por razones obvias. Con el tiempo iré ampliando. Porque si me pongo a ver ahora todo lo que le podría agregar se ma va a hacer eterno y no lanzo mas la App.

  19. #19
    El neandertal Avatar de Master of the Wind
    Fecha de ingreso
    Jul 2013
    Edad
    33
    Steam
    Master of the Wind
    Origin
    MasterOfTheWind1
    Xfire
    masterofthewind1
    Mensajes
    10,747
    Si necesitas un ingeniero DevOps o un SRE pega el grito (el pior era el tipo)
    // Desktop: Core i5 13600KF - 32GB DDR4@3600 Mhz (16 GB DDR4 Thermaltake Thoughram + 16 GB DDR4 TForce VulcanZ) - Asus Prime Z690-P D4 - EVGA RTX 3090 FTW3 Ultra 24GB GDDR6X - SSD M.2 Kingston 2TB x2 - SSD M.2 Kingston 1TB - Thermaltake GF1 850W - Cooler Master Masterliquid 240 - Cooler Master H500 - Asus Strix Soar - Windows 11 x64
    // Gear:
    Razer Blackwidow V3 Mini 65% Hyperspeed - Razer Deathadder V2 Pro - Red Dragon Suzaku XL - Sony Dual Sense + Xbox Series Controller + 8BitDo USB Receiver 2 - Razer Kraken
    // Display: Gigabyte M32U 32" 4K@144hz
    // Retro: Core i3 6100 3.7Ghz - 8GB DDR4@2133 Mhz - 128 GB SSD - 1TB HDD - AMD Radeon R5 340X 2GB GDDR3 - 8 Bitdo SF30 Pro - Sony Wega Trinitron 36" CRT + VGA to Component transcoder - Batocera Linux
    // Work: Macbook Pro 15" 2019 - Core i9 2.3 Ghz - 16 GB DDR4 - 512 GB SSD - Intel UHD Graphcis 630/AMD Radeon Pro 560X 4GB GDDR5
    // Server ITX: Antec ISK 300 - Gigabyte GA AB350N Gaming WIFI - AMD Ryzen 3 3200g - 32GB RAM DDR4 - 1TB NVME SSD
    // Console peasant: New Nintendo 3DS XL 128GB MicroSD - Xbox 360 Slim 120GB - Nintendo Wii 512GB MicroSD - Nintendo Switch 256GB MicroSD + RCMLoader
    // Console no peasant: Steam Deck - 256GB SSD - 1TB MicroSD

  20. #20
    Cita Iniciado por Master of the Wind Ver mensaje
    Si necesitas un ingeniero DevOps o un SRE pega el grito (el pior era el tipo)
    ¡Como no!, cuando tenga el presupuesto con gusto, jajaja

    Cita Iniciado por coderyoruga Ver mensaje
    Seguramente me sirva si, de todas maneras para no complicarme tanto de entrada voy a hacer todo en una sola BD, después el tiempo lo dirá.

    La idea es que cada cliente entre desde un mismo dominio: www.nombre-app.com y ahí hacen login, y las consultas SQL las filtros según un campo pertenece_a_empresa por decir algo. Por supuesto con tablas normalizadas, y las medidas de seguridad correspondientes. Laravel por suerte ayuda mucho en ese sentido.
    ¿La idea en general estaría bien?

Información de tema

Usuarios viendo este tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •