I am interested in understanding how the social networking sites like Facebook, Twitter, Google+ maintain their databases. In which format the data is stored in their database. I am completely new in this field and any description would be beneficial.
For Social networking sites. you can use Neo4j Graph DataBase. realiable for any social networking sites. i prefer for you bcz i used that.
Related
I need to implement such functionality, that can allow to manage vk.com* entities (create posts, send messages, add new friends etc) form Salesforce side. Although vk.com provides rich API with good documentation, but I look for already developed solutions for Apex.
I checked AppExchange for it and googled popular solutions, but didn't find anything:( Are there any ready apex ways or have I to do it myself? Maybe I can use power of Salesforce Chatter?
I will be glad to any advice, suggestions!
*vk.com is social network, kind of Facebook, which has a much higher relevance than Facebook in Eastern Europe, especially Russia.
Our company is thinking about a mobile app (android, ios) that needs to comunicate with a backend sending "questions" and receiving "answers", based on a search in an ontology database.
I have some questions:
1)What is the state of the art in ontology database at the moment (both commercial or open source)?
2)In order to develop such a backend, what kind of server(software) is required?
3)Since this application is supposed to have thousands of users at a time (it is meant for public administration purposes), what kind of server (hardware) would be require? (distribuited server, load balanced, etc).
Thank you very much.
I am in process of designing a SaaS application over PaaS (Google App Engine).
My SaaS will have two user interfaces:
Web Based
Mobile App based
Web based would be feature-rich whereas Mobile app would have essential and/or frequently used features.
Mobile app would invoke RESTful services to perform business logic.
This SaaS would target mainly individuals using Mobile Apps; however, there could a use-case wherein these individuals could form a group and operate as a company.
So with that in mind, I am considering two entities: Account (Tenant) and User.
I am considering having many-to-many relationship between these two entities as one user could be part of multiple Accounts (unlikely but can’t be ruled out) and of course, one account can have multiple users.
I would like to know the best practices for authentication under such scenario:
Should I use Google's provided Authentication or should I implement my own authentication? (I am still exploring OAuth and Google's authentication offering.)
I think, for web-based interface, username/password over SSL would suffice. But, not sure, can this be applied to mobile app?
Can I avoid a situation wherein I have to store credentials in mobile app?
Thanks in advance for any help you can provide on this.
A
Having just completed my first project using Google App Engine, I can say that I ran into alot of the questions that you have. I'll try to explain my approach to each point and also approach it from your perspective as well.
Authentication - Generally using Google's auth would be the easiest route, but you would still have to implement a custom adaptation in order to work with the "company"/"group" concept. Implement in the datastore/whatever database you prefer to use an entity called "Groups" which have a list of google users... this way users can belong to many groups.. then you just search by property (user) to get all groups they belong to. I implemented my own authentication system for unrelated reasons.
Google App Engine comes with SSL/HTTPS support for its own domains. You can add in your own custom domain with SSL support as well. You can use SSL through native apps or mobile web apps additionally. I simply used the native support that came with it.
Yes and no. You will always have to store the credentials somewhere. Maybe it wont be in your apps code/directly connected to your app (Google auth would be an example). But somewhere, on your phone, the credentials WILL reside. They may be encrypted/obfuscated, but they will be there. So either have your user enter them in everytime, or save them/use the ones provided by the phone. For myself, .NET provided a nice way of storing credentials in a secure fashion (non-plain-text) for each user's machine.
I am writting social network.
I have group's blog and user's blog, then I have group's photos and user's photos
How I must design models? all posts(photos) in one db table or in different?
It is preferable to have a single table only for photos, especially if you have multiple photos for each group or user. You could use Single Table Inheritance or Polymorphic Associations to store photos from groups and users in it. I would recommend to read some good books about the topic, Practical Rails Social Networking Sites and RailsSpace: Building a Social Networking Website with Ruby on Rails. Both are recommendable.
Imagine you're writing a web app that will have 1 million users (they all grow that big, right!)
How would you handle user accounts? I can imagine a few scenarios:
Roll your own (database tables, salted/hashed passwords stored in a user profile table)
If written with ASP.NET, use the login/role provider (which falls back to the database)
Use Active Directory if in a Windows environment
Use some other LDAP server
A 3rd party provider like OpenID or .NET Passport
Stability and scalability are of course important.
I guess this is really a question of whether Active Directory and other LDAP servers scale well and easily. What do Facebook, Twitter and Gmail use as their backend account provider?
What got me thinking about this is the Google App Engine. Really cool looking. But users would need to get a Google Account if I used the built-in authentication stuff. Or with #5 above, users would need to go get an OpenID. I'm trying to make it so they can just do a simple sign up with my site without needing to visit other sites -- for the non-geeks of the world :)
I would ask someone who had actually worked on a system which caters for that many users.
I'd find out about other systems like this, and look at case studies that have been written about them. (Ask Microsoft, Oracle, IBM etc.).
But, for usability you either need to implement a single sign on solution, so users don't need to know their login details. (Perfect for the corporate world.)
or
You have to go with what users know, which is an email address/username, and password.
OpenID or similiar systems are horrible for non technical users.
(Note, anyone looking at this is a technical user.).
OpenID.
If you must give the users a choice to create an account on your site, become an OP.