Selamlar, Min 3 sene yaşayacak bir proje için bir Database seçmemiz gerekiyor. "Kervan yolda düzülür, herhangi bir şey ile başlayalım baktık işimizi grmüyor sonradan değiştiririz" şeklinde bir model muhtemelen çok kan kaybına sebep olur, sancılı günlere işaret eder bizim için. O yüzden en baştan en doğru olanı, en azından doğruya en yakın olanı seçmemiz hoş olur. CAP Theorem'den de haberdarım ama nasıl yorumlamam gerektiğinden pek emin olamadım. Kısaca işten bahsedecek olursam, araç takip sistemi gibi düşünülebilir. Hatta onun aynısı. Binlerce client, servera sürekli veri gnderecek. Sürekli bir yazma işlemi olacak yani. Daha az sayıda client da bu yazılanları okuma işi yapacak. Yine araç takip sistemindeki gibi, bazen anlık izleme olacak. Yani bir taraf yazarken diğer taraf okuyacak aynı veriyi. Byle bir sistem için hangi tür database, bu türler arasından da hangi database en uygun olur? Eğer o olmazsa ikinci sıraya hangisini yazarsınız? İlla NoSQL mi kullanmalı yoksa RDBMS işimizi grür mü? Azıcık detay ile birlikte cevap verilirse de harika olur. Şimdiden teşekkürler. Sen hiç kaval çaldın mı?

in-memory herhangi bir DB işini grür, aynı zamanda MQ kullanırsın ve nlerine Load balancer kurarsın canavar gibi çalışır. Mimariyi kurgularken sadece uygulama ve DB olmadığını bir çok aracınız olduğunu hatırlatmak isterim. daha nce yapmış olduğum bir lojistik firmasının projesini baz alarak nerdim. Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

3 yıllık logların tamamına aynı anda erişecek misiniz sürekli olarak? Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

Herkese yorumları için çok teşekkürler. Oldukça aydınlatıcı oldu, karar verirken burdan bayağı faydalanmış olacağız. Sen hiç kaval çaldın mı?

binlerce client aynı anda kendi lokasyon verisini gnderecekse ve sen de hepsini saklamak zorundaysan in-memory db kullanabilmen için güzel memory'si olan bir server kullanman gerekiyor. eğer belli bir süre sonra eski veriye ulaşmayacaksan hazelcast ile backed storage tarzı hibrit birşey yapabilirsin, hazelcast arka planda fazla ulaşılmayan veriyi gerçek bir veritabanına yazar . asıl nemli olan veriyi nasıl sorgulamak istediğin, analytic sorgular çalışacak mı, yoksa sadece bir client'ın son lokasyonuna mı ihtiyacın var, geolocation sorgularına ihtiyacın var mı, bütün veriye aynı anda ulaşmak gibi bir zorunluluk var mı, toplamda kaç tane client olmasını bekliyorsun gibi şeyler nemli. . . .. . ... .

Redis kullanabilirsin. RedisLabs'ın Redis Cloud ürününü kullanabilirsin. 30 MB kadar ücretsiz kullanabiliyorsun. https://redislabs.com/pricing İşini sağlam yapan bi' firma. Büyük firmalarla da çalışıyorlar, zaman zaman blog'unu ya da emaillerini takip ederim.

Bu tarz bir sistemde yazma sayisi onemli. Buna benzer data yapisi olan projelerde genelde Kafka + Cassandra kullaniyorum ben. Her projenin onunde cache amacli Redis oluyor. Kullanmasan bile kur Redis dursun diyecegim neredeyse o kadar seviyorum. Bunlarla ugrasmaya gerek bile olmayabilir tabii ki. Standart MYSQL-Postgre cozumleri %99'una uygun projelerin. Ama oncelikle bir data size hesapla istersen. Iste gunluk 10bin arac 10 saat 10 saniyede bir location alsak falan diye. Tahmini bir storage dusun cunku MYSQL falan kullanirsan table 2TB dan fazla tutmuyor. O yuzden hic ugrasmadan bu gruptan Postgre secebilirsin. Yazma islemleri icin bir broker koyman gerekecek sistemin onune. RabbitMQ su anda en hizli olani ve tek node ile 20bin msg / saniye rahat goruyor. Karsi tarafa db writer job'lari koyarsin gelen mesajlari yazar surekli db'ye. Bu arada gonderilen data bir objeyse standart JSON-XML yerine protobuf kullanmanizi oneririm. Bizim sistemlerde saniyede 30bin parse edilen JSON objeyi 100bine kadar artirmisti. https://github.com/eishay/jvm-serializers/wiki Redis-Hazelcast full db olarak kullanmak icin pek uygun degil, o kadar memory kullanilmayacak data icin gereksiz. Anlik in-memory data cache olarak kullanilabilir ama. En basit haliyle RabbitMQ ve Redis kurup sistemin onune gelen data mq'dan db ye aktarilir. Belli araliklarla job'lar hesaplamalar yapip datalari redis'e koyar. Erisimi de hep redis'ten yaparsin dataya ama hepsine ihtiyacim yok dersen request yapilan bir arac olunca onu rabbitmq'dan direk redis'e cache'lersin. Tum web servisler falan da redis'e bakar once eger key yoksa db'den access dener ilk sefer de ve 10 dakikalik otomatik cache'lemeye koyarsin. Storage icin postgre yerine cassandra olabilir. Bir goz at data yapisina uygunsa onu kullanabilirsin. Kafka Connector koyup cassandra'nin onune rabbitmq'yi de aradan cikartirsin boylece. http://thenewstack.io/building-streaming-data-hub-elasticsearch-kafka-cassandra/ bunun cok benzerini kullaniyoruz biz de. Logic olarak yakinligi falan inceleyip bir karar verebilirsin. Tabii ki projeyi bilen sizsiniz benimki cogu fikir. Havada kalan veya sisteme uymayan seyler de olabilir. Alakasiz olarak Redis ve RabbitMQ sunucular almak bana cok pahali geliyor. Aylik 150 euro'ya 256 GB ramli dedicated makineler var 3-5 tane. Bunlari sunucu olarak alsak milyonlar isteyecekler herhalde. edit: bu arada bunun gibi seylerle ilgilenen herkes mi penguen :D musdawdaf tarafından 07/Ağu/16 14:15 tarihinde düzenlenmiştir

@sandman Teşekkürler yorumlar için. Redis ya da Hazelcast uygun olabilir sanki bu bilgiler ışığında. @renegadealien Yok hocam, belirli periyotlarda rapor çekilir tabi ama, sürekli bir tüm veriye erişim diye bir senaryomuz yok, olması da kolay grünmüyor. Sen hiç kaval çaldın mı?

@ontedi, Sıra bize de gelecek yakındır :D Ama biz daha avantajlıyız şimdiden byle bi sorunla karşılaşacaksak cevabını zaten biliyoruz :) Bardağın dolu tarafı bu olsa gerek :D Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Şyle konulardaki neriler grünce imreniyorum. Byle büyük projelerin yapsı ile ilgili bilgi almak güzel oluyor. Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.

Herkese yorumları için çok teşekkürler. Oldukça aydınlatıcı oldu, karar verirken burdan bayağı faydalanmış olacağız. Byle bir konu açtığın için nce sana, sonra da başta musdawdaf adlı mürid olmak üzere grüş bildiren herkese çok teşekkür ederim.

redis güzel bir tercih ama yazmada performans sağlaman lazım bunun için rabbitmq neririm edit: inmemory db'den kastım mssql'in veya postgresql'in inmemory zellikleriydi sandman tarafından 07/Ağu/16 12:45 tarihinde düzenlenmiştir Mühendis kahveyi projeye dnüştüren bir insan evladıdır.