GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Yardım Talepleri => Konuyu başlatan: doqu10 - 02 Mayıs 2025, 02:29:22

Başlık: Mysql Orm
Gönderen: doqu10 - 02 Mayıs 2025, 02:29:22
Arkadaşlar mysql r33 versiyonunda orm diye bir şey gelmiş bir video izledim ve kaynaktan okudum ama tam anlayamadım. Sql komutlarını kullanmadan veri çekip kaydetmeye yarıyor galiba. Bu konu hakkında bilgisi olan arkadaş varsa yardımcı olabilir mi? Ayrıca bu daha hızlı ve kolay bir yöntem mi acaba?
Başlık: Ynt: Mysql Orm
Gönderen: Krips Je - 02 Mayıs 2025, 03:15:30
MySQL R33 sürümünde gelen ORM desteği sql sorgularını manuel yazmadan veri çekme ve kaydetme işlemlerini kolaylaştıran bir yapıdır. ORM nesne yönelimli programlama mantığıyla veri tabanındaki tabloları doğrudan kod tarafında nesneler gibi kullanmanıza olanak tanır. Yani dostum veritabanı işlemlerini SQL yazmadan, fonksiyonlar aracılığıyla gerçekleştirebilirsin. Bu hem kodun okunabilirliğini artırır hem de hata riskini azaltır. Elbette doğru kullanıldığında daha hızlı ve pratik sonuçlar elde edilebilir. Ancak öğrenme aşamasında yapıyı iyi kavramak önemlidir.
Başlık: Ynt: Mysql Orm
Gönderen: Krips Je - 02 Mayıs 2025, 03:18:13
Ek;

PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS][orm_Player];

public OnGameModeInit()
{
    orm_Player = orm_create("players");
    orm_addvar_string(orm_Player, PlayerInfo[][pName], 24, "name");
    orm_addvar_int(orm_Player, PlayerInfo[][pScore], "score");
    return 1;
}

public OnPlayerConnect(playerid)
{
    format(PlayerInfo[playerid][pName], 24, "Player_%d", playerid);
    PlayerInfo[playerid][pScore] = 0;
    orm_insert(orm_Player, playerid);
    return 1;
}

Bu örnekte players tablosuna oyuncu adı ve skoru ekleniyor. SQL sorgusu yazmadan ORM ile veri işleniyor. Gerçek projede tablonun önceden oluşturulmuş olması gerekir bu sadece bir örnek dediğim gibi.
Başlık: Ynt: Mysql Orm
Gönderen: Backup - 02 Mayıs 2025, 09:03:03
Benim yaptığım testlerde dump işlemlerde oldukça yavaş olduğu, bellek yönetimi konusunda da başarılı olmadığı sonucuna varmıştım. MySQL konfigürasyonları oldukça iyi olduğu halde istenilen verimi alamamıştım. Belki yeni bir versiyon gelmiştir düzeltmişlerdir ama zannetmiyorum. Cache den devam etmek daha isabetli olur.
Başlık: Ynt: Mysql Orm
Gönderen: doqu10 - 02 Mayıs 2025, 12:19:10
Alıntı yapılan: Krips Je - 02 Mayıs 2025, 03:18:13
Ek;

PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS][orm_Player];

public OnGameModeInit()
{
    orm_Player = orm_create("players");
    orm_addvar_string(orm_Player, PlayerInfo[][pName], 24, "name");
    orm_addvar_int(orm_Player, PlayerInfo[][pScore], "score");
    return 1;
}

public OnPlayerConnect(playerid)
{
    format(PlayerInfo[playerid][pName], 24, "Player_%d", playerid);
    PlayerInfo[playerid][pScore] = 0;
    orm_insert(orm_Player, playerid);
    return 1;
}

Bu örnekte players tablosuna oyuncu adı ve skoru ekleniyor. SQL sorgusu yazmadan ORM ile veri işleniyor. Gerçek projede tablonun önceden oluşturulmuş olması gerekir bu sadece bir örnek dediğim gibi.
Hocam Türkçe anlatımlı kaynak var mı acaba elinizde?
Başlık: Ynt: Mysql Orm
Gönderen: doqu10 - 02 Mayıs 2025, 12:21:15
Alıntı yapılan: Backup - 02 Mayıs 2025, 09:03:03
Benim yaptığım testlerde dump işlemlerde oldukça yavaş olduğu, bellek yönetimi konusunda da başarılı olmadığı sonucuna varmıştım. MySQL konfigürasyonları oldukça iyi olduğu halde istenilen verimi alamamıştım. Belki yeni bir versiyon gelmiştir düzeltmişlerdir ama zannetmiyorum. Cache den devam etmek daha isabetli olur.
Galiba cache daha iyi hocam bu orm yazılış şeklini de tam olarak anlayamadım
Başlık: Ynt: Mysql Orm
Gönderen: Krips Je - 02 Mayıs 2025, 13:47:43
Alıntı yapılan: doqu10 - 02 Mayıs 2025, 12:19:10
Alıntı yapılan: Krips Je - 02 Mayıs 2025, 03:18:13
Ek;

PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS][orm_Player];

public OnGameModeInit()
{
    orm_Player = orm_create("players");
    orm_addvar_string(orm_Player, PlayerInfo[][pName], 24, "name");
    orm_addvar_int(orm_Player, PlayerInfo[][pScore], "score");
    return 1;
}

public OnPlayerConnect(playerid)
{
    format(PlayerInfo[playerid][pName], 24, "Player_%d", playerid);
    PlayerInfo[playerid][pScore] = 0;
    orm_insert(orm_Player, playerid);
    return 1;
}

Bu örnekte players tablosuna oyuncu adı ve skoru ekleniyor. SQL sorgusu yazmadan ORM ile veri işleniyor. Gerçek projede tablonun önceden oluşturulmuş olması gerekir bu sadece bir örnek dediğim gibi.
Hocam Türkçe anlatımlı kaynak var mı acaba elinizde?

Maalesef elimde tam anlamıyla kapsamlı bir Türkçe kaynak yok ama bazı konuları parça parça öğrenmiştim, yine de bulduğum notları veya açıklayıcı örnekleri toparlayıp paylaşabilirim. İstersen İngilizce kaynaklardan da birkaç tane önerebilirim, anlamada sorun olmazsa çok daha detaylı anlatımlar var.
Başlık: Ynt: Mysql Orm
Gönderen: Backup - 02 Mayıs 2025, 14:13:49
Alıntı yapılan: doqu10 - 02 Mayıs 2025, 12:21:15
Alıntı yapılan: Backup - 02 Mayıs 2025, 09:03:03
Benim yaptığım testlerde dump işlemlerde oldukça yavaş olduğu, bellek yönetimi konusunda da başarılı olmadığı sonucuna varmıştım. MySQL konfigürasyonları oldukça iyi olduğu halde istenilen verimi alamamıştım. Belki yeni bir versiyon gelmiştir düzeltmişlerdir ama zannetmiyorum. Cache den devam etmek daha isabetli olur.
Galiba cache daha iyi hocam bu orm yazılış şeklini de tam olarak anlayamadım

Object oriented mantığında geliştirilmiş bir şey ama tam olarak efektif kullanılamıyor. Laravel'in seeder ve model yapısı mantığında düşünebilirsiniz.
Başlık: Ynt: Mysql Orm
Gönderen: doqu10 - 02 Mayıs 2025, 14:18:57
Alıntı yapılan: Krips Je - 02 Mayıs 2025, 13:47:43
Alıntı yapılan: doqu10 - 02 Mayıs 2025, 12:19:10
Alıntı yapılan: Krips Je - 02 Mayıs 2025, 03:18:13
Ek;

PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS][orm_Player];

public OnGameModeInit()
{
    orm_Player = orm_create("players");
    orm_addvar_string(orm_Player, PlayerInfo[][pName], 24, "name");
    orm_addvar_int(orm_Player, PlayerInfo[][pScore], "score");
    return 1;
}

public OnPlayerConnect(playerid)
{
    format(PlayerInfo[playerid][pName], 24, "Player_%d", playerid);
    PlayerInfo[playerid][pScore] = 0;
    orm_insert(orm_Player, playerid);
    return 1;
}

Bu örnekte players tablosuna oyuncu adı ve skoru ekleniyor. SQL sorgusu yazmadan ORM ile veri işleniyor. Gerçek projede tablonun önceden oluşturulmuş olması gerekir bu sadece bir örnek dediğim gibi.
Hocam Türkçe anlatımlı kaynak var mı acaba elinizde?

Maalesef elimde tam anlamıyla kapsamlı bir Türkçe kaynak yok ama bazı konuları parça parça öğrenmiştim, yine de bulduğum notları veya açıklayıcı örnekleri toparlayıp paylaşabilirim. İstersen İngilizce kaynaklardan da birkaç tane önerebilirim, anlamada sorun olmazsa çok daha detaylı anlatımlar var.
Hocam zahmet olmazsa çok memnun olurum. Biraz zorlanabilirim de inceledikçe anlarım diye düşünüyorum
Başlık: Ynt: Mysql Orm
Gönderen: doqu10 - 02 Mayıs 2025, 14:20:03
Alıntı yapılan: Backup - 02 Mayıs 2025, 14:13:49
Alıntı yapılan: doqu10 - 02 Mayıs 2025, 12:21:15
Alıntı yapılan: Backup - 02 Mayıs 2025, 09:03:03
Benim yaptığım testlerde dump işlemlerde oldukça yavaş olduğu, bellek yönetimi konusunda da başarılı olmadığı sonucuna varmıştım. MySQL konfigürasyonları oldukça iyi olduğu halde istenilen verimi alamamıştım. Belki yeni bir versiyon gelmiştir düzeltmişlerdir ama zannetmiyorum. Cache den devam etmek daha isabetli olur.
Galiba cache daha iyi hocam bu orm yazılış şeklini de tam olarak anlayamadım

Object oriented mantığında geliştirilmiş bir şey ama tam olarak efektif kullanılamıyor. Laravel'in seeder ve model yapısı mantığında düşünebilirsiniz.
Anladım hocam çok teşekkürler
Başlık: Ynt: Mysql Orm
Gönderen: Krips Je - 02 Mayıs 2025, 14:39:23
Alıntı yapılan: doqu10 - 02 Mayıs 2025, 14:18:57
Alıntı yapılan: Krips Je - 02 Mayıs 2025, 13:47:43
Alıntı yapılan: doqu10 - 02 Mayıs 2025, 12:19:10
Alıntı yapılan: Krips Je - 02 Mayıs 2025, 03:18:13
Ek;

PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS][orm_Player];

public OnGameModeInit()
{
    orm_Player = orm_create("players");
    orm_addvar_string(orm_Player, PlayerInfo[][pName], 24, "name");
    orm_addvar_int(orm_Player, PlayerInfo[][pScore], "score");
    return 1;
}

public OnPlayerConnect(playerid)
{
    format(PlayerInfo[playerid][pName], 24, "Player_%d", playerid);
    PlayerInfo[playerid][pScore] = 0;
    orm_insert(orm_Player, playerid);
    return 1;
}

Bu örnekte players tablosuna oyuncu adı ve skoru ekleniyor. SQL sorgusu yazmadan ORM ile veri işleniyor. Gerçek projede tablonun önceden oluşturulmuş olması gerekir bu sadece bir örnek dediğim gibi.
Hocam Türkçe anlatımlı kaynak var mı acaba elinizde?

Maalesef elimde tam anlamıyla kapsamlı bir Türkçe kaynak yok ama bazı konuları parça parça öğrenmiştim, yine de bulduğum notları veya açıklayıcı örnekleri toparlayıp paylaşabilirim. İstersen İngilizce kaynaklardan da birkaç tane önerebilirim, anlamada sorun olmazsa çok daha detaylı anlatımlar var.
Hocam zahmet olmazsa çok memnun olurum. Biraz zorlanabilirim de inceledikçe anlarım diye düşünüyorum


Güncel ve detaylı anlatım için aşağıdaki İngilizce kaynaklar oldukça faydalı, ORM yapısını anlamak ve kullanmak için.

1. https://github.com/pBlueG/SA-MP-MySQL
2. https://sampforum.blast.hk/showthread.php?tid=461766
3. https://github.com/pBlueG/SA-MP-MySQL/blob/master/example_scripts/login_system-orm.pwn

İçlerinde örnek kodlar ve açıklamalar yer alıyor. Anlamadığınız bir kısım olursa yardımcı olurum :)